zabbix脚本发送邮件
Posted 运维讲堂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix脚本发送邮件相关的知识,希望对你有一定的参考价值。
zabbix版本: V3.4.11
今天要说的是用自定义脚本媒介来实现zabbix报警。Zabbix会将信息传递给此脚本,接下来你在脚本里面就可以随意处理了,一共会传递三个参数,按顺序接受也就是$1,$2,$3了,为了方便记忆,一般分别给他们赋值到To\Subject\body.
配置AlertScriptsPath
在server的配置文件中配置,这是用来定义脚本目录,这样一来zabbix就能找到脚本了
[root@localhostzabbix_autoinstall]# cat /etc/zabbix/zabbix_server.conf |grep AlertScriptsPath
###Option: AlertScriptsPath
#AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
创建发邮件脚本
```shell
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import sys
class Mail(object):
def __init__(self):
#self.to_list=mailto_list
self.mail_user="monitor"
self.mail_host="192.168.214.82"
self.mail_postfix="devops.com"
self.title = " Zabbix报警"
def send_mail(self,to_list,sub,content):
me = ("%s<%s@%s>") %(Header(self.title,'utf-8'),self.mail_user,self.mail_postfix)
msg = MIMEText(content,_subtype='plain',_charset='utf8')
msg['Subject'] = sub
msg['From'] = me
#msg['To'] = ";".join(to_list)
msg['To'] = to_list
try:
server = smtplib.SMTP()
server.connect(self.mail_host)
#server.login(self.mail_user,self.mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
return False
if __name__ == '__main__':
mail=Mail()
mail.send_mail(sys.argv[1],sys.argv[2],sys.argv[3])
命令行测试:
python mail.py 2843462072@qq.com zabbixzabbix_content
这样就能保证脚本功能正常,下面就是zabbix的配置了.
配置自定义脚本媒介
Administration->Media types->创建
使用自定义脚本媒介
定义好了媒介之后,我们需要把这媒介指定给用户。
Administration->Users->打开用户配置->mediatype里面添加刚增加的媒介
创建action
添加主机:
如果报错,或者不支持,可采用如下命令测试:
[root@localhost ~]# zabbix_get -s192.168.214.12 -k "system.cpu.load[all,avg1]"
0.000000
这时我们将其192.168.214.12的agent服务停止,观察下.
看到没,邮件按照我们的定义正常发送了.
以上是关于zabbix脚本发送邮件的主要内容,如果未能解决你的问题,请参考以下文章