发告警到钉钉上

1. 钉钉上的设置

钉钉拉一个讨论组,至少要三人。

钉钉上点开讨论组的  “群设置”  --> "智能群助手"  --> "添加机器人" --> “添加机器人”右边的三个点 --> "自定义"(通过webhook)接入自定义服务  --> "添加"

在弹出来的设置页面里面:

  给机器人起名字;

  记录下Webhook的地址,这个地址,是接收告警的接口;

  “安全设置“,勾选自定义关键词。填关键字进去(例如: storage ),这个应该是验证用的。就是发告警的时候,内容里面,要含有这个关键字(storage)。

2. 服务器上通过shell脚本发告警

粘上我抄过来的代码(略有改动),比如这个脚本叫 postToDingding.sh

#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
data=$1
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx'     ## 这里填第一步记录的地址
           -H 'Content-Type: application/json'
              -d '{     "msgtype": "text",
                        "text": {
                                "content": "'$data'"
                             }
                   }'

上面的脚本,是专门发给钉钉的一个接口,再写一个信息收集的脚本,调用这个脚本,就可以发送消息了。我还是给个例子,因为我遇上点小坑:

#!/bin/bash
 
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
thisIp=`ifconfig |grep "inet "|grep "10.3."|awk '{print $2}'`
plat=`grep miner minerIp.txt|grep "$thisIp"|awk '{print $1}'`

if ! ./abc.sh storage viplist > /dev/null
then
        ./postToDingding.sh "storage:${plat}_${thisIp}_miner_execute_error"    ## 脚本postToDingding.sh 后面跟要发送的消息,不能带空格
        exit
fi

for i in `bcd.sh`
do
        if ! echo $i|grep ',' > /dev/null
        then    
                ./postToDingding.sh "storage:${plat}-${i}-is-only-one-node"
        fi
        for j in `echo $i|sed -e 's/["//g' -e 's/"\,"/ /g' -e 's/"]//g'`
        do
                if ! curl $j > /dev/null 2>&1
                then
                        ./postToDingding.sh "storage:${plat}-${j}-connect-error"
                        exit
                fi
        done
done

上面这个脚本不可用。因为环境有差异,我想表达的是,shell发告警,因为有空格会被认为是第二个参数,我赶时间,没有想其它办法,就用"-" 代替空格了。不然会报错。

原文地址:https://www.cnblogs.com/dennnnnis/p/14240257.html