沒有監控 就沒有眼睛。 除了k8s的基本監控外(pod運行狀況、占用內存、cpu)。為了對微服務項目中的(1)各種參數線程池、QPS、RT、業務指標(2)系統負載、thread、mem、class、tomcat、gc、等jvm指標進行監控
采用 promethus 對spring boot業務埋點進行監控。 因為k8s對promethus很好的支持。同時spring boot 集成client很方便。對spring boot actuator 的metrics指標有很好的集成
所以采用了基於 k8s的 promethus job 對業務指標采取拉模式收集。 同時由於 promethus 支持 grafana前端UI界面。 所以整個架構簡單采用
這里采用了pull模式。對application性能有一定影響。如果對定時任務短時間指標(promethues來不及拉取) 或者性能比較高 采用 push模式
1、spring boot 集成 promethus 可參考 https://cloud.tencent.com/developer/article/1096692 具體使用不詳細介紹
主要是 promethus四種類型的使用 https://prometheus.io/docs/concepts/metric_types/
- counter 只增不減的計數器 適合:qps 等統計
- guage 有增有減的變化 適合: cpu 使用率等
- histogram 條形直方統計圖 適合: 請求耗時 響應大小等
- summary 和直方統計圖相似,可以自定 分數位,適合: 請求耗時 響應大小等
2、grafana 配置
以線程池監控為例
(1) 儀表盤配置:
a、選擇數據源 : Prometheus
b、 編寫promQL: 主要對線程池 線程池數目、激活數目、隊列中數目進行統計平均值,接下來根據指標自定義報警策略
(2)報警配置:
c、配置報警條件: now 到 5 分鍾前: 查詢條件(B)即隊列中數目 超過 100 則觸發報警
d、配置報警通知:配置sender, 釘釘推送通知
當監控指標異常時 會觸發釘釘報警, 開發人員會得到 通知 然后緊急處理。