触发器可根据监控项获取到的值来进行一些操作,如监控项获取到的values为0,触发器可判断为正常,如果获取到了1,就触发报警。

定义报警方式比较简单,但是用shell脚本实现起来,总是有格式问题,所以我用python语言写了简单的程序[发邮件,发到微信号上],zabbix运行python程序时,传入几个参数,即可根据参数内容定义发送的介质。

 

环境信息

zabbix server:
hostname=Zabbix server

ip:192.168.100.7

 

zabbix agent:

hostname=host3

ip:192.168.100.3

 

 

目标

对目前存在的监控创建触发器,根据监控项的值来判断要做的操作(查看这个监控项的创建过程:https://www.cnblogs.com/xiaodai12138/p/10159217.html)。

nginx_status    当nginx正常运行时返回0,如果不正常则反馈非0的数字

 

 

个性化发信配置过程概述

1.一个监控项

2.触发器匹配监控项的值,判断值符合触发条件,则触发报警。   #什么时候该发快递了

3.定义报警媒介类型               #一个快递单,上面固定了快递运输方式,但是发件人收件人,发的东西不是快递单定义的,但是快递单子上已经有了那几个空行,需要有人在空行里面填写发件人等信息。

4.定义用户报警媒介               #一个用户,他随时准备发快递,并且是他知道该发送给谁的。

5.定义触发器触发后的动作    #第二2项触发,发快递,自己包装快递内容,让谁发送这个快递(那个人知道快递该发给谁),并告诉那个人,你要把快递用顺丰(多个报警媒介类型,可定义不同的发信方式)发走。

 

 

创建触发器

#根据监控项的值做判断,触发错误

对nginx_status进行监控

zabbix 定义触发器,并使用邮件,微信消息报警。

zabbix 定义触发器,并使用邮件,微信消息报警。

 下图是点击上图add后出现的页面,添加触发条件页面

zabbix 定义触发器,并使用邮件,微信消息报警。

创建完后保存即可。

 

报警媒介类型

#定义发信方式

*编辑server端配置文件,添加下方内容,并重启server端

#发信方式,我们使用脚本发信,脚本更灵活,没有限制,zabbix只需要将参数传给脚本,而不需要管脚本怎么做。

[root@123 zabbix]# cat etc/zabbix_server.conf |grep ^AlertScriptsPath
AlertScriptsPath=/usr/local/zabbix/shells/

 

zabbix 定义触发器,并使用邮件,微信消息报警。

 

#定义使用邮箱发信报警信息,那么使用邮箱发信,需要动态定义的必须有3个东西分别是:接收方,标题,内容,在下图中对应的分别是{ALERT.SENDTO},  {ALERT.SUBJECT},{ALERT.MESSAGE}

#使用此报警媒介类型,最终会执行send_mail.py脚本,并按照由上至下顺序给脚本传入3个位置参数,脚本内容如下

#send_mail.py  连接个人163邮箱,发送邮件至位置参数中的邮箱

#文中有部分区域,是需要自己填写的,填写你的发件邮箱。还有一些头部的信息。

#脚本需要chmox  +x 给可执行权限。

 1 [root@123 shells]# vim /usr/local/zabbix/shells/send_mail.py 
 2 
 3 #!/usr/bin/python3
 4 import smtplib,sys
 5 from email.mime.text import MIMEText
 6 from email.header import  Header
 7 server=smtplib.SMTP(host='smtp.163.com')
 8 server.set_debuglevel(1)
 9 server.login(user='1821114****@163.com',password='twgdhbtz****')
10 
11 
12 send_to=sys.argv[1]
13 title=sys.argv[2]
14 input_msg=sys.argv[3]
15 
16 
17 
18 msg=MIMEText(input_msg,'plain','utf-8')
19 msg['Subject'] = Header(title, 'utf-8')
20 msg['From'] ='from_zabbix<1821114****@163.com>'
21 msg['To'] = send_to
22 
23 server.sendmail('1821114****@163.com',send_to,msg.as_string())
24 server.quit()
send_mail.py

相关文章:

  • 2021-05-20
  • 2021-04-26
  • 2021-05-14
  • 2021-07-18
  • 2021-06-19
  • 2021-09-29
  • 2021-12-09
  • 2022-01-07
猜你喜欢
  • 2022-01-07
  • 2021-09-20
  • 2021-04-18
  • 2022-12-23
  • 2021-09-10
  • 2022-01-11
相关资源
相似解决方案