Zabbix 3配置脚本报警(二)

配置使用script报警媒介

Zabbix 3配置邮件报警(一) 

上面详细介绍了如何使用zabbix email形式发送报警,个人认为唯一的缺点就是报警内容太不够人性化了。所以下面介绍zabbix第二种常用的报警方式,自定义脚本的形式报警,这个自定义的脚本你可以使用邮件报警、短信报警等等。

配置用户以script方式接受报警,在zabbix 2.x版本中,当有报警通知时,默认会传3个参数给脚本,它分别为是$1(发送给谁)、$2(发送标题)、$3(发送内容)。例如发送邮件给support@ywnds.com,标题为nginx宕机,内容是IP地址:1.1.1.1,nginx离线,请立即处理等等。

但从zabbix 3.0之后,可以自定义参数了,所以不写参数,它是不会传参数给脚本的,需要注意。

1)下面来配置自定义邮件报警,我们使用mailx作为发信息的客户端,所以先要安装mailx。

1
$ yum - y install mailx

配置mailx

1
2
3
4
5
6
$ cat / etc / mail .rc
set from = 1861210 @ 163.com
set smtp = smtp . 163.com
set smtp - auth - user = 1861210
set smtp - auth - password = 123456
set smtp - auth = login

发送测试邮件

1
$ echo   test | mail - s "test"   136××× @ 163.com

2)zabbix服务器端编写邮件发送脚本

首先配置zabbix

1
$ mkdir / etc / zabbix / alertscripts

1
2
$ vim / usr / local / zabbix / etc / zabbix_server .conf  / /修改 alert scripts为以下路径
AlertScriptsPath = / etc / zabbix / alertscripts

1
$ service zabbix_server restart

写报警脚本

1
2
3
4
5
6
$ cat / etc / zabbix / alertscripts / sendmail .sh
#!/bin/bash
#
messages = ` echo $ 3 | tr '\r\n' '\n' `
subject = ` echo $ 2 | tr '\r\n' '\n' `
echo "${messages}" | mail - s "${subject}" $ 1 >> / tmp / sendmail .log 2 > & 1

增加可执行权限

1
2
$ chown zabbix .zabbix / etc / zabbix / alertscripts / sendmail .sh
$ chmod + x / etc / zabbix / alertscripts / sendmail .sh

测试发送脚本

1
$ / etc / zabbix / alertscripts / sendmail .sh 136xxx @ 163.com "测试邮件标题" "测试邮件内容"

PS:最后需要重启zabbix-server和nginx/Apache服务器,千万别忘了。

zabbix后台配置

Administration–>Media types–>Create media type

进入告警方式配置界面,创建sendmail.sh告警方式,如下图:

Zabbix 3配置脚本报警(二)

name:媒介类型名称。

type:介质类型。

script name:脚本名称(需要先定义AlertScriptsPath,sendmail.sh脚本放在这个目录下,写绝路路径没用)

脚本参数:添加以下3个参数,分别对应sendmail.sh脚本需要的3个参数:收件人地址、主题、详细内容。

1
2
3
{ ALERT .SENDTO }
{ ALERT .SUBJECT }
{ ALERT .MESSAGE }

解释:很多人安装zabbix 3.0之后,写的脚本一直发信不成功,手动执行时可以的。那是因为zabbix3.0之后,可以自定义参数了。所以不写参数,它是不会传参数的。在2.x版本不存在这个问题,默认会传3个参数。然后配置用户以script方式接受邮件。

这时候就可以先停止zabbix_agent 测试下短信会不会成功发送。

sendEmail客户端发送邮件

sendEmail是一个轻量级,命令行的SMTP邮件客户端。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择使用简单并且功能强大这个被设计用在phpbashperlweb站点使用。以上是sendEmail的简单介绍千万不要和sendmail搞混掉了。用了sendEmail你将不在喜欢sendmail了。

下载安装sendEmail

1
2
3
$ wget http : / / caspian .dotconf .net / menu / Software / SendEmail / sendEmail - v1 . 56.tar.gz
$ tar - xzvf sendEmail - v1 . 56.tar.gz
$ mv sendEmail - v1 . 56 / sendEmail / usr / local / bin /

发送邮件

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
$ / usr / local / bin / sendEmail -- help
# 指定发件人邮箱;
- f root @ zabbix .com
 
# 指定收件人邮箱;
- t admin @ qq .com
 
# 指定发件人邮箱的smtp地址;          
- s smtp .zabbix .com
 
# 指定邮件的标题;
- u "我是邮件主题"
 
# 指定邮件内容的格式,html格式;
- o message - content - type = html
 
# 邮件内容编码;
- o message - charset = utf8
 
# 发件人邮箱的用户名;
- xu USER
 
# 发件人邮箱密码;
- xp PASSWORD
 
# 邮件的具体内容;
- m "我是邮件内容"

在配置zabbix的Email报警之前,需要将sendmail/postfix使用的域名进行相应的修改,系统默认为localhost.localdomain,其实不改也行,不过有些pop3服务器会过滤掉来自localhost.localdomain的邮件,导致邮件不能正常查收,所以,最好是改一下hostname,确保邮件发送的成功率

1
2
$ cat / etc / hosts
127.0.0.1   zabbix .com  smtp .zabbix .com  localhost .localdomain   localhost

sendemail发邮件脚本缩写(需要安装sendemail邮件客户端)

1
2
3
4
5
6
7
8
$ cd / etc / zabbix / alertscripts
$ cat sendmail .sh
#!/bin/bash
#
to = $ 1
subject = $ 2
body = $ 3
/ usr / local / bin / sendEmail - f 18612100043 @ 163.com - t "$to" - s smtp . 163.com - u "$subject" - o message - content - type = html - o message - charset = utf8 - xu 18612100043 - xp 123 - m "$body" 2 >> / tmp / 22.log

增加可执行权限

1
2
$ chown zabbix .zabbix / etc / zabbix / alertscripts / sendmail .sh
$ chmod + x / etc / zabbix / alertscripts / sendmail .sh

测试发送脚本

1
$ / etc / zabbix / alertscripts / sendmail .sh 163xxx @ 163.com "测试邮件标题" "内容第一行<br/>内容第二行<br/>"

一般以html这种方式发送的邮件内容都堆到一起了,没有换行。可以修改动作日志的内容格式:

点击 配置->动作->Report problems to Zabbix administrators

在默认信息每一行后面添加<br/>

1
2
3
4
Trigger : { TRIGGER .NAME } < br / >
Trigger status : { TRIGGER .STATUS } < br / >
Trigger severity : { TRIGGER .SEVERITY } < br / >
Trigger URL : { TRIGGER .URL } < br / >

最后提供一个Python版本的报警脚本

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
#!/usr/bin/python
#coding:utf-8
import smtplib
from email .mime .text import MIMEText
import sys
#邮箱服务器地址
mail_host = 'smtp.163.com'
#邮箱用户名
mail_user = '18612100043@163.com'
#邮箱密码
mail_pass = 'mima'
mail_postfix = '163.com'
def send_mail ( to_list , subject , content ) :
     me = mail_user + "<" + mail_user + "@" + mail_postfix + ">"
     msg = MIMEText ( content )
     msg [ 'Subject' ] = subject
     msg [ 'From' ] = me
     msg [ 'to' ] = to_list
     try :
         s = smtplib .SMTP ( )
         s .connect ( mail_host )
         s .login ( mail_user , mail_pass )
         s .sendmail ( me , to_list , msg .as_string ( ) )
         s .close ( )
         return True
     except Exception , e :
         print str ( e )
         return False
if __name__ == "__main__" :
     send_mail ( sys .argv [ 1 ] , sys .argv [ 2 ] , sys .argv [ 3 ] )

测试

1
$ python sendmail .py '84618983@qq.com' 'Test Mail' 'This is Test Mail'
 
转自:Zabbix 3配置脚本报警(二) – 运维那点事  http://www.ywnds.com/?p=6574
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值