本章内容
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登录的数据提交,通过浏览器开发者模式抓包
确认登录提交的数据是
Admin
zabbix
创建web监控模板
配置 > 模版 > 创建模版
创建Web监测场景
进入Web监测 > 点击右上角的“创建Web场景”
出现报错,去填写步骤
name Admin
password zabbix
autologin 1
enter Sing in
务必点击添加,否则失效。
创建结果
主机关联
查看web检测数据
针对web检测的触发器
如果检测网站挂了,出问题, 如何报警?触发器来了
根据HTTP状态码监控,更通用
模拟故障
查看报警结果
zabbix-agent修改主动模式
一个经典的面试问题
说说zabbix的主动模式、被动模式你了解多少。
zabbix-agent工作模式
zabbix-agent进程,有两种工作模式,主动模式,被动视频
被动模式
被动模式是指
zabbix-server 将需要请求的数据,发给zabbix-agent,然后agent接收到请求后才进行对客户端机器数据采集,采
集完毕后发给zabbix-server,交给zabbix-UI展示。
但是这个过程是一次一次完成的,也就是,有多少个监控项,就需要发起多少次请求,执行多少次脚本。
zabbix-server发起请求后,也同时在等待agent返回数据;
zabbix-agent接收请求的时候,也在响应、发送数据。
因此这种效率,机器数量一旦多了,被动模式的效率就彻底废了。
主动模式
主动模式下,由zabbix-agent主动给zabbix-server发请求,索要监控项的列表,然后agent将对应的数据一次性全部采集后发给zabbix-server。
明显agent主动发数据,效率要高得多,很适合监控项非常多,以及机器数量规模较大的场景。
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中的主机名对上。
zabbix-UI里修改监控项为主动模式
这里以更通用的内置 template os linux模板的监控项为案例
zabbix自动发现
什么是zabbix自动发现
当需要监控的主机数量太多,你没办法一个个去web页面添加‘
因此zabbix可以基于网络环境,自动发现,添加主机且监控。
自动发现可以完成
1. 自动发现、添加主机
2. 添加主机且指定关联的模板
zabbix的自动发现可以基于
1. ip地址、或者ip网段
2. 来自于zabbix-agent的请求
3. 基于SNMP客户端的请求
自动发现有坑,如网络等待太久
以及自动发现无须修改zabbix_agent配置文件,官网也没有修改操作。
配置zabbix自动发现
配置 > 自动发现 > 创建发现规则
添加新的自动发现规则
这里的更新时间,基于测试的环境,可以短一点,方便调试
生产环境不宜太短,否则频繁检测,必然有额外的系统资源消耗。
配置动作
配置 > 动作 > 创建动作。意选择,【自动发现】
创建动作的条件
新加几个机器试试
部署脚本
#!/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
一般要等待几分钟即可自动发现。
查看zabbix-server日志
[root@zabbix-server-71 ~]#tail -f /var/log/zabbix/*
坑记录,zabbix-server报警
[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的服务器压力。
配置自动注册
填写详细信息,自动注册的规则
修改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
利用聚合图形查看自动注册的机器内存运行情况
zabbix分布式proxy
为什么要学zabbix-proxy
官方文档
https://www.zabbix.com/documentation/4.0/zh/manual/distributed_monitoring/proxies
zabbix除了前面于超老师讲解的 zabbix-server / zabbix-agent模式以外
还支持proxy分布式的功能
什么时候要用到?
zabbix proxy 使用场景:
监控远程区域设备
监控本地网络不稳定区域
当 zabbix 监控上千设备时,使用它来减轻 server 的压力
简化分布式监控的维护
zabbix-proxy工作流程
zabbix-proxy作用就是 临时存储数据,且转发,给zabbix-server,也就是采集的监控数据,中转站。
数据流走向就是
zabbix-agent > zabbix-proxy > zabbix-server
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
前置动作
关闭自动注册,自动发现等
删除现有的主机,查看基于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代理程序 > 创建代理
具体代理配置
打开zabbix-UI中的自动注册功能
配置 > 动作 > 自动注册 > 创建动作
注意自动注册的条件。
查看zabbix-server是否拿到数据
通过proxy的模式