本章内容

1. web监控
2. zabbix被动模式
3. zabbix主动模式
4. zabbix自动发现
5. zabbix自动注册
6. zabbix-proxy配置

模拟登录之web监控

什么是web监控

zabbix除了能通过
脚本+自定义key,实现服务器数据提取监控以外
也支持对网页的HTTP请求、响应监控。

web监控需求

以zabbix-UI页面的登录监控,模拟登录,输入账号密码,实现首页的健康监控。
1. 模拟登录输入zabbix账号密码,登录后台,如果登录失败就报警
2. 基于响应状态码判断 非200即报警

配置步骤

抓取HTTP数据包

既然是模拟登录,先抓包,查看zabbix登录的数据提交,通过浏览器开发者模式抓包

image-20241003101644714

确认登录提交的数据是
Admin
zabbix

创建web监控模板

配置 > 模版 > 创建模版

image-20241003103646047

创建Web监测场景

image-20241003104057363

进入Web监测 > 点击右上角的“创建Web场景”

image-20241003135227149

出现报错,去填写步骤

image-20241003135417515

name        Admin
password    zabbix
autologin   1
enter       Sing in

image-20241003105851061

务必点击添加,否则失效。

创建结果

image-20241003135832645

image-20241003135900173

主机关联

主机关联

查看web检测数据

image-20241003140658097

针对web检测的触发器

如果检测网站挂了,出问题, 如何报警?触发器来了

根据HTTP状态码监控,更通用

image-20241003141935816

image-20241003142112434

模拟故障

image-20241003142447673

查看报警结果

image-20241003142549440

zabbix-agent修改主动模式

一个经典的面试问题
说说zabbix的主动模式、被动模式你了解多少。

zabbix-agent工作模式

zabbix-agent进程,有两种工作模式,主动模式,被动视频

被动模式

被动模式是指
zabbix-server 将需要请求的数据,发给zabbix-agent,然后agent接收到请求后才进行对客户端机器数据采集,采
集完毕后发给zabbix-server,交给zabbix-UI展示。
​
但是这个过程是一次一次完成的,也就是,有多少个监控项,就需要发起多少次请求,执行多少次脚本。
​
zabbix-server发起请求后,也同时在等待agent返回数据;
zabbix-agent接收请求的时候,也在响应、发送数据。
​
因此这种效率,机器数量一旦多了,被动模式的效率就彻底废了。

1749704-20231218153617127-1241149463

主动模式

主动模式下,由zabbix-agent主动给zabbix-server发请求,索要监控项的列表,然后agent将对应的数据一次性全部采集后发给zabbix-server。

明显agent主动发数据,效率要高得多,很适合监控项非常多,以及机器数量规模较大的场景。

1749704-20231218153623620-1257956694

zabbix-agent主动模式更改

只需要zabbix-agent的配置文件即可(记得删除注释)

[root@web-7 ~]#grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.71        # 被动模式的,链接zabbix-server
ServerActive=10.0.0.71  # 必须加这行(修改agent为主动模式),填入zabbix-server地址
Hostname=web-7          # 必须加这行,填入当前机器主机名
Include=/etc/zabbix/zabbix_agentd.d/*.conf
​
重启agent服务
systemctl restart zabbix-agent

注意agent配置文件的主机名,要和zabbix-UI中的主机名对上。

image-20241003145811137

zabbix-UI里修改监控项为主动模式

这里以更通用的内置 template os linux模板的监控项为案例

GIF 2024-10-03 16-25-01

zabbix自动发现

什么是zabbix自动发现

当需要监控的主机数量太多,你没办法一个个去web页面添加‘
因此zabbix可以基于网络环境,自动发现,添加主机且监控。

自动发现可以完成
1. 自动发现、添加主机
2. 添加主机且指定关联的模板

zabbix的自动发现可以基于
1. ip地址、或者ip网段
2. 来自于zabbix-agent的请求
3. 基于SNMP客户端的请求

自动发现有坑,如网络等待太久
以及自动发现无须修改zabbix_agent配置文件,官网也没有修改操作。

配置zabbix自动发现

配置 > 自动发现 > 创建发现规则

image-20241003183305975

添加新的自动发现规则

image-20241003184222212

这里的更新时间,基于测试的环境,可以短一点,方便调试
生产环境不宜太短,否则频繁检测,必然有额外的系统资源消耗。

image-20241003213548309

配置动作

配置 > 动作 > 创建动作。意选择,【自动发现】

image-20241003191044726

创建动作的条件

image-20241003191643741

image-20241003191724887

新加几个机器试试

部署脚本

#!/bin/bash
# 1.安装zabbix-agent,修改配置文件,填入zabbix-server即可

# 1.目标机器安装zabbix-agent 
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm

# 友情提醒,先做好时间同步!!
ntpdate -u ntp.aliyun.com

# 2.修改zabbix-agent配置文件
# 修改配置如下,保证和我一样即可,无须添加其他参数。
cat >/etc/zabbix/zabbix_agentd.conf <<'EOF'
PidFile=/var/run/zabbix/zabbix_agentd.pid 
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.71
Hostname=web-8
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EOF

# 3.启动agent
systemctl start zabbix-agent 
systemctl enable zabbix-agent
netstat -tunlp|grep zabbix

确认自动添加成功

[root@zabbix-server-71 ~]#for i in 8 9;do zabbix_get -s 10.0.0.$i -k agent.ping ;done
1
1
[root@zabbix-server-71 ~]#for i in 8 9;do zabbix_get -s 10.0.0.$i -k system.uname ;done
Linux web-8 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64
Linux web-9 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64
[root@zabbix-server-71 ~]#for i in 8 9;do zabbix_get -s 10.0.0.$i -k system.hostname ;done
web-8
web-9

一般要等待几分钟即可自动发现。

image-20241003214940856

查看zabbix-server日志

[root@zabbix-server-71 ~]#tail -f /var/log/zabbix/*

image-20241003215600462

坑记录,zabbix-server报警

image-20241003215925670

[root@zabbix-server-71 ~]#grep -E '^[a-Z]' /etc/zabbix/zabbix_server.conf 
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=www.haloyang.top
StartDiscoverers=50
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
UnavailableDelay=360
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

zabbix自动注册

什么是自动注册

前面于超老师带你学习了自动发现,也就是配置好一个网络环境后,zabbix-server主动去网络环境中扫描,然后发现目标机器然后监控,此时的agent是被动等待的。
那如果需要扫描多种网段,且机器数量很大的话,你的zabbix-server服务器可就很难受了。。。

因此自动注册,就是由zabbix-agent主动发起注册请求,你来监控我把!!!
极大的降低了zabbix-server的服务器压力。

配置自动注册

image-20241003220807829

填写详细信息,自动注册的规则

image-20241003221229762

image-20241003221235896

image-20241003230535739

修改zabbix-agent配置文件

删除zabbix里的web-9机器,测试下,能否自动注册,或者你重新装一个机器。

改为自动注册的配置文件,添加
1. ServerActive=填写zabbix-server地址
2. HostMetadata,填写元数据的关键词,也就是自动注册的条件

[root@cicd-99 ~]#cat  /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid 
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.71
ServerActive=10.0.0.71
HostMetadata=Linux
Include=/etc/zabbix/zabbix_agentd.d/*.conf

3.重启agent
systemctl restart zabbix-agent

利用shell简化操作

1. 在本机创建好配置文件
[root@zabbix-server-71 ~]#cat zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid 
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.71
ServerActive=10.0.0.71
HostMetadata=Linux
Include=/etc/zabbix/zabbix_agentd.d/*.conf

2. 远程发送到web-8、web-9机器
[root@zabbix-server-71 ~]#for i in 8 9;do scp zabbix_agentd.conf root@10.0.0.$i:/etc/zabbix/;done

3. 远程发送到web-8、web-9机器agent服务
[root@zabbix-server-71 ~]#for i in 8 9;do ssh root@10.0.0.$i "systemctl restart zabbix-agent";done

image-20241003224756769

image-20241003230738355

利用聚合图形查看自动注册的机器内存运行情况

image-20241003224955488

zabbix分布式proxy

为什么要学zabbix-proxy

官方文档
https://www.zabbix.com/documentation/4.0/zh/manual/distributed_monitoring/proxies

img

zabbix除了前面于超老师讲解的  zabbix-server  / zabbix-agent模式以外
​
还支持proxy分布式的功能
​
什么时候要用到?
​
zabbix proxy 使用场景:
​
监控远程区域设备
监控本地网络不稳定区域
当 zabbix 监控上千设备时,使用它来减轻 server 的压力
简化分布式监控的维护

zabbix-proxy工作流程

zabbix-proxy作用就是 临时存储数据,且转发,给zabbix-server,也就是采集的监控数据,中转站。
​
数据流走向就是
​
zabbix-agent  > zabbix-proxy > zabbix-server

img

zabbix-proxy部署

准备一个新机器,部署zabbix-proxy

# 1.安装源,修改原
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
​
sed -i 's#repo.zabbix.com#mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo
​
# 2.安装proxy和数据库
yum install zabbix-proxy-mysql mariadb-server -y
​
# 3.创建数据库账号
systemctl start mariadb.service
​
mysqladmin password yang1025
mysql -uroot -pyang1025
​
# 4.数据库创建、zabbix库以及mysql账号
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost identified by 'yang1025';
#数据库名称:zabbix_proxy,密码:yang1025
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;
​
# 4.1建议使用非交互式方法创建数据库、zabbix库以及mysql账号
mysql -uroot -pyang1025 -e "create database zabbix_proxy character set utf8 collate utf8_bin;"
​
mysql -uroot -pyang1025 -e "grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost identified by 'yang1025';"
​
mysql -uroot -pyang1025 -e "flush privileges;"
​
# 5. 导入zabbix-proxy的数据,这里需要注意mysql的版本。
zcat /usr/share/doc/zabbix-proxy-mysql-4.0.50/schema.sql.gz| mysql -uzabbix_proxy -pyang1025 zabbix_proxy
​
# 6.导入zabbix-proxy配置文件,记得删除中文注释。
​
cat > /etc/zabbix/zabbix_proxy.conf <<'EOF'
ProxyMode=0 # 代理模式,0 主动, 1 被动
Server=10.0.0.71    # 填入zabbix-server地址
ServerPort=10051    # 填入zabbix-server端口
Hostname=zabbix-proxy-81     # 填入主机名
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0 
PidFile=/var/run/zabbix/zabbix_proxy.pid 
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=yang1025
ConfigFrequency=60 # proxy多久和server同步配置信息
DataSenderFrequency=5 # proxy多久发送一次自己的数据给server
EOF
​
# 7.启动proxy
[root@zabbix-proxy-81 ~]#systemctl restart zabbix-proxy.service

设置agent指向zabbix_proxy

前置动作

  1. 关闭自动注册,自动发现等

  2. 删除现有的主机,查看基于zabbix-proxy模式的agent机器添加,数据采集

此时的部署模式,agent要和proxy机器通信了,修改配置文件
​
1. 填入zabbix-proxy地址
2. 修改agent为主动模式,主动给proxy发消息,然后proxy再发给server
​
cat > /etc/zabbix/zabbix_agentd.conf<<'EOF'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.81
ServerActive=10.0.0.81
HostMetadata=Linux
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EOF
​
3.重启
[root@db-51 ~]#systemctl restart zabbix-agent.service

一个一个配置太麻烦了,自己for循环批量给 we-7、we-8、we-9、master-61机器远程发送配置

[root@zabbix-server-71 ~]#cat zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.81
ServerActive=10.0.0.81
HostMetadata=Linux
Include=/etc/zabbix/zabbix_agentd.d/*.conf
​
#批量发送配置文件
[root@zabbix-server-71 ~]# for server in 7 8 9 61;do  scp zabbix_agentd.conf root@10.0.0.${server}:/etc/zabbix/ ; done
​
#批量重启
[root@zabbix-server-71 ~]# for server in 7 8 9 61;do ssh root@10.0.0.${server} "systemctl restart zabbix-agent" ; done

zabbix-UI设置代理服务器

到这里也就是配置zabbix-server了,设置zabbix-proxy

管理 > agent代理程序 > 创建代理

image-20241004104901587

具体代理配置

image-20241004105424006

打开zabbix-UI中的自动注册功能

配置 > 动作 > 自动注册 > 创建动作

image-20241004110248651

注意自动注册的条件。

image-20241004110202212

image-20241004110119380

查看zabbix-server是否拿到数据

通过proxy的模式

image-20241004110544590

image-20241004111024323