Zabbix自带的报警服务很丰富,其中发送电子邮件是使用最多的功能。
但自带的这个功能不支持在邮件中添加附件。
因此写一个bash脚本来实现这个功能。
在/usr/lib/zabbix/alertscripts/ 目录下用zabbix用户新建一个bash脚本
因为zabbix账户只能以服务角色登录,这里使用root账户登录后,用sudo -u zabbix vim xxx.sh来创建脚本
在之前将zabbix的目录权限取得
chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts/
chown -R zabbix:zabbix /var/log/zabbix/
#!/bin/bash
#send email
# $1 send to
# $2 subject
# $3 message
# 从其他机器获取log文件 先准备好用密钥登录配置 或者使用明文sshpass。
scp ssh [email protected]:/var/log/xx.log /var/log/zabbix/
# 给日志变量赋值
$ls_attachment=/var/log/zabbix/xx.log
#因为echo会带入~M的换行符,导致邮件内容变成附件,这里要将传递进来的邮件正文的格式进行调整,先用zabbix用户创建文本文件sudo -u zabbix touch /usr/lib/zabbix/alertscripts/message.txt
$ls_message=/usr/lib/zabbix/alertscripts/message.txt
echo "$3" > $ls_message
# 转换文本格式
dos2unix $ls_message
mail -a $ls-attachment -s "$2" "$1" < $ls_message
完整的脚本如下:
#!/bin/bash
#send email
# $1 send to
# $2 subject
# $3 message
scp ssh [email protected]:/var/log/xx.log /var/log/zabbix/
$ls_attachment=/var/log/zabbix/xx.log
$ls_message=/usr/lib/zabbix/alertscripts/message.txt
echo "$3" > $ls_message
dos2unix $ls_message
mail -a $ls-attachment -s "$2" "$1" < $ls_message
给脚本添加运行权限
chmod +x /usr/lib/zabbix/alertscripts/xxx.bash
完成后,在zabbix中新建报警类型,类型为脚本,脚本名称填入刚刚创建的xxx.bash脚本。
脚本参数有三个,{ALERT.SENDTO};{ALERT.SUBJECT};{ALERT.MESSAGE}。
单击添加即可完成警报类型的添加。
评论
发表评论