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->创建

zabbix脚本发送邮件

使用自定义脚本媒介

定义好了媒介之后,我们需要把这媒介指定给用户。

Administration->Users->打开用户配置->mediatype里面添加刚增加的媒介

zabbix脚本发送邮件

创建action

zabbix脚本发送邮件

zabbix脚本发送邮件

zabbix脚本发送邮件

添加主机:

zabbix脚本发送邮件

如果报错,或者不支持,可采用如下命令测试:

[root@localhost ~]# zabbix_get -s192.168.214.12 -k "system.cpu.load[all,avg1]"

0.000000

 

这时我们将其192.168.214.12agent服务停止,观察下.

zabbix脚本发送邮件

看到没,邮件按照我们的定义正常发送了.



以上是关于zabbix脚本发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

通过脚本发送zabbix邮件报警

zabbix-python 发送邮件脚本

zabbix脚本发送邮件

zabbix发送邮件python脚本

怎样清空zabbix里面未发送的邮件

zabbix教程系列邮件报警设置(脚本方式)