Akemi

Zabbix自定义监控

2024/09/12

很多时候工作中的需求无法使用模板来满足,所以需要自定义监控

监控相关概念

监控项:自定义的服务器主机信息
模板:多个监控项和触发器、图形的集合
动作:发送报警的信息
报警类型:邮件、微信、钉钉
触发器:参数阈值→报警提示
图形:可视化界面
报警媒介:报警的方式——邮件等
应用集:监控项的集合,是一个用来分类查看的属性

监控项类型

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

CATALOG
  1. 1. 自定义监控——tcp状态探测
    1. 1.1. 单状态监测
    2. 1.2. 多状态监测
    3. 1.3. 使用应用集
    4. 1.4. 使用触发器
  2. 2. 自定义监控——80端口状态探测
    1. 2.1. 准备与创建配置项
    2. 2.2. 测试
  3. 3. 自定义监控——监控主机在线状态