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:/usr/games:/usr/local/games:/snap/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:/usr/games:/usr/local/games:/snap/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"
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发告警,因为有空格会被认为是第二个参数,我赶时间,没有想其它办法,就用"-" 代替空格了。不然会报错。