37-Zabbix自定义监控模板及告警设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了37-Zabbix自定义监控模板及告警设置相关的知识,希望对你有一定的参考价值。

自定义模板 Templates 和监控项 Items

模板解决以下生产环境中的运维问题

  • 为每个主机单独添加相同的一组监控项比较麻烦,例如:100台主机增加一个tcp80的监控项
  • 修改监控项比较麻烦,例如:100台服务器的监控项将80改成8080
  • 删除每个主机的同一组监控项,例如:100台服务器的监控项删除
  • 删除主机会连同主机的监控项一起被删除;不能复用监控项

自定义模板和监控项实现过程

37-Zabbix自定义监控模板及告警设置_ZABBIX

  • 在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

37-Zabbix自定义监控模板及告警设置_自定义模板_02

37-Zabbix自定义监控模板及告警设置_邮件告警_03

37-Zabbix自定义监控模板及告警设置_邮件告警_04

37-Zabbix自定义监控模板及告警设置_ZABBIX_05

37-Zabbix自定义监控模板及告警设置_ZABBIX_06

37-Zabbix自定义监控模板及告警设置_自定义模板_07

37-Zabbix自定义监控模板及告警设置_自定义模板_08

37-Zabbix自定义监控模板及告警设置_ZABBIX_09

37-Zabbix自定义监控模板及告警设置_ZABBIX_10



案例:利用自定义监控项的参数功能监控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

37-Zabbix自定义监控模板及告警设置_ZABBIX_11

37-Zabbix自定义监控模板及告警设置_自定义模板_12

37-Zabbix自定义监控模板及告警设置_ZABBIX_13

37-Zabbix自定义监控模板及告警设置_自定义模板_14



触发器设置及滞后触发设置

官方触发器示例
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连接数阈值出发器

37-Zabbix自定义监控模板及告警设置_自定义模板_15

37-Zabbix自定义监控模板及告警设置_邮件告警_16

37-Zabbix自定义监控模板及告警设置_ZABBIX_17

37-Zabbix自定义监控模板及告警设置_邮件告警_18

37-Zabbix自定义监控模板及告警设置_邮件告警_19

37-Zabbix自定义监控模板及告警设置_ZABBIX_20

37-Zabbix自定义监控模板及告警设置_自定义模板_21

37-Zabbix自定义监控模板及告警设置_邮件告警_22

37-Zabbix自定义监控模板及告警设置_自定义模板_23

37-Zabbix自定义监控模板及告警设置_自定义模板_24

37-Zabbix自定义监控模板及告警设置_邮件告警_25


触发器依赖关系

有时候一台主机的可用性依赖于另一台主机。如果一台路由器宕机,则路由器后端的服务器将变得不可用。如果这两者都设置了触发器,你可能会收到关于两个主机宕机的通知,然而只有路由器是真正故障的。这就是主机之间某些依赖关系可能有用的地方,设置依赖关系的通知会被抑制,而只发送根本问题的通知。

案例:
假设:充当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端口,此时只有主机节点会警告

37-Zabbix自定义监控模板及告警设置_自定义模板_26

37-Zabbix自定义监控模板及告警设置_ZABBIX_27

37-Zabbix自定义监控模板及告警设置_自定义模板_28


Zabbix 实现邮件告警

  1. 邮箱开启 SMTP 功能

37-Zabbix自定义监控模板及告警设置_自定义模板_29

  1. 创建报警媒介类型实现发信人功能

37-Zabbix自定义监控模板及告警设置_自定义模板_30

37-Zabbix自定义监控模板及告警设置_邮件告警_31

37-Zabbix自定义监控模板及告警设置_自定义模板_32

37-Zabbix自定义监控模板及告警设置_自定义模板_33

37-Zabbix自定义监控模板及告警设置_邮件告警_34

37-Zabbix自定义监控模板及告警设置_ZABBIX_35

37-Zabbix自定义监控模板及告警设置_邮件告警_36

测试是否邮件正常,有时QQ邮箱不成功,可以尝试其它邮箱

37-Zabbix自定义监控模板及告警设置_邮件告警_37

37-Zabbix自定义监控模板及告警设置_ZABBIX_38

37-Zabbix自定义监控模板及告警设置_ZABBIX_39

37-Zabbix自定义监控模板及告警设置_邮件告警_40

37-Zabbix自定义监控模板及告警设置_自定义模板_41

查看邮箱,收到报警邮件。

我是moore,大家一起加油!

以上是关于37-Zabbix自定义监控模板及告警设置的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix监控mysql配置及故障告警配置

自定义监控项及告警升级

Zabbix监控httpd服务

linux监控平台搭建添加自定义监控项目配置邮件告警测试警报不发邮件的问题处理

添加自定义监控项目邮件告警

添加自定义监控项目配置邮件告警及不发邮件的问题处理