37-Zabbix自定义监控模板及告警设置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了37-Zabbix自定义监控模板及告警设置相关的知识,希望对你有一定的参考价值。
自定义模板 Templates 和监控项 Items
模板解决以下生产环境中的运维问题
- 为每个主机单独添加相同的一组监控项比较麻烦,例如:100台主机增加一个tcp80的监控项
- 修改监控项比较麻烦,例如:100台服务器的监控项将80改成8080
- 删除每个主机的同一组监控项,例如:100台服务器的监控项删除
- 删除主机会连同主机的监控项一起被删除;不能复用监控项
自定义模板和监控项实现过程
- 在Zabbix 被监控主机上编写自定义监控项的取值的脚本,并加执行权限
- 在Zabbix 被监控主机上的配置文件中添加自定义监控项,指定 key 和 对 key 赋值的脚本及参数
- 在Zabbix Server 上使用 zabbix_get 工具测试是否能取到自定义监控项信息
- 在Zabbix Web 创建模板,在模板中添加自定义监控项
- 在Zabbix Web 将模板关联至被监控的主机
- 导出自定义模板可以在其它 Zabbix Server 复用
自定义监控项配置案例
#被监控端
[root@ubuntu2204 ~]#df
文件系统 1K-块 已用 可用 已用% 挂载点
tmpfs 198828 976 197852 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 101590008 6579548 89803832 7% /
tmpfs 994120 0 994120 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
/dev/sda2 1992552 251940 1619372 14% /boot
tmpfs 198824 0 198824 0% /run/user/0
[root@ubuntu2204 ~]#df|awk -F +|% $7 == "/" print $5
7
[root@ubuntu2204 ~]#cat /etc/zabbix/zabbix_agent2.d/test.conf
UserParameter=root_filesystem_use,df|awk -F +|% $7 == "/" print $5
[root@ubuntu2204 ~]#zabbix_agent2 -t root_filesystem_use
root_filesystem_use [s|7]
[root@ubuntu2204 ~]#systemctl restart zabbix-agent2
#监控服务器
[root@ubuntu2204 ~]#zabbix_get -s 10.0.0.202 -k root_filesystem_use
7
案例:利用自定义监控项的参数功能监控mysql的存活状态
[root@centos8 ~]#yum -y install mysql-server
[root@centos8 ~]#systemctl enable --now mysqld
[root@centos8 ~]#mysql
mysql> create user test@localhost identified by 123456;
[root@centos8 ~]#mysqladmin -utest -p123456 ping
mysqladmin: [Warning] Using a password on the command line interface can be
insecure.
mysqld is alive
[root@centos8 ~]#cat /etc/zabbix/zabbix_agentd.d/test.conf
UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping 2>/dev/null| grep -c alive
[root@centos8 ~]#systemctl restart zabbix-agent.service
[root@zabbix-server ~]#zabbix_get -s 10.0.0.38 -p 10050 -k
"mysql.ping[test,123456]"
1
[root@centos8 ~]#systemctl stop mysqld
[root@zabbix-server ~]#zabbix_get -s 10.0.0.38 -p 10050 -k
"mysql.ping[test,123456]"
0
案例:监控TCP 十一种有限状态机
UserParameter=<key>,<shell command>
- key使用 [*] 用于定义该key接受括号内的参数。参数需在配置监控项时给出;参数禁止使用下列字符:\\ ’ ” ` * ? [ ] ~ $ ! & ; ( ) <>
- Command:命令用于生成key对应的值。可以在命令中使用位置引用$1 … $9来引用监控项Key中的相应参数。Zabbix解析监控项Key的[]中包含的参数,并相应地替换$1,…,$9。$0会替换为完整的原始命令(在对$0,…,$9执行替换之前的命令)运行。不管位置参数($0,…,$9)是用双引号(“ )还是单引号( ’ )括起来,都会解析位置引用
#TCP 共十一种状态
ESTABLISHED
SYN_SENT
SYN_RECV
FIN_WAIT1
FIN_WAIT2
TIME_WAIT
CLOSE
CLOSE_WAIT
LAST_ACK
LISTEN
CLOSING
#Zabbix-Agent2
[root@ubuntu2204 ~]#vim /etc/zabbix/zabbix_agent2.d/test.conf
[root@ubuntu2204 ~]#cat /etc/zabbix/zabbix_agent2.d/test.conf
UserParameter=tcp_state[*],netstat -ant|grep -c $1
[root@ubuntu2204 ~]#systemctl restart zabbix-agent2
#Zabbix-server
[root@ubuntu2204 ~]#zabbix_get -s 10.0.0.202 -k tcp_state[ESTABLISHED]
2
[root@ubuntu2204 ~]#zabbix_get -s 10.0.0.202 -k tcp_state[LISTEN]
24
触发器设置及滞后触发设置
官方触发器示例
https://www.zabbix.com/documentation/5.0/zh/manual/config/triggers/expression
#滞后触发
有时我们需要一个OK和问题状态之间的区间值,而不是一个简单的阈值。
例如,我们希望定义一个触发器,当机房温度超过20C时,触发器会出现异常,我们希望它保持在那种状态,直到温度下降到15C以下。
为了做到这一点,我们首先定义问题事件的触发器表达式。然后在事件成功迭代中选择‘恢复表达式’,并为OK事件输入恢复表达式。
*注意,只有首先解决问题事件才会评估恢复表达式。如果问题条件仍然存在,则不能通过恢复表达式来解决问题。
例如:磁盘剩余空间过低
问题表达式: it is less than 10GB for last 5 minutes
server:vfs.fs.size[/,free].max(5m)<10G
恢复表达式: it is more than 40GB for last 10 minutes
server:vfs.fs.size[/,free].min(10m)>40G
案例:设置TCP连接数阈值出发器
触发器依赖关系
有时候一台主机的可用性依赖于另一台主机。如果一台路由器宕机,则路由器后端的服务器将变得不可用。如果这两者都设置了触发器,你可能会收到关于两个主机宕机的通知,然而只有路由器是真正故障的。这就是主机之间某些依赖关系可能有用的地方,设置依赖关系的通知会被抑制,而只发送根本问题的通知。
案例:
假设:充当R 路由节点,H 充当主机节点
模拟当H节点的80端口如果不存活,需要检查R节点的80端口是否存活
如果R路由节点的80端口存活,则触发H主机节点的80端口不存活警告
如果R路由节点的80端口不存活,则仅触发路由节点的警告,而不触发主机节点的警告
1. 定义触发器表达式
R路由节点:定义监控项,配置触发器
H主机节点:定义监控项,配置触发器
2. 模拟路由与主机故障
模拟R路由器、H主机节点同时障时,会同时收到两个告警,显然不符合预期效果
3. 配置触发器依赖关系
在H服务器节点上对应的触发器上配置依赖关系,依赖R路由节点对应的触发器
4. 再次模拟路由与节点故障
关闭 “路由器” 80端口,以及主机节点80端口;此时只有路由节点会警告
启用 “路由器” 80端口,关闭主机节点80端口,此时只有主机节点会警告
Zabbix 实现邮件告警
- 邮箱开启 SMTP 功能
- 创建报警媒介类型实现发信人功能
测试是否邮件正常,有时QQ邮箱不成功,可以尝试其它邮箱
查看邮箱,收到报警邮件。
我是moore,大家一起加油!
以上是关于37-Zabbix自定义监控模板及告警设置的主要内容,如果未能解决你的问题,请参考以下文章