一、前提
- 已经搭建好zabbix-server
- 在需要监控的mysql服务器上安装zabbix-agent2
上述安装步骤参考我的上篇文章:通过docker容器安装zabbix6.4.12图文详解(监控服务器docker容器)
二、告警配置
1.邮件告警脚本配置
- 进入zabbix-server-mysql容器内部
docker exec -it zabbix-server-mysql bash
- 进入zabbix-server-mysql容器中存放脚本文件的文件夹
cd /usr/lib/zabbix/alertscripts
- 在该文件夹下创建.sh的脚本文件
vi sendmail.sh
如图所示:
- 添加脚本内容。注,该文件运行的时候在容器内部,不能使用curl调用url接口,需要使用wget
脚本内容如下:
#!/bin/bash ## 指定脚本文件使用bash解释器来执行
send_email() {
mail_address=$1
title=$2
content=$3
##这里修改成你自己的邮件api接口
url='http://xxx.xxx.xxx.xxx:xxxx/ITExceptionV1/SendMail/SendToMail'
data="{\"mailAddress\": \"$mail_address\", \"toTitle\": \"$title\", \"toInfo\": \"$content\"}"
echo $data > temp.json
response=$(wget -qO- --post-file=temp.json $url)
if [ $? -eq 0 ]; then
echo 'SUCCESS'
else
echo 'response.status_code=' $?
echo 'FAIL'
fi
rm temp.json
}
if [ "$#" -ne 3 ]; then
echo "Usage: $0 <mail_address> <title> <content>"
else
mail_address=$1
title=$2
content=$3
send_email $mail_address "$title" "$content"
fi
- 添加完成后 :wq保存退出,并给文件赋予权限,文件才能运行,这边直接给文件赋予执行权限
chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh #文件赋予执行权限
- 执行文件测试,看是否能收到邮件。能收到邮件说明脚本没有问题
./sendmail.sh xxx@xxx.com "email title" "email content"
2.短信告警脚本配置
前面步骤跟邮件告警一样,参考上文内容,下面直接从创建脚本开始。
- 进入zabbix-server-mysql容器中存放脚本文件的文件夹alertscripts创建一个脚本文件sendSMS.sh
vi sendSMS.sh
- 添加脚本内容如下。
#!/bin/bash
send_sms() {
## 替换成你自己的短信api接口
url='http://xxx.xx.xxx.xxx/api/ms/dm/sms/send'
content=$(urlencode "$1")
phone_number=$(urlencode "$2")
smsPsw='111@111'
smsUid='111'
response=$(wget -qO- "$url?content=$content&nodeld=2&phoneNumber=$phone_number&smsPsw=$s
if [ $? -eq 0 ]; then
echo 'SUCCESS'
else
echo 'FAIL'
fi
}
urlencode() {
# ...... awk ...... URL ......
echo -n "$1" | awk '{ gsub(/[^a-zA-Z0-9\/:._-]/, c); print }'
}
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <phone_number> <message>"
else
phone_number=$1
message=$2
send_sms "$message" $phone_number
fi
- 然后执行以下命令进行测试,能收到短信表示脚本无问题
./sendSMS.sh 181XXXXX "message content"
3.zabbix添加报警媒介
- 告警——媒介——创建媒介类型
1 )邮件配置
名称:随意填写
类型:脚本
脚本名称:填写你刚才创建的脚本名称
脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
2)短信配置
名称:随意填写
类型:脚本
脚本名称:填写你刚才创建的脚本名称
脚本参数:
{ALERT.SENDTO}
{ALERT.MESSAGE}
如下表示创建成功:
4.zabbix创建动作
以下只介绍邮件告警动作配置,短信动作配置同理,选择不同的报警媒介即可。
- 告警——动作——触发器动作——创建动作
1)动作配置
名称:随意
条件:根据自己的需求添加,比如选择“主机群组”等于“zabbix servers”的主机(群组是在配置主机时添加的)
2)操作配置
(1)操作
- 点击添加
- 选择发送的用户组和用户
- 仅送到:选择刚刚创建的报警媒介
- 勾选自定义消息类型内容
主题添加如下内容:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息添加如下内容:
告警主机:{HOSTNAME1}<br>
告警时间:{EVENT.DATE} {EVENT.TIME}<br>
告警等级:{TRIGGER.SEVERITY}<br>
告警信息: {TRIGGER.NAME}<br>
告警项目:{TRIGGER.KEY1}<br>
问题详情:{ITEM.NAME}:{ITEM.VALUE}<br>
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}<br>
事件ID:{EVENT.ID}
(2)恢复操作
- 点击添加
- 选择发送的用户组和用户
- 仅送到:选择刚刚创建的报警媒介
- 勾选自定义消息类型内容
主题添加如下内容:
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
消息添加如下内容:
告警主机:{HOSTNAME1}<br>
告警时间:{EVENT.DATE} {EVENT.TIME}<br>
告警等级:{TRIGGER.SEVERITY}<br>
告警信息: {TRIGGER.NAME}<br>
告警项目:{TRIGGER.KEY1}<br>
问题详情:{ITEM.NAME}:{ITEM.VALUE}<br>
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}<br>
事件ID:{EVENT.ID}
4.给用户添加报警媒介
- 用户——用户——点击需要添加报警媒介的用户——报警媒介——添加——选择对应的报警媒介类型——收件人:邮箱号或手机号,点击添加即可
- 给用户添加邮件报警
- 给用户添加短信报警
在仪表盘页面如果出现zabbix监控到服务器出现问题,则会触发邮件告警和短信告警动作,正常发送会显示绿色,如果没发送成功则是红色。
如下为收到告警邮件: