zabbix告警
- 网页上能直接看到触发器告警
- 一般不能直接看网页,所以触发器触发后我们要发送邮件、微信、钉钉等通知我们
zabbix告警原理
- 触发器触发后,可以配置对应的动作
- 在动作里可以发邮件、微信、钉钉、短信等
告警脚本
脚本位置可见配置文件:/usr/local/zabbix/etc/zabbix_server.conf
LogFile=/url/local/zabbix/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpwd
DBPort=3306
Timeout=30
AlertScriptsPath=/usr/local/zabbix/alertscripts #告警脚本存放位置
ExternalScripts=/usr/local/zabbix/externalscripts
LogSlowQueries=300
发邮件建议
- 服务器往外的25端口一般被云厂商禁止,所以建议使用465端口发送加密邮件
- qq邮箱、163邮箱需要配置开启smtp
- 发邮件的python脚本(加执行权限chmod a+x zabbix_sendmail.py)
#!/usr/bin/python
# -*- coding:utf-8 -*-
# zabbix_sendmail.py
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import sys
smtpaddr = 'smtp.qq.com'
myemail = '2289521489@qq.com'
# password = '邮箱授权码'
#####下面两行功能和上面一行相同
f = open('/usr/local/zabbix/.passwd','r')
password = f.readline().strip()
#####
recvmail=sys.argv[1] #多个邮箱之间使用英文逗号隔开
subject=sys.argv[2] #邮件主题
content=sys.argv[3] #邮件内容
msg = MIMEText("""%s"""%(content),"plain","utf-8")
msg['Subject'] = Header(subject,'utf-8').encode()
msg['From'] = myemail
msg['To'] = recvmail
try:
smtp = SMTP_SSL(smtpaddr) #使用465端口发送加密邮件
smtp.login(myemail,password)
smtp.sendmail(myemail,recvmail.split(","),msg.as_string())
smtp.quit()
print("success")
except Exception as e:
print("fail:"+str(e))
测试脚本:
/usr/local/zabbix/alertscripts/zabbix_sendmail.py 773033929@qq.com 'zabbix disk' 'disk > 90%'
zabbix邮件告警配置
- 写一个邮件告警脚本
- 报警媒介添加邮件告警
- 用户设置报警媒介
- 创建触发器动作
报警媒介添加邮件告警
- 自定义脚本
- 脚本名称: zabbix_sendmail.py
- 脚本需要三个参数:
{ALERT.SENDTO} #收件邮箱
{ALERT.SUBJECT} #主题
{ALERT.MESSAGE} # 内容
用户添加报警媒介
- 类型选择邮件告警
- 触发器有多种触发,从信息到灾难,可定义接收哪种类型的告警
- 用户需要对服务器可读
创建触发器动作
- 动作有多种事件源,告警的选择触发器
- 邮件主题定义:{ALERT.SUBJECT}
- 邮件内容定义:{ALERT.MESSAGE}
- 操作添加发送邮件告警
- 恢复添加发送邮件告警