轉自:https://www.jianshu.com/p/c043d3c71f47git
這是一個研發老司機與運維同窗都會很是喜歡的東西,隨着點融集團的擴張,點融網的業務愈來愈複雜、服務愈來愈多,不管是微服務仍是SOA都會大大加劇運維的負擔。這時在應用層提供統1、強大的監控接口對於自動化運維來說就顯得很是重要!github
對於研發來說,能夠在應用啓動後拿到應用的各類數據,很是便於調試應用、分析應用的運行情況,而且不須要研發去實現這些監控功能。web
對於運維來說,能夠監控應用的健康信息、統計應用的瞬時信息。發現應用掛掉了、發現瞬時信息不正常均可以發送報警信息, 也能夠將信息拉到監控系統的數據系統中,再展現到漂亮的UI上實時監控應用的運行狀態。這些actions 無疑將會大大保證系統的總體質量。spring
而集成了actuator的springboot應用會在約定的endpoints上暴露本身應用的內部信息,又強大又統一標準,知足複雜分佈式系統的監控需求,一些endpoints簡介以下:api
研發會重點關注綠色的五項、而運維更關注深綠色的兩項,其餘項筆者暫時沒有發現有特別的用處...springboot
compileapp
'org.springframework.boot:spring-boot-starter-actuator:1.3.6.RELEASE'運維
1) 每一個endpoint均可以在application.properties裏面用 endpoints.[endpoint].[id|sensitive|enabled]來重定義其默認值。分佈式
例如:spring-boot
這樣就將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中, 添加自定義字段,以下:
訪問效果:
您須要實現Endpoint 接口或者繼承AbstractEndpoint。
訪問效果:
還有其餘的一些自定義,開發能夠不用特別關心 。
添加依賴:
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
附錄:
集成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】便可查看)