老司机的应用级监控——spring?actuator
http://mt.sohu.com/20160824/n465783118.shtml
************************************************
?
1什么是spring actuator?
這是一個研發老司機與運維同學都會非常喜歡的東西,隨著點融集團的擴張,點融網的業務越來越復雜、服務越來越多,不論是微服務還是SOA都會大大加重運維的負擔。這時在應用層提供統一、強大的監控接口對于自動化運維來講就顯得非常重要!
對于研發來講,可以在應用啟動后拿到應用的各種數據,非常便于調試應用、分析應用的運行狀況,并且不需要研發去實現這些監控功能。
對于運維來講,可以監控應用的健康信息、統計應用的瞬時信息。發現應用掛掉了、發現瞬時信息不正常都可以發送報警信息, 也可以將信息拉到監控系統的數據系統中,再展示到漂亮的UI上實時監控應用的運行狀態。這些actions 無疑將會大大保證系統的整體質量。
而集成了actuator的springboot應用會在約定的endpoints上暴露自己應用的內部信息,又強大又統一標準,滿足復雜分布式系統的監控需求,一些endpoints簡介如下:
| Path | Deion |
| health | 展示系統的各種組件運行狀態、硬盤使用狀況 |
| metrics | 統計系統當前的一些瞬時信息,如:該系統接收了多少個請求、cache命中率、mq中有多少條信息待處理、CPU使用率、內存占用情況 等,后面會有更加詳細的介紹。 |
| dump | 當前系統中線程的詳細信息 |
| env | 展示系統變量 和 springboot的應用變量 |
| trace | 顯示最近的http請求的request、response對(默認最多緩存100條) |
| autoconfig | 展示所有auto-configuration候選者及它們被應用或未被應用的原因 |
| info | 顯示應用自定義的信息:如該應用的聯系人、名稱、版本等 |
| configprops | 顯示所有被@ConfigurationProperties mark的Bean的信息列表 |
| mappings | 顯示所有@RequestMapping mark 的url list |
| shutdown | 允許以POST方式關閉應用 |
| beans | 顯示該應用中所有Spring Beans的完整信息,包括依賴了哪些bean、是singleton還是prototype |
研發會重點關注綠色的五項、而運維更關注深綠色的兩項,其他項筆者暫時沒有發現有特別的用處...
2如何在springboot應用中enable actuator?
compile
'org.springframework.boot:spring-boot-starter-actuator:1.3.6.RELEASE'
3自定義已有的endpoints
1) 每個endpoint都可以在application.properties里面用 endpoints.[endpoint].[id|sensitive|enabled]來重定義其默認值。
例如:
?這樣就將autoconfig這個endpoint的path修改為了auto_cfg,本著約定優于配置原則,沒有特殊需求,筆者不建議做此類修改。
2) 自定義 /health endpoint
當springboot應用跑起來之后,你可以通過訪問該接口獲得應用的健康狀態。
例如,圖片中的 “ status:"UP" ” 即表明應用的健康狀態,diskSpace 當中的單位為bytes. 表明了該應用目前硬盤的健康狀態:
紅色箭頭為我在health endpoint中自定義的 rabbitMQ healthCheckIndicator. 用于檢查我的應用所依賴的rabbitMQ的健康狀態。具體實現方式如下:
您需要實現HealthIndicator 接口或者繼承AbstractHealthIndicator
?
3) 自定義 /metrics endpoint
正如一的表格當中所講的, metrics是最重要的endpoint之一。
?
紅色箭頭所指向兩個gauge指標是我fake的一個queue所對應有幾個consumer, 有幾條還在queue中未被消費的消息數量,具體自定義方式如下:
?
如果想要自定義一些metrics, 如api的訪問次數、消息數量成功處理次數、消息處理失敗次數則可以自定義如下,也會展示在metrics接口中:
?
4) 自定義 /info endpoint 在application.properties中, 添加自定義字段,如下
?
訪問效果:
?
4創建一個新的endpoint
您需要實現Endpoint 接口或者繼承AbstractEndpoint。
?
訪問效果:
?
?
還有其他的一些自定義,開發可以不用特別關心 。
5非Springboot的Spring應用, 集成spring actuator
添加依賴:
compile('org.springframework.boot:spring-boot-actuator'){ exclude group: 'org.springframework.boot',
module:'spring-boot-starter-logging'}
1) 使用 AnnotationConfigWebApplicationContext :
并在 Spring初始化config bean的上面添加@EnableAutoConfiguration 即可。詳情見附錄3。
2) 使用 XML 方式的nonboot - spring 應用
在任一Spring生命周期的Component bean上 添加@EnableAutoConfiguration 即可。
也可以@Autowire 這些Endpoint自定義訪問路徑。詳情見附錄4
術語解釋:
| 術語 | 描述 |
| Gauge | Gauge代表一個度量的即時值。當你開汽車的時候,當前速度是Gauge值。你測體溫的時候,體溫計的刻度是一個Gauge值。當你的程序運行的時候,內存使用量和CPU占用率都可以通過Gauge值來度量。 |
| Counter | Counter是一個AtomicLong實例,可以增加或者減少值。例如,可以用它來計數隊列中加入的Job的總數、可以統計api總計的訪問次數。 |
附錄:
集成springboot actuator到非springboot spring應用中 : https://stackoverflow.com/questions/26913087/use-spring-boot-actuator-without-a-spring-boot-application
本文所用的springboot源碼: https://github.com/Agileaq/springboot-actuator
非springboot的annotationConfig spring web應用源碼: https://github.com/Agileaq/nonboot-actuator-example
非springboot的xml base web應用源碼: https://github.com/Agileaq/nonboot-xml-spring-actuator
English version of Spring Actuator introduction: http://www.baeldung.com/spring-boot-actuators
黑幫文章——神荼之眼監控系統(后臺回復【神荼之眼】即可查看)
黑幫文章——高顏值繪圖工具Grafana(后臺回復【Grafana】即可查看)
本文作者:錢晟龍 Arc_Qian(點融黑幫),現任點融網架構組產品研發工程師,主要任務是思考并嘗試解決各類點融網邁出第一公里之后遇到的現實問題。
隨著點融網新一輪融資,點融網即將開始大規模的擴張,需要各種優秀人才的加入,如果你覺得自己夠優秀,歡迎加入我們!獲取更多職位信息,請關注點融黑幫。
?
轉載于:https://www.cnblogs.com/zhao1949/p/6373104.html
總結
以上是生活随笔為你收集整理的老司机的应用级监控——spring?actuator的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: roa是什么
- 下一篇: 单个字段去重并保留其他字段值