您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何使用shell操作釘釘機(jī)器人實(shí)現(xiàn)告警提醒,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
我們知道,之前的運(yùn)維告警多通過mail 等方式通知到相應(yīng)的人員,難以實(shí)現(xiàn)隨時隨地的查看。隨著手機(jī)APP的發(fā)展,很多告警開始發(fā)送到IM軟件上去。目前比較常用的是發(fā)送到微信和釘釘上,今天我們將重點(diǎn)放在釘釘上。群機(jī)器人是釘釘群的高級擴(kuò)展功能,群機(jī)器人可以將第三方服務(wù)的信息聚合到群聊中,實(shí)現(xiàn)自動化的信息同步。借助釘釘機(jī)器人,通過官方提供的API,可以很方便的post數(shù)據(jù)到相應(yīng)的接收人 。群機(jī)器人支持Webhook協(xié)議的自定義接入,支持更多可能性,例如:你可將運(yùn)維報警通過自定義機(jī)器人聚合到釘釘群實(shí)現(xiàn)提醒功能。
Shell 腳本語言是實(shí)現(xiàn)Linux系統(tǒng)管理及自動化所必須的重要工具。熟練地編寫Shell語言可以提升運(yùn)維人員的工作效率,適應(yīng)復(fù)雜的工作環(huán)境。
在本文,我們聚焦通過shell腳本語言實(shí)現(xiàn)借助釘釘機(jī)器人發(fā)送告警信息。
1: 了解更多群機(jī)器人的信息,大家可登入官網(wǎng)學(xué)習(xí)
https://ding-doc.dingtalk.com/doc
2.給自己的機(jī)器人起個好聽的名字
操作如下:
3.使用命令行工具curl
curl是一個命令行工具,通過指定的URL來上傳或下載數(shù)據(jù),并將數(shù)據(jù)展示出來。curl中的c
表示client,而URL,就是URL。
3.1 與curl一起使用的協(xié)議,最多的還是HTTP
在每一個HTTP請求中,都有一個對應(yīng)的方法,常用的方法有:GET
、POST
、HEAD
和PUT
。如果在一個curl命令中不指定具體的方法,那么默認(rèn)的就是使用GET
方法。對于其它的方法,可以在curl命令中指定:
method | option |
---|---|
POST | -d或-F |
HEAD | -I |
PUT | -T |
POST
是HTTP中向服務(wù)端提交數(shù)據(jù)的一種方法。在瀏覽器中,可以在表單中填寫完數(shù)據(jù)后,瀏覽器就會默認(rèn)將填寫的數(shù)據(jù)使用key=value
串的形式進(jìn)行轉(zhuǎn)化。在curl中,我們可以使用-d
或--data
選項來指定具體的數(shù)據(jù)。
3.2 釘釘使用curl工具主要相關(guān)的兩個參數(shù)
參數(shù)(短形式) | 參數(shù)(長形式) | 解釋 | 具體描述 |
-d | --data | HTTP POST data (H) | 把指定的數(shù)據(jù)發(fā)送到服務(wù)器上. |
-H | --header | Custom header to pass to server (H) | 當(dāng)使用POST方法提交數(shù)據(jù)時,對于提交的數(shù)據(jù)主要有如下四種形式:
Content-Type是一個Header,如果不指定的話,默認(rèn)使用application/x-www-form-urlencoded形式傳輸數(shù)據(jù),當(dāng)需要使用別的形式進(jìn)行數(shù)據(jù)傳輸?shù)脑?,需要指定Header。 |
3.3 調(diào)用格式(案例)
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \ -H 'Content-Type: application/json' \ -d '{"msgtype": "text", "text": { "content": "我就是我, 是不一樣的煙火" } }'
測試過程中,請將上面命令直接復(fù)制到命令行,再將xxxxxxxx替換為真實(shí)access_token。
4.不一樣的markdown類型
官網(wǎng)中除markdown類型,其它的消息類型的 測試?yán)樱_本) 都可以直接在shell中演示
官網(wǎng)markdown類型的測試案例
{ "msgtype": "markdown", "markdown": { "title":"杭州天氣", "text": "#### 杭州天氣 @156xxxx8827\n" + "> 9度,西北風(fēng)1級,空氣良89,相對溫度73%\n\n" + "> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\n" + "> ###### 10點(diǎn)20分發(fā)布 [天氣](http://www.thinkpage.cn/) \n" }, "at": { "atMobiles": [ "156xxxx8827", "189xxxx8325" ], "isAtAll": false } }
在shell中執(zhí)行報錯信息,錯誤信息為:
{"errcode":40035,"errmsg":"缺少參數(shù) json"}
報錯原因是 "text" 欄位對應(yīng)的 value 值中的 “+” 運(yùn)算符導(dǎo)致,將中間的
" +
"
刪除。
即可執(zhí)行代碼更新為:
{ "msgtype": "markdown", "markdown": { "title":"杭州天氣", "text": "#### 杭州天氣 @156xxxx8827\n> 9度,西北風(fēng)1級,空氣良89,相對溫度73%\n\n> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\n> ###### 10點(diǎn)20分發(fā)布 [天氣](http://www.thinkpage.cn/) \n" }, "at": { "atMobiles": [ "156xxxx8827", "189xxxx8325" ], "isAtAll": false } }
執(zhí)行OK,錯誤消失。
執(zhí)行情況如下:
成功收到的信息,內(nèi)容截圖如下:
5. 將釘釘機(jī)器人代碼放到文件中,方便調(diào)用
例如:創(chuàng)建用于監(jiān)控當(dāng)QQOrder_ERP集群的VIP漂移時,調(diào)用用來發(fā)送釘釘告警的可執(zhí)行文件ddalarm.sh。
其主要代碼如下:
#!/bin/bash webhook='https://oapi.dingtalk.com/robot/send?access_token=34XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' cluster='QQOrder_ERP' host=`hostname -I | awk '{print $1}'` vip=$1 function SendMsgToDingding() { curl $webhook -H 'Content-Type: application/json' -d " { 'msgtype': 'text', 'text': { 'content': '集群名稱:$cluster\n告警信息:虛擬IP<$vip>已漂移至節(jié)點(diǎn)<$host>,請注意\n' }, 'at': { 'isAtAll': true } }" } SendMsgToDingding
此測試文件,調(diào)用執(zhí)行時需要傳入一個參數(shù)(VIP)。
觸發(fā)執(zhí)行,案例如下:
手機(jī)釘釘收到的告警信息
關(guān)于“如何使用shell操作釘釘機(jī)器人實(shí)現(xiàn)告警提醒”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。