zabbix+shell脚本钉钉机器人报警

内容原创,禁止转载!

效果图如下:

jenkins

自定义警报提示

自定义告警脚本在zabbix_server.conf中配置,默认为: AlertScriptsPath=/usr/lib/zabbix/alertscripts
警报脚本在Zabbix服务器上执行。 这些脚本位于服务器配置文件中定义的目录中AlertScriptsPath.

这是一个示例警报脚本:

1
2
3
4
5
#!/bin/bash
to=$1
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" "${to}" >>/tmp/mail.log 2>&1

Zabbix-Server 在调用脚本的时候,会传递三个变量参数给脚本作为位置参数:$1, $2, $3。 其中:$1 表示收件人,$2 表示主题,$3 表示内容。

配置

选择 报警媒介类型,创建自定义告警方式,
Type 选择 Script,Script name 指定自定义的告警脚本,
Script parameters 一般设置如下三个:

  • {ALERT.SENDTO}
  • {ALERT.SUBJECT}
  • {ALERT.MESSAGE}
    jenkins
    其他配置省略
    shell+钉钉机器人脚本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #!/bin/bash
    #date:2017-12-14
    #by wang.t
    #Revision: 1.0
    # Email:837479851@qq.com
    # Website:idcsec.com
    LOGFILE="/tmp/dingding.log"
    :>"$LOGFILE"
    exec 1>"$LOGFILE"
    exec 2>&1

    url="http://127.0.0.1/zabbix"
    CURL="/usr/bin/curl"
    to=$1
    subject=`echo $2 | tr '\r\n' '\n'`
    body=`echo $3 | tr '\r\n' '\n'`
    ${CURL} 'https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXX' \
    -H 'Content-Type: application/json' \
    -d """
    {
    \"msgtype\": \"markdown\",
    \"markdown\": {
    \"title\":\"${subject}@18******5\",
    \"text\": \"${body}\"
    },
    \"at\": {
    \"atMobiles\": [
    \"18*******5\",
    ],
    \"isAtAll\": false
    }
    }"""

Github:https://github.com/Hwting/script/blob/master/zabbix_dingding.sh
测试测试 zabbix_dingding.sh “” 2 3

动作设置

到配置-》动作-》创建动作(触发器)

zabbix报警消息模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
标题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}

告警IP:{HOST.IP}

告警时间:{EVENT.DATE} {EVENT.TIME}

等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

持续时间:{EVENT.AGE}

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

事件ID:{EVENT.ID}
`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
标题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}

告警IP:{HOST.IP}

恢复时间:{EVENT.DATE}{EVENT.RECOVERY.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

持续时间:{EVENT.AGE}

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

事件ID:{EVENT.ID}