基於釘釘服務簡單監控


對於互聯網公司。監控就像自己的眼睛,沒有眼睛的人,面臨的災難可想而知,所謂無監控不調優,目前的監控總共分幾類:

一類 服務級別監控:(服務是否可用,磁盤是否足夠,cpu是否高)這個創業公司都是直接用雲的賦能服務,目前簡單的監控,容器化后,k8s幫我做了很多

二類 業務級別監控:(QPS、RT、失敗比例、錯誤日志等)業務級別的監控,一般大的公司都有針對自己的特點對開源框架的組合。之前公司采用的是:

                                    監控埋點日志->KAFKA->influshdb-> 前端grafana展示 。 

目前創業公司,時間和資源有限,就在考慮一種簡單的能快速上線的方案。下面采用的就是簡單的基於釘釘的監控:

  首先平時一直在用釘釘,比較贊的地方,釘釘提供了非常方便可以定義的釘釘機器人,可以通過webhook方式推送消息和格式。

  具體可參考: https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1

具體實現:

簡單版本實現: 通過每個服務接口異常進行捕獲,對異常消息進行處理同時采用線程池(單線程:純內存操作不是IO操作)方式推送消息到本地隊列,隊列限制大小(可配置),避免無限制推送

然后推送模塊定時按一定頻率(可配置)獲取消息。然后推送消息到釘釘機器人。引入方式各個服務接入jar

后續版本擴展

        是否可以同樣多種推送方式(郵件、短信、釘釘)

        是否支持多種存儲消息方式(內存隊列、MQ、Redis)       

        是否可以接入簡單的統計(方法執行時間、方法訪問量、超時告警等)

1、整體流程

2、實現細節(Spring boot接入)

     具體源碼就不公開了

     1、利用spring boot的自動注入功能。在spring.factories 中增加啟動注入

     2、利用ConditionalOnProperty注解中增加配置 只有注解啟用時候才會加載成功

@Configuration
@EnableConfigurationProperties(DingtalkProperties.class)
@ConditionalOnProperty(value = "monitor.alert.dingtalk.enble",havingValue ="true")

    3、DingtalkProperties中配置參數

        配置參數:

1 monitor:
2   alert:
3    dingtalk:
4      enble: true
5      phone: [xxxx,xxxx]
6      url: https://oapi.dingtalk.com/robot/send? access_token=

 

        這樣服務接入的時候更靈活,簡單~

參數名

可選值

默認值

描述

示例

 

enable

true| false

false

true 啟用

false 禁用

如上

phone

手機號

通知人手機號,多個人用逗號隔開

如上

url

url地址

通知的地址,必填項

 

如上

level

short|full

short

通知信息是否縮短

short:通知內容最長500個字符

full:通知內容不做縮短

建議默認值

capacity

整數

100

存儲異常信息個數,超過閾值不進行推送

建議默認值

pull-interval

整數

5000

報警時間間隔(ms)

可自定義修改

at-all

true| false

false

組內所有都會被通知

建議默認值

env

字符串

Spring激活環境

dev|test|pro等

可自定義修改

applicationName

字符串

Spring應用名稱

order-service|user-service等

可自定義修改

      4、接入方式(jar包引入)

           告警通知需要滿足條件:

    •  @AccessService注解的類或方法中拋出的異常
    •   配置文件中啟用了監控(即enable:true)

       5、通知效果

             

 

             

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM