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