很多时候工作中的需求无法使用模板来满足,所以需要自定义监控
监控相关概念
监控项:自定义的服务器主机信息
模板:多个监控项和触发器、图形的集合
动作:发送报警的信息
报警类型:邮件、微信、钉钉
触发器:参数阈值→报警提示
图形:可视化界面
报警媒介:报警的方式——邮件等
应用集:监控项的集合,是一个用来分类查看的属性
监控项类型
zabbix客户端(默认):服务器端从客户端使用get方法拉取数据,会增加服务器负担
zabbix客户端(主动模式):类似于Prometheus的Pushgateway,不会增加服务器负担。并且适用于在被防火墙或者安全规则限制的情况
简单检查:不需要客户端的检查,如监控ip
SNMP:监控网络设备,如交换机、路由器、防火墙等
JMX:监控java进程的资源指标
IPMI:监控硬件,风扇速度、电压、温度等
自定义监控——tcp状态探测
单状态监测
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| 1.尝试用脚本或者shell获取状态,并且返回值
netstat -ant | awk 'NR > 2 {print $6}' | sort | uniq -c 2 ESTABLISHED 5 LISTEN 40 TIME_WAIT
netstat -ant | awk 'NR > 2 {print $6}' | grep -i -c ${status} status=time_wait status=ESTABLISHED status=LISTEN
2.在agnet写一个子配置文件 UserParameter:允许用户自定义数据收集的命令
cat >/etc/zabbix/zabbix_agent2.d/tcp.conf<<EOF UserParameter=TIME_WAIT,netstat -ant | awk 'NR > 2 {print $6}' | grep -i -c time_wait UserParameter=ESTABLISHED,netstat -ant | awk 'NR > 2 {print $6}' | grep -i -c ESTABLISHED UserParameter=LISTEN,netstat -ant | awk 'NR > 2 {print $6}' | grep -i -c LISTEN EOF systemctl restart zabbix-agent2.service
3.在zabbix-server中测试调用这个值 yum -y install zabbix-get zabbix_get -s 192.168.10.172 -p 10050 -k ESTABLISHED 3 zabbix_get -s 192.168.10.172 -p 10050 -k TIME_WAIT 41
4.在web——主机——监控项——创建监控项 监控项名称tcp监控 将TIME_WAIT作为key添加 可以点测试进行验证
5.主机——图表——新建图表 将监控项tcp监控,作为监控项添加
6.在监测-主机-图形中查看图表
|

多状态监测
1 2 3 4 5 6 7
| 7.web中在agent主机添加另外两个监控项 分别涵盖LISTEN和ESTABLISHED TCP_LISTEN LISTEN TCP_ESTABLISHED ESTABLISHED
8.在图形"tcp监控中添加这几个监控项"
|


使用应用集
1 2 3 4 5
| 9.在配置-主机-应用集-创建应用集TCP状态
10.上面那三个配置项,归类到TCP状态应用集中
11.在监测-最新数据-应用集-TCP状态中可以查看到
|

使用触发器
1 2 3 4 5 6
| 12.在配置-主机-触发器-创建触发器中添加触发器 添加要检测的监控项与条件的表达式
13.此时在监测——仪表盘 监测——问题等界面都能看到这个告警
|


自定义监控——80端口状态探测
准备与创建配置项
1 2 3 4 5 6 7 8 9 10 11 12 13
| 1.agent节点搞个80端口模拟 yum -y install httpd systemctl start httpd
2.如何使用shell查看80端口状态 cat >/etc/zabbix/zabbix_agent2.d/nginx.conf<<EOF UserParameter=nginx_port,netstat -tunl | grep -wc 80 EOF systemctl restart zabbix-agent2.service zabbix_get -s 192.168.10.172 -p 10050 -k nginx_port 1
3.使用2的结论创建一个监控项nginx:80和触发器配置
|

测试
1 2 3 4
| 4.测试该触发器 在agent节点关闭nginx systemctl stop httpd
|

自定义监控——监控主机在线状态
1 2 3 4 5 6 7 8 9
| 1.使用简单检查创建监控项 键值输入icmpping 0表示失败,1表示成功
2.创建触发器,设置其=0就报警
3.测试触发器,在agent上配置禁ping echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
|
