zabbix邮件告警及执行远程命令(一)
概述
在zabbix中,创建带参数监控项(item),创建触发器(trigger),创建脚本形式的报警媒介(Media Type),当触发器被触发时执行动作(action),创建动作(action),包括发送邮件和执行远程命令,最后,触发报警,验证是否收到邮件及执行了远程命令。
Step1 创建带参数监控项
参考 zabbix从放弃到入门(5)在zabbix中添加带有参数的监控项
点击 Configuration
- Hosts
- compute1
的Items
:
进入如下界面,点击Create Item
:
创建监控项RootPartitionUsed
,填写如图中配置,表示监控192.168.0.177
主机下根磁盘
的使用率
,点击update
:
查看数据,点击Monitoring
- Latest data
,看到了监控项RootPartitionUsed
点击最右边的graph
查看图表:
此时,已成功创建了一个带参数监控项。
忽略左边一块凸起,是之前做实验留下的痕迹。
Step2 创建触发器
参考 zabbix从放弃到入门(7):触发器详解之一,创建触发器
点击Configuration
- Hosts
- compute1
的Triggers
进入如下界面,选好Group
和Host
,点击Create Item
:
创建触发器RootPartitionUsedTrigger
,设定等级为High
,设定触发条件为compute1的根目录磁盘使用率超过5.46%
,点击update
:
其中,触发条件由上图Expression
设定,点击add
可进入编辑页,这里就不详述,可参考本步骤开头链接。
再次查看数据,点击Monitoring
- Latest data
,找到监控项RootPartitionUsed
点击最右边的graph
查看图表,注意这里的Trigger
:
此时,已成功创建了一个触发器。
Step3 创建脚本形式的报警媒介
点击Administration
- Media types
,点击最右边Create media type
:
创建一个名为sendEmail
,类型为Script
的脚本作为报警媒介。
脚本名为sendEmail.sh
,将该脚本放置与zabbix server的/usr/lib/zabbix/alertscripts
目录下:
cloudtest@controller:/usr/lib/zabbix/alertscripts$ ls
sendEmail.sh
添加脚本三个参数,意为
- {ALERT.SENDTO} - 邮件接收方
- {ALERT.SUBJECT} - 邮件标题
- {ALERT.MESSAGE} - 邮件内容
则执行脚本时会依次传入这三个参数,脚本内容如下:
#!/bin/bash
to=$1
title=$2
context=$3
/usr/local/bin/sendEmail -f 13957348548@163.com -t "$to" -s smtp.163.com -u "$title" -o message-content-type=html -o messag e-charset=utf-8 -xu 13957348548@163.com -xp cloudtest123 -m "$context" -o tls=no
该脚本利用sendEmail
发送邮件,如何用sendEmail
发送邮件,请见https://www.jianshu.com/p/d8c1fd480b21
另外,注意授予脚本执行权限:
sudo chmod a+x sendEmail.sh
点击update
,看到报警媒介已添加:
这时,还需要定义一个用户,让其具备接收报警媒介的能力,点击Administration
- Users
- Admin
:
进入Users
界面,点击Media
- Add
:
添加媒介,Send to
里填上收件人的邮箱,对应之前创建脚本时的{ALERT.SENDTO}
参数,点击update
:
回到Users
,别忘了再update
一下:
此时,已成功创建了一个脚本形式的报警媒介。
未完待续。