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

发布于:2024-04-28 ⋅ 阅读:(43) ⋅ 点赞:(0)

一、前提

  1. 已经搭建好zabbix-server
    在这里插入图片描述
  2. 在需要监控的mysql服务器上安装zabbix-agent2
    在这里插入图片描述
    上述安装步骤参考我的上篇文章:通过docker容器安装zabbix6.4.12图文详解(监控服务器docker容器)

二、告警配置

1.邮件告警脚本配置

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

如图所示:
在这里插入图片描述

  1. 添加脚本内容。注,该文件运行的时候在容器内部,不能使用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

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

2.短信告警脚本配置

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

  1. 进入zabbix-server-mysql容器中存放脚本文件的文件夹alertscripts创建一个脚本文件sendSMS.sh
vi sendSMS.sh
  1. 添加脚本内容如下。
#!/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. 然后执行以下命令进行测试,能收到短信表示脚本无问题
./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)操作

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

主题添加如下内容:

故障{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.给用户添加报警媒介

  1. 用户——用户——点击需要添加报警媒介的用户——报警媒介——添加——选择对应的报警媒介类型——收件人:邮箱号或手机号,点击添加即可
    在这里插入图片描述
  2. 给用户添加邮件报警
    在这里插入图片描述
  3. 给用户添加短信报警

在这里插入图片描述

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

在这里插入图片描述

如下为收到告警邮件:

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到