Spring Boot Admin實現(xiàn)服務監(jiān)控

Spring Boot Admin簡介

SBA 全稱 Spring Boot Admin Spring Boot Admin是一個開源社區(qū)項目册舞,用于管理和監(jiān)控SpringBoot應用程序回官。 應用程序作為Spring Boot Admin Client向為Spring Boot Admin Server注冊(通過HTTP)或使用SpringCloud注冊中心(例如Eureka期吓,Consul)發(fā)現(xiàn)。 UI是的AngularJs應用程序量愧,展示Spring Boot Admin Client的Actuator端點上的一些監(jiān)控趾痘。常見的功能或者監(jiān)控如下:

  • 顯示健康狀況
  • 顯示詳細信息蜀肘,例如
  • JVM和內(nèi)存指標
  • micrometer.io指標
  • 數(shù)據(jù)源指標
  • 緩存指標
  • 顯示構建信息編號
  • 關注并下載日志文件
  • 查看jvm系統(tǒng)和環(huán)境屬性
  • 查看Spring Boot配置屬性
  • 支持Spring Cloud的postable / env-和/ refresh-endpoint
  • 輕松的日志級管理
    與JMX-beans交互
  • 查看線程轉儲
  • 查看http跟蹤
  • 查看auditevents
  • 查看http-endpoints
  • 查看計劃任務
  • 查看和刪除活動會話(使用spring-session)
  • 查看Flyway / Liquibase數(shù)據(jù)庫遷移
  • 下載heapdump
  • 狀態(tài)變更通知(通過電子郵件,Slack磺箕,Hipchat奖慌,......)
  • 狀態(tài)更改的事件日志(非持久性)

SBA結合eureka實現(xiàn)服務監(jiān)控以及郵件通知

搭建eureka集群服務

首先搭建注冊中心
eureka server HA服務,至少啟動2個服務滞磺。

  • pom.xml中添加以下依賴:
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
  • 啟動類:
/**
 * @author sl
 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

}
  • 配置文件(根據(jù)實際場景調(diào)整)
# server (eureka 默認端口為:8761)
server.port=8761
# 服務名
spring.application.name=eureka-server
# 是否注冊到eureka(eureka本身是不需要再注冊到自己的)
eureka.client.register-with-eureka=false
# 是否從eureka獲取注冊信息
eureka.client.fetch-registry=false
# eureka服務器的地址
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
#服務失效時間升薯,Eureka多長時間沒收到服務的renew操作,就剔除該服務击困,默認90秒
eureka.instance.leaseExpirationDurationInSeconds=90
#eureka server清理無效節(jié)點的時間間隔涎劈,默認60000毫秒,即60秒
eureka.server.evictionIntervalTimerInMs=20000
# 自我保護模式(缺省為打開)
eureka.server.enable-self-preservation=false
# 續(xù)期時間阅茶,即掃描失效服務的間隔時間(缺省為60*1000ms)
eureka.server.eviction-interval-timer-in-ms=20000
#logback配置
logging.path=./logs
logging.file=eureka-server.log
logging.level.root=info

由于在開發(fā)環(huán)境下很容易出現(xiàn)自我保護機制,推薦開發(fā)環(huán)境關閉eureka自我保護機制

鏡像配置一臺端口為8762 eureka服務,此處省略


搭建spring boot admin server服務蛛枚,即監(jiān)控程序

pom添加如下依賴

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.1.3</version>
        </dependency>
  • 啟動類:
/**
 * @author sl
 */
@SpringBootApplication
@EnableAdminServer
@EnableDiscoveryClient
public class UnionAdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(UnionAdminApplication.class, args);
    }

}
  • 配置文件:
spring.application.name=admin-server
server.port=43200
#eureka config
eureka.instance.health-check-url-path=/actuator/health
eureka.client.registry-fetch-interval-seconds=5
eureka.client.service-url.defaultZone=http://192.168.94.44:8761/eureka
# 是否注冊到eureka(eureka本身是不需要再注冊到自己的)
eureka.client.register-with-eureka=false
##############################日志配置#############################
logging.path=./logs
logging.file=admin.log
logging.level.root=info

#郵件配置
spring.mail.host=smtp.qq.com
spring.mail.username=****@qq.com
spring.mail.password=*****
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
# 發(fā)送給誰
spring.boot.admin.notify.mail.to=***@**.com,***@**.com
# 是誰發(fā)送出去的
spring.boot.admin.notify.mail.from=***@qq.com

應用服務接入

由于受到公司框架制約應用sprngboot版本無法升級到2.0.X,因此admin client 采用1.5.x版本

可以使用Spring Boot Admin 2.x監(jiān)視Spring Boot 1.5.x應用程序。舊的Spring Boot Admin Client能夠在較新的服務器上注冊脸哀。由于API稍有更改蹦浦,因此您需要在舊客戶端上設置以下屬性:
重新配置Spring Boot Admin Client 1.5.x的api路徑:
application.yml

spring.boot.admin.api-path: instances**

由于一些執(zhí)行器端點隨Spring Boot 2發(fā)布而改變,因此并非所有選>項都可用(例如/metrics端點); 對于某些端點撞蜂,我們提供傳統(tǒng)轉換>器盲镶。

  • pom.xml添加如下依賴
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>1.5.7</version>
        </dependency>

  • 啟動類:
/**
 * @author sl
 */
@EnableTransactionManagement
@SpringBootApplication(scanBasePackages = {"com.demo.ai.aidrg"},
        exclude = {DataSourceAutoConfiguration.class})
public class AidrgApplication {

    public static void main(String[] args) {
        SpringApplication.run(AidrgApplication.class, args);
    }

    @RestController
    public static class EchoTest {

        @GetMapping("/")
        public Result<String> echo() {
            return Results.success("AidrgApplication");
        }

    }

}
  • 配置文件:
#eureka配置
eureka.instance.prefer-ip-address=true
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://192.168.94.44:8761/eureka/
eureka.client.registryFetchIntervalSeconds=15
eureka.instance.leaseRenewalIntervalInSeconds=10

#監(jiān)控
management.endpoint.health.show-details=ALWAYS
management.endpoints.jmx.exposure.exclude=*
management.endpoints.web.exposure.include=*
spring.boot.admin.api-path=instances
management.security.enabled=false
management.context-path=/actuator

效果

注冊中心中可以看到注冊的服務


image.png
  • 監(jiān)控平臺


    image.png
image.png
image.png
image.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蝌诡,隨后出現(xiàn)的幾起案子溉贿,更是在濱河造成了極大的恐慌,老刑警劉巖浦旱,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宇色,死亡現(xiàn)場離奇詭異,居然都是意外死亡颁湖,警方通過查閱死者的電腦和手機宣蠕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甥捺,“玉大人抢蚀,你說我怎么就攤上這事×蹋” “怎么了思币?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵鹿响,是天一觀的道長。 經(jīng)常有香客問我谷饿,道長惶我,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任博投,我火速辦了婚禮绸贡,結果婚禮上,老公的妹妹穿的比我還像新娘毅哗。我一直安慰自己听怕,他們只是感情好,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布虑绵。 她就那樣靜靜地躺著尿瞭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翅睛。 梳的紋絲不亂的頭發(fā)上声搁,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音捕发,去河邊找鬼疏旨。 笑死,一個胖子當著我的面吹牛扎酷,可吹牛的內(nèi)容都是我干的檐涝。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼法挨,長吁一口氣:“原來是場噩夢啊……” “哼谁榜!你這毒婦竟也來了?” 一聲冷哼從身側響起凡纳,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤惰爬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后惫企,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡陵叽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年狞尔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巩掺。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡偏序,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胖替,到底是詐尸還是另有隱情研儒,我是刑警寧澤豫缨,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站端朵,受9級特大地震影響好芭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冲呢,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一舍败、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧敬拓,春花似錦邻薯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至营勤,卻和暖如春灵嫌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冀偶。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工醒第, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人进鸠。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓稠曼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親客年。 傳聞我的和親對象是個殘疾皇子霞幅,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容