首先我们需要明白:
zabbix报警的媒介:
E-mail:使用sendmail发送邮件,从这边出去的邮件基本是垃圾邮件,我一直不喜欢用
SMS:需要短信设备,没有,一直都没用过这东西
Jabber:Jabber有第三方插件,能让Jabber用户和MSN、YahooMessager、ICQ等IM用户相互通讯。因为Google遵从Jabber协议,并且Google已经将Gtalk的服务器开放给了其它的Jabber服务器。所以PSI、Giam等Jabber客户端软件支持GTalk用户登陆。国内没啥人用
Ez Texting:给用户手机发短信,貌似只支持美国和加拿大
Custom alertscripts:自定义脚本,把信息传递给脚本,我们在脚本里使用sendEmail(不要和sendmail搞混了)、飞信发短信、调用短信接口发送短信等等。
____________________________________________________________________________________________________________________________________
报警信息将会使用系统自带的sendmail发送,配置比较简单
配置媒介Email
Administration→Media types->Click on Create media type
media_email
选项 | 描述 |
Name | 媒介名称,看着起名 |
Type | 选择Email |
SMTP server | SMTP服务器 |
SMTP helo | SMTP helo值, 通常情况下是顶级域名 |
SMTP email |
这个邮件地址会显示到收件人的From里
可用邮箱地址: zabbix@company.com (只包含邮箱地址,不需要尖括号括起来) Zabbix HQ <[email protected]> (显示名和邮箱地址,邮箱地址使用尖括号) ∑?-monitoring <[email protected]> (显示名称为UTF8格式) 不可用的邮箱地址 Zabbix HQ [email protected] (需要尖括号) "Zabbix\@\<H(comment)Q\>" <[email protected]>不支持转义 |
使用媒介
定义好了媒介之后,我们需要把这媒介指定给用户。
Administration->Users->打开用户配置->media type里面添加刚增加的媒介
参数说明
选项 | 描述 |
Type | 选择媒介名称,此处选Email |
Send to | 发邮件给谁,例如[email protected],也可以使用显示名 |
When active | 发送时间,只有在这个时间段内才会发邮件 |
Use if severity | 发送邮件的触发器级别 |
Status |
当前媒介状态
Enabled - 使用中. Disabled - 禁用中. |
因为我设置了email的邮箱,发送的时候老是报550,535认证错误,所以我采用的脚本发送邮件的方式,如下,分为两大步骤:
第一个步骤:
sendEmail是一个轻量级,命令行的SMTP邮件客户端。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php、bash
perl和web站点使用。
以上是sendEmail的简单介绍,千万不要和sendmail搞混掉了。用了sendEmail你将不在喜欢sendmail了.
下载安装sendEmail
1 2 3 4 |
sendEmail下载地址:http://caspian.dotconf.net/menu/Software/SendEmail/ # wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz //下载1.56版本 # tar -xzvf sendEmail-v1.56.tar.gz //解压后就可以使用了 # mv sendEmail /usr/local/bin/ |
发送邮件
1 2 3 |
# /usr/local/bin/sendEmail -ssmtp.163.com-u"我是邮件主题"-omessage-content-type=html\ -omessage-charset=utf8-xuttlsafrom@163.com-xp123456-m"我是邮件内容" |
命令说明:
1 2 3 4 5 6 7 8 9 |
/usr/local/bin/sendEmail 命令主程序 -f ttlsafrom@163.com 发件人邮箱 -s smtp.163.com 发件人邮箱的smtp服务器 -u "我是邮件主题" 邮件的标题 -o message-content-type=html 邮件内容的格式,html表示它是html格式 -o message-charset=utf8 邮件内容编码 -xu ttlsafrom@163.com 发件人邮箱的用户名 -xp 123456 发件人邮箱密码 -m "我是邮件内容" 邮件的具体内容 |
发送成功之后会有如下提示:
Jul 29 15:02:53 e10074 sendEmail[26347]: Email was sent successfully!
sendEmail使用命令帮助
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
[root@li229-122scripts]# sendEmail-1.56byBrandonZehm<caspian@dotconf.net> Synopsis: sendEmail-fADDRESS[options] Required: -fADDRESS from(sender)emailaddress *Atleastonerecipientrequiredvia-t,-cc,or-bcc *Messagebodyrequiredvia-m,STDIN,or-omessage-file=FILE Common: -tADDRESS[ADDR...] toemailaddress(es) -uSUBJECT messagesubject -mMESSAGE messagebody -sSERVER[:PORT] smtpmailrelay,defaultislocalhost:25 Optional: -a FILE[FILE...] fileattachment(s) -cc ADDRESS[ADDR...] cc emailaddress(es) -bccADDRESS[ADDR...] bccemailaddress(es) -xu USERNAME usernameforSMTPauthentication -xp PASSWORD passwordforSMTPauthentication Paranormal: -bBINDADDR[:PORT] localhostbindaddress -lLOGFILE logtothespecifiedfile -v verbosity,usemultipletimesforgreatereffect -q bequiet(i.e.noSTDOUToutput) -oNAME=VALUE advancedoptions,fordetailstry:--helpmisc -omessage-content-type=<auto|text|html> -omessage-file=FILE -omessage-format=raw -omessage-header=HEADER -omessage-charset=CHARSET -oreply-to=ADDRESS -otimeout=SECONDS -ousername=USERNAME -opassword=PASSWORD -otls=<auto|yes|no> -ofqdn=FQDN Help: --help thehelpfuloverviewyou‘rereadingnow --helpaddressing explainaddressingandrelatedoptions --helpmessage explainmessagebodyinputandrelatedoptions --helpnetworking explain-s,-b,etc --helpoutput explainloggingandotheroutputoptions --helpmisc explain-ooptions,TLS,SMTPauth,andmore |
第二个步骤:
老板抠门不给买SMS短信猫,投错胎导致没有美国/加拿大手机号码,根本搞不清楚jabber是个什么玩意儿,sendmail又不靠谱,那都不是事,想要轻轻松松报警,那么用上自定义脚本媒介。zabbix会将信息传递给脚本,接下来你在脚本里面随意处理,一共会传递三个参数,按顺序接受也就是$1,$2,$3了,为了方便记忆,一般分别给他们赋值到To\Subject\body.
配置AlertScriptsPath
在server的配置文件中配置,这是用来定义脚本目录,这样一来zabbix就能找到脚本了
1 2 3 4 |
# cat /usr/local/zabbix-2.2.1/etc/zabbix_server.conf | grep AlertScriptsPath ### Option: AlertScriptsPath AlertScriptsPath=/usr/local/zabbix-2.2.1/alertscripts # mkdir /usr/local/zabbix-2.2.1/alertscripts |
创建发邮件脚本
1 2 3 4 5 6 7 8 |
# #!/bin/sh to=$1 subject=$2 body=$3 /usr/local/bin/sendEmail-fsupport@ttlsa.com-t"$to"-ssmtp.ttlsa.com-u"$subject"-omessage-content-type=html-omessage-charset=utf8-xusupport@ttlsa.com-xp123456-m"$body"2>>/tmp/22.log # |
脚本里面使用sendEmail发送邮件,sendEmail的用法请点击《使用sendEmail发送邮件》,不一定非要发送邮件,也可以发飞信或者调用短信平台接口
配置自定义脚本媒介
Administration->Media types->创建
zabbix-custom-scripts
参数说明
选项 | 描述 |
Description | 媒介名称,看着起名,这边叫sendEmail |
Type | 选择custom scripts |
Script name | 脚本名称,这边写mail.sh,只要写名称就行了,不要写绝对路径 |
使用自定义脚本媒介
定义好了媒介之后,我们需要把这媒介指定给用户。
Administration->Users->打开用户配置->media type里面添加刚增加的媒介
zabbix-custom-scripts-sendemail
参数说明
选项 | 描述 |
Type | 选择媒介名称,此处选sendEmail |
Send to | 发邮件给谁,例如[email protected] |
When active | 发送时间,只有在这个时间段内才会发邮件 |
Use if severity | 发送邮件的触发器级别 |
Status |
当前媒介状态
Enabled - 使用中. Disabled - 禁用中. |
注意:zabbix3.0和zabbix2.0版本还是有区别的,在定义的媒介的时候需要填写宏变量才能发送成功的。
即:{ALERT.SENDTO}, {ALERT.SUBJECT} and {ALERT.MESSAGE}
今天是第二天,我再发的时候就出现的如下问题:
554 DT:SPM
发送的邮件内容包含了未被许可的信息,或者被反垃圾邮件系统识别为垃圾邮件。请检查是否有用户发送
病毒或者垃圾邮件
[[email protected] alertscripts]# ./sendmail.sh [email protected] nihao haha
Apr 28 13:31:09 5498fdd77ab4 sendEmail[10872]: ERROR => Received: 554 DT:SPM yeah smtp1,ClUQrEAZ9kIZoCFXx+jaAw--.8595S2 1461821466,please see http://mail.163.com/help/help_spam_16.htm?ip=124.126.224.62&hostid=smtp1&time=1461821466
554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件;