pinpoint實現告警推送至釘釘和微信群
前言
在前面的文章中,我們學習瞭如何通過java實現將訊息傳送到釘釘、和將訊息傳送到微信群聊。
基於上述基礎,我們今天來接入pinpoint的告警,傳送到釘釘群。
實操前準備
開始之前,推薦閱讀一下,官方的告警說明文件。
閱讀官方文件後,我們實際的來操作一遍。
按照官方說明,首先需要建立對應的使用者組和使用者,但是我們這裡開啟有異常:
通過後臺,pinpoint-web的日誌可以發現,這是由於沒有配置mysql表的原因。
步驟1-配置mysql表
首先,我們建立一個名為pinpoint的資料庫。
然後,匯入官方的指令碼,配置好需要的表。
匯入的所有表顯示如下:
匯入15張資料表後,我們需要修改pinpoint-web的jdbc.properties配置檔案。
配置好正確的資料庫和賬號密碼後,重啟pinpoint-web。
步驟2-介面配置使用者組和使用者
首先配置一個使用者組,然後在這個組下面新建一個使用者。
使用者這裡輸入id、使用者名稱、手機號、郵箱等資訊新增即可。
步驟3-新增應用的告警規則
配置完使用者後,接著我們配置對應應用的告警規則
這裡我針對testboot這個服務,配置了一個慢 請求告警,當慢請求大於5個時,就會觸發。
這裡的type選項指定告警的方式,可以是簡訊、郵件,或者兩者。
然後包含具體的告警指標,這裡我單純選擇的是Slow count,慢請求個數。
具體每個指標的含義,考慮後續再出一篇文章來作詳細解釋。
這篇主要以實現告警功能為目的,就不再深入了。
至此,告警規則就配置好了。
步驟4-改造原始碼思路分析
冷靜分析
pinpoint 採用Spring Batch框架來執行job,其中
一個Job有多個Step,每個step又包含一系列規定動作(read,process,write)。
介面上所有的可配置指標都是通過Checker計算出來的,我們的Slow Count的也不例外。
AlarmMessageSender是我們需要關注的告警介面,它有一個空的實現類,EmptyMessageSender。
本來打算直接在這個類裡面寫程式碼的,但轉念一想,還是算了,因為他沒有被spring管理,是直接new出來的,我們後面可能需要依賴spring的一些bean,避免用著不方便,所以還是自己寫一個類來實現把。
預設情況下,我們都只是使用不帶任何引數的@Autowired。
設定required引數為false,表示忽略當前要注入的bean,如果有直接注入,沒有跳過,不會報錯。
步驟5-進行原始碼改造
新建一個類,實現告警介面,原始碼我上傳到了github,需要的小夥伴,公眾號回覆釘釘,即可獲取。
寫完程式碼後,我們上傳編譯後的class檔案到WEB-INF/classes/com/navercorp/pinpoint/web/alarm目錄下:
由於我使用了一個內部類,所以一共有兩個class檔案。
改一下檔案許可權
chmod 777 ./DingTalkAndWechatMessageSender.class
chmod 777 ./DingTalkAndWechatMessageSender$DingResponse.class
在/WEB-INF/classes/pinpoint-web.properties配置中新增
web.ding.talk.url屬性配置,這個屬性就是釘釘的webhok地址。
當然你也可以寫具體的微服務地址,來進行更多的邏輯處理,這裡為了讓大家開箱即用,我將訊息直接推送給釘釘。
有了推送的url後,我們在applicationContext-web.xml中新增一個bean配置。
<bean id="dingTalkAndWechatMessageSender" class="com.navercorp.pinpoint.web.alarm.DingTalkAndWechatMessageSender" >
<property name="dingTalkUrl" value="#{pinpointWebProps['web.ding.talk.url'] ?: ''}"/>
</bean>
步驟6-測試驗證
檢視是否賦值成功:
呼叫業務介面,我偽造了一個慢請求介面
驗證日誌:
驗證釘釘訊息:
總結
如上,就是將pinpoint告警接入釘釘群的全部過程,若有任何疑問,歡迎來交流討論。
通過這篇文章,來複測以下,是否掌握了以下知識呢:
1、如何傳送訊息接入釘釘群聊。
2、如何編譯class增量釋出。(雖然並不是很推薦這種方式,但是為了提高效率所以這樣用了)
3、如何實現pinpoint的告警介面。
4、pinpoint告警類讀取配置檔案方式。
推送告警到微信群,就不再文章講述了,有需求的小夥伴可以自行研究實現。希望大家多多總結,提高自己。
歡迎來公眾號【俠夢的開發筆記】,回覆乾貨,領取精選學習視訊一份