zabbix6.4告警配置(短信告警和邮件告警),脚本触发

目录

一、前提

  1. 已经搭建好zabbix-server
  2. 在需要监控的mysql服务器上安装zabbix-agent2

    上述安装步骤参考我的上篇文章:通过docker容器安装zabbix6.4.12图文详解(监控服务器docker容器)

二、告警配置

1.邮件告警脚本配置

  1. 进入zabbix-server-mysql容器内部
powershell 复制代码
docker exec -it zabbix-server-mysql bash
  1. 进入zabbix-server-mysql容器中存放脚本文件的文件夹
powershell 复制代码
cd /usr/lib/zabbix/alertscripts
  1. 在该文件夹下创建.sh的脚本文件
powershell 复制代码
vi sendmail.sh 

如图所示:

  1. 添加脚本内容。注,该文件运行的时候在容器内部,不能使用curl调用url接口,需要使用wget

脚本内容如下:

powershell 复制代码
#!/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
  1. 添加完成后 :wq保存退出,并给文件赋予权限,文件才能运行,这边直接给文件赋予执行权限
powershell 复制代码
chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh  #文件赋予执行权限
  1. 执行文件测试,看是否能收到邮件。能收到邮件说明脚本没有问题
powershell 复制代码
./sendmail.sh  xxx@xxx.com "email title" "email content"

2.短信告警脚本配置

前面步骤跟邮件告警一样,参考上文内容,下面直接从创建脚本开始。

  1. 进入zabbix-server-mysql容器中存放脚本文件的文件夹alertscripts创建一个脚本文件sendSMS.sh
powershell 复制代码
vi sendSMS.sh
  1. 添加脚本内容如下。
powershell 复制代码
#!/bin/bash

send_sms() {
	## 替换成你自己的短信api接口
    url='http://xxx.xx.xxx.xxx/api/ms/dm/sms/send'
    content=$(urlencode "$1")
    phone_number=$(urlencode "$2")
    smsPsw='7121@byd'
    smsUid='7121'

    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
  1. 然后执行以下命令进行测试,能收到短信表示脚本无问题
powershell 复制代码
./sendSMS.sh 181XXXXX "message content"

3.zabbix添加报警媒介

  1. 告警------媒介------创建媒介类型

1 )邮件配置

名称:随意填写

类型:脚本

脚本名称:填写你刚才创建的脚本名称

脚本参数

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

2)短信配置
名称:随意填写

类型:脚本

脚本名称:填写你刚才创建的脚本名称

脚本参数

{ALERT.SENDTO}

{ALERT.MESSAGE}

如下表示创建成功:

4.zabbix创建动作

以下只介绍邮件告警动作配置,短信动作配置同理,选择不同的报警媒介即可。

  1. 告警------动作------触发器动作------创建动作

1)动作配置

名称:随意

条件:根据自己的需求添加,比如选择"主机群组"等于"zabbix servers"的主机(群组是在配置主机时添加的)

2)操作配置
(1)操作

  • 点击添加
  • 选择发送的用户组和用户
  • 仅送到:选择刚刚创建的报警媒介
  • 勾选自定义消息类型内容

主题添加如下内容:

powershell 复制代码
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

消息添加如下内容:

powershell 复制代码
告警主机:{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)恢复操作

  • 点击添加
  • 选择发送的用户组和用户
  • 仅送到:选择刚刚创建的报警媒介
  • 勾选自定义消息类型内容
    主题添加如下内容:
powershell 复制代码
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

消息添加如下内容:

powershell 复制代码
告警主机:{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.给用户添加报警媒介

  1. 用户------用户------点击需要添加报警媒介的用户------报警媒介------添加------选择对应的报警媒介类型------收件人:邮箱号或手机号,点击添加即可
  2. 给用户添加邮件报警
  3. 给用户添加短信报警

在仪表盘页面如果出现zabbix监控到服务器出现问题,则会触发邮件告警和短信告警动作,正常发送会显示绿色,如果没发送成功则是红色。

如下为收到告警邮件:

相关推荐
fo安方2 天前
运维的利器–监控–zabbix–第三步:配置zabbix–中间件–Tomcat–步骤+验证
运维·中间件·zabbix
cui_win3 天前
【基础】Golang语言开发环境搭建(Linux主机)
linux·golang·运维开发
AWS官方合作商15 天前
告别停机烦恼!AWS EC2实例升级的“零中断”实战方案
云计算·运维开发·aws
广目软件16 天前
GM DC Monitor v2.0 卸载教程
服务器·网络·zabbix·prometheus
fo安方17 天前
运维的利器–监控–zabbix–第二步:建设–部署zabbix agent5.0--客户端是windows&centos系统--实操记录gys
运维·windows·zabbix
GineLee18 天前
吉林大学软件工程章节测试答案-第八章
经验分享·软件工程·运维开发·改行学it
鸡鸭扣24 天前
25年春招:米哈游运维开发一面总结
运维·面试·求职招聘·运维开发·面经·sre·米哈游
武子康24 天前
Java-43 深入浅出 Nginx - 基本配置方式 nginx.conf Events块 HTTP块 反向代理 负载均衡
java·后端·nginx·http·负载均衡·运维开发
mountorWeb_011 个月前
你的网站真的安全吗?如何防止网站被攻击?
安全·运维开发
运维成长记1 个月前
Zabbix 高可用架构部署方案(2最新版)
mysql·架构·zabbix