zabbix添加shell脚本支持markdown格式的告警消息,支持docker环境

1、docker ps 查看容器运行情况

    图中43d即为zabbix server 的容器。

2、查看容器与主机的卷映射

命令: docker inspect 43d

   本例中的对应关系为 /etc/zabbix/zabbix_server:/etc/zabbix。即:容器中的配置文件夹映射到本地路径为:/etc/zabbix/zabbix_server

3、编辑zabbix告警shell脚本,放入zabbix映射到本地的目录。

本例: vim /etc/zabbix/zabbix_server/notify.sh

notify.sh为告警脚本名称。

#!/bin/bash
to=$1
subject=$2
text=$3
{
  curl 'https://oapi.dingtalk.com/robot/send?access_token=2c6e4f6b9510a8fd4e248c40da24783563f7c1b9712c123dsfaserdasxdfa' \
  -H 'Content-Type: application/json' \
  -d '
  {
    "msgtype": "markdown", 
    "markdown": {
      "title": "'"$subject"'",
      "text": "'"$text"'"
    },
    "at": {
      "atMobiles": [
        "'"$to"'"
      ],
      "isAtAll": false
    }
  }'
}

   钉钉机器人提取通过钉钉申请好,在上面脚本中替换成自己已经申请好的钉钉机器人地址。

给脚本添加可执行权限

chmod +x /etc/zabbix/zabbix_server/notify.sh

4、编译zabbix 配置文件,修改配置文件中AlertScriptsPath字段定义的告警脚本的路径。

AlertScriptsPath=/etc/zabbix    #docker 容器/etc/zabbix地址映射到本地/etc/zabbix/zabbix_server,这里需要选择容器中的对应地址。

5、修改完成后,重启容器

docker restart 43d

6、打开zabbix网页添加告警。

告警-媒介-创建媒介类型,脚本名称为配置目录下的脚本的名称。

添加三个脚本参数:

{ALERT.SENDTO}            对应脚本中to=$1,指发送给钉钉群的人

{ALERT.SUBJECT}         对应脚本中的subject=$2,指的是通知消息的主题

{ALERT.MESSAGE}       对应脚本中的text=$3,指的是通知消息的内容

7、编辑消息模板,自定义markdown格式的消息。

消息模板如下:

问题模板

主题:发生故障: {EVENT.NAME}

消息:#### <font face='微软雅黑' color=#FF0000>【故障告警】  {EVENT.NAME}</font>

---------

- **发生时间**: {EVENT.DATE}   {EVENT.TIME}  

- **故障名称**:{EVENT.NAME}

- **相关主机**: {HOST.NAME}

- **故障级别**: {EVENT.SEVERITY} 

- **故障详情**:{ITEM.NAME}:{ITEM.VALUE}

- **当前状态**:{TRIGGER.STATUS}:{ITEM.VALUE1}

- **Operational data**: {EVENT.OPDATA} 

- **Original problem ID**: {EVENT.ID}

{TRIGGER.URL}

问题恢复模板

主题:故障已恢复 {EVENT.DURATION}: {EVENT.NAME}

消息:#### <b> <font face='微软雅黑' color=#008800><b>【告警恢复】</b>{EVENT.NAME}</font> </b>

---------

- **故障恢复时间**:{EVENT.RECOVERY.DATE}  {EVENT.RECOVERY.TIME}   

- **故障名称**: {EVENT.NAME}

- **持续时间**: {EVENT.DURATION}

- **相关主机**: {HOST.NAME}

- **告警级别**: {EVENT.SEVERITY}

- **恢复详情**:{ITEM.NAME}:{ITEM.VALUE}

- **当前状态**:{TRIGGER.STATUS}:{ITEM.VALUE1}

- **Original problem ID**:{EVENT.ID}

{TRIGGER.URL}  

效果示例:

 

8、绑定告警触发器动作

在触发器的操作选项中,添加指定的用户和送到的媒介。

 

9、在用户中绑定告警媒介

 

10、在告警-媒介中进行测试

  如果绑定的机器人没收到消息,请检查钉钉机器人的关键词是存在?在zabbix配置中是否绑定成功了用户及动作动作?

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Zabbix 是一款开源的企业级监控软件。在 Zabbix 中,可以设置各种告警方式,其中包括钉钉告警。本文将介绍如何编写钉钉的 Shell 告警脚本。 首先,我们需要在钉钉中创建一个机器人。在钉钉群中,点击右上角的设置按钮,选择机器人管理,然后点击创建机器人。选择自定义机器人,设置机器人名称和头像,然后复制 Webhook 地址。 接下来,我们需要编写 Shell 脚本。可以使用任何编辑器,比如 vim,nano 或者 gedit。以下是一个简单的 Shell 脚本示例: ```bash #!/bin/bash # 钉钉机器人 webhook 地址 url="https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXX" # 消息内容 message="$1" # 发送 POST 请求 curl -H "Content-Type: application/json" -X POST -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"$message\"}}" $url ``` 在脚本中,首先设置了钉钉机器人的 Webhook 地址。然后获取了消息内容,该内容作为脚本的第一个参数传入。最后,使用 curl 命令发送 POST 请求,将消息内容作为 JSON 格式发送给钉钉机器人。 现在,将脚本保存为 dingding.sh,并将其放置在 Zabbix 的 alertscripts 目录中。该目录通常位于 /usr/lib/zabbix/alertscripts。然后,将脚本的权限设置为可执行: ```bash chmod +x /usr/lib/zabbix/alertscripts/dingding.sh ``` 接下来,在 Zabbix 中创建一个新的媒介类型。在 Zabbix 管理界面中,选择 Administration -> Media types。然后点击 Create media type 按钮。 在弹出窗口中,输入以下信息: - Name: 钉钉告警 - Type: Script - Script name: dingding.sh - Script parameters: {ALERT.MESSAGE} 然后点击 Add 按钮进行保存。 最后,在 Zabbix告警动作中,选择钉钉告警媒介类型,并将钉钉机器人 Webhook 地址作为参数传入。现在,当 Zabbix 监控出现问题时,将会通过钉钉机器人发送告警消息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值