运维利器:钉钉机器人脚本告警(Linux Shell 篇)

 

 

写在前面的话

 

目前换了几家公司,且最近几家都是以钉钉做为公司 OA 聊天工具,总的来讲仍是很不错的。最近去了新公司,因为公司之前没有运维,因此监控,作自动化等方面都没有实施,恰逢这个机会把最近作的关于用到钉钉机器人的一些东西写出来,但愿可以帮到和我有一样需求的兄弟,少走一些弯路!web

目前我的钉钉机器用在了两个方面:shell

一是 Zabbix 监控告警,使用的是 Python 编写的脚本,且目前也在写关于 Zabbix 的文档,有兴趣的小伙伴能够到我主页看看!json

二是 Jenkins 自动发布,在构建后执行 Shell 过程当中加入一系列的钉钉机器人消息提醒!bash

 

 

添加钉钉机器人

 

目前我的已知的钉钉机器人只能存在于钉钉群,钉钉群的建群需求是至少 3 人,固然,你建群以后能够把其它人踢出去,我就是这样干的,谁让咱们只有两我的呢 ...app

 

【1】首先,咱们进入一个钉钉群建立咱们的机器人:运维

 

 

 【2】目前钉钉已经存在了一些项目的机器人,你能够根据本身的选,固然,咱们本次就用自定义的,添加一个名为 HELLO ROBOT 机器人:curl

 

 

【3】 机器人添加完成,会生成一个 webhook,这是你上传数据接口,同时这个接口也表明着该机器人的身份标识,至关重要!ide

 

【4】添加完成后,机器人会在群里发送一条消息,还有点阔爱:工具

 

 

 

发送消息脚本(Linux Shell)

 

对于消息在钉钉群中的显示格式以及更多的关于钉钉机器人的开发文档说明,能够查看官方给的开发者文档:post

https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.oAAN7T&treeId=257&articleId=105733&docType=1

如下是 Linux Shell 脚本,我的选择的是钉钉消息的 ActionCard 格式: 

#!/bin/bash 

function SendMessageToDingding(){ 
    Dingding_Url="这就是刚刚机器人的 webhook xxxxxxxx" 
    # 发送钉钉消息
    curl "${Dingding_Url}" -H 'Content-Type: application/json' -d "
    {
        \"actionCard\": {
            \"title\": \"$1\", 
            \"text\": \"$2\", 
            \"hideAvatar\": \"0\", 
            \"btnOrientation\": \"0\", 
            \"btns\": [
                {
                    \"title\": \"$1\", 
                    \"actionURL\": \"\"
                }
            ]
        }, 
        \"msgtype\": \"actionCard\"
    }"
} 

Subject="$1" 

Body="$2"

SendMessageToDingding $Subject $Body

 

备注:咱们这里传递了两个参数,固然,你也能够根据本身的需求选择消息类型,定制参数,都是 Shell 的基础知识,比较简单! 

最后,咱们能够放在机器上面测试一下,下面是个人效果: 

 

注意,因为 Linux 多行的值赋值给一个变量的时候,换行符须要转义,还有就是 Zabbix 触发动做里面内容必定不定有空格,这都是 shell post json 的大坑! 

 

Zabbix 监控告警的效果:

 

 

小结

 

使用 Shell 发送很简单,其实就是提交 JSON 数据,可是 Shell 提交 JSON 感受有点恶心,后续我会把 Python 脚本脚本也发出来,但愿可以帮到各位! 

相关文章
相关标签/搜索