自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring Boot快速接入Prometheus監(jiān)控

開發(fā) 前端
對于常見 Java 應(yīng)用程序基本都是基于 Spring 開發(fā),而 Spring 本身就是封裝和繼承做到特別好,而對于 Sring 監(jiān)控也是一樣的,也是非常簡單,下面我以 SpringBoot 2.x 為例演示下對系統(tǒng)中所有接口以及中間件的監(jiān)控。

最近跟幾個(gè)粉絲聊天吹水,說最近公司裁員嚴(yán)重,不僅裁掉了大部分的人,也裁掉了大部分的業(yè)務(wù);之前公司有錢賺,什么產(chǎn)品都愿意做,無論行不行都會試一試,一堆沒有什么流量的系統(tǒng)都在線上跑著,但是沒有上級發(fā)話,一個(gè)也不敢停掉。站著資源不說,關(guān)鍵還得保證活著,基本就是運(yùn)維人員要和系統(tǒng)同在,搞得我們這些運(yùn)維苦不堪言。

公司高層領(lǐng)導(dǎo)突然變得雷厲風(fēng)行,貌似是撐不下去了,不賺錢的業(yè)務(wù)開發(fā)人員全部裁掉,一個(gè)不留,對應(yīng)的系統(tǒng)直接下線;運(yùn)維人員只留下一部分,內(nèi)部活水幾個(gè)開發(fā)人員過來,部門從此改名為 DevOps 團(tuán)隊(duì),大多數(shù)系統(tǒng)已經(jīng)沒有了,云上資源迅速收縮了一半。日?,嵤禄緵]了,以前 KPI 寫保證 xx 個(gè)系統(tǒng)穩(wěn)定運(yùn)行,現(xiàn)在沒得寫了,基本是多個(gè)人保證 1 個(gè)系統(tǒng)運(yùn)行。沒什么辦法,領(lǐng)導(dǎo)發(fā)話,要精細(xì)化運(yùn)營,不清楚有沒有用,先活下去再說。

但是他們大多數(shù)人都是運(yùn)維,語言層面 python、golang、sql 運(yùn)用還算可以,日常云原生常見組件一些 Prometheus 語法之類的東西都能夠熟練使用,但是有些服務(wù)壓根就沒有提供指標(biāo).... 對于抽象和封裝太完美 Java 應(yīng)用系統(tǒng)真是不清楚怎么上手,更不知道如何添加監(jiān)控,問一些開發(fā)人員,多數(shù)對于 Prometheus 指標(biāo)沒有特別清晰的概念,侵入太多,就不愿意改,說來說去,只能看看 CPU、內(nèi)存以及 nginx 上的 qps 和延遲。

如何為應(yīng)用程序添加監(jiān)控

之所以造成如上局面,主要是運(yùn)維人員對于一些開發(fā)生態(tài)不了解導(dǎo)致的,其實(shí)對于常見 Java 應(yīng)用程序基本都是基于 Spring 開發(fā),而 Spring 本身就是封裝和繼承做到特別好,好到你根本不用了解他就可以在他的基礎(chǔ)上做開發(fā),這就是 Crud 程序員盛行的原因。而對于 Sring 監(jiān)控也是一樣的,也是非常簡單,下面我以 SpringBoot 2.x 為例演示下對系統(tǒng)中所有接口以及中間件的監(jiān)控。

第一步添加一個(gè) jar 依賴到應(yīng)用程序中:

 <dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

添加配置項(xiàng):

management.endpoints.web.exposure.include=prometheus
spring.application.name=spring-petclinic-compose
management.server.port=8091
management.metrics.tags.application=${spring.application.name}

啟動應(yīng)用程序,訪問:http://127.0.0.1:8091/actuator/prometheus

圖片

所有指標(biāo)都有了,只要有了指標(biāo),其它一切都好說了,只要采集到指標(biāo),計(jì)算好展示出來,超過閾值進(jìn)行告警。

運(yùn)行 Prometheus,并添加抓取配置:

scrape_configs:
- job_name: 'application'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['application:8091']

添加查詢:

rate(http_server_requests_seconds_count[5m])

圖片圖片

其實(shí)到這里也就差不多了,我上次在群里也是跟網(wǎng)友這么說的,但是反饋說根本不行,服務(wù)跑不起來,為了防止出現(xiàn)類似問題,我這里給出了我的一個(gè)源碼 Demo 鏈接,只要 Java 開發(fā)環(huán)境配置好,導(dǎo)入到本地,就可以運(yùn)行https://github.com/strictnerd/spring-petclinic-compose

目的達(dá)到了,運(yùn)維人員到這里就可以止步了;如果是開發(fā)人員還可以繼續(xù)了解下如何自定義指標(biāo)收集,具體代碼也已經(jīng)上傳到 github 具體可以參考https://github.com/strictnerd/spring-petclinic-compose。

自定義指標(biāo)

集成之后大家反饋的第一個(gè)問題就是指標(biāo)太多,目前 io.micrometer?  基本進(jìn)行常見 http、tomcat、jetty、kafka、cache、redis、JVM CPU MEM、GC、logback...等等監(jiān)控,具體自行查看 Spring 官網(wǎng)介紹 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#actuator.metrics

如何關(guān)閉所有指標(biāo),并打開想要的指標(biāo)?

management.metrics.enable.all=false
management.metrics.enable.http=false
management.metrics.enable.jvm=true

如上配置,我可以關(guān)閉所有的配置,但是唯獨(dú)打開 jvm 的指標(biāo),如下所示:

圖片

這個(gè)自己根據(jù)需要進(jìn)行監(jiān)控指標(biāo)采集和展示。

如何添加自己的指標(biāo)維度

有些服務(wù)是隔離的,同一份代碼但是在不同的地區(qū)部署,這個(gè)底層庫已經(jīng)留好了擴(kuò)展結(jié)點(diǎn),舉個(gè)例子,比如我們需要在各個(gè)指標(biāo)中加入一個(gè) region 維度,添加如下代碼即可,支持多個(gè)。

  @Bean
MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
return registry -> registry.config().commonTags("region", "us-east-1");
}

圖片

這樣每個(gè)指標(biāo)中就會多出一個(gè)維度。

如何對部分沒有監(jiān)控的接口添加切面

雖然 io.micrometer 覆蓋了服務(wù)中的大多數(shù)場景,但是根據(jù)業(yè)務(wù)實(shí)際情況,肯定有組件覆蓋不到的地方,怎么辦?那就使用 Timed 自定義處理。

Timed 注解不會被 Spring 框架掃描,所以需要添加如下代碼:

@Bean
TimedAspect timedAspect(MeterRegistry registry) {
return new TimedAspect(registry);
}

在需要監(jiān)控的代碼片段上添加注解:

圖片

查看指標(biāo):

圖片

總結(jié)

看完上面的介紹,你會發(fā)現(xiàn)簡單、簡單、還是 tmd 簡單,但是公司系統(tǒng)為什么沒有類似指標(biāo)等可用性的監(jiān)控。好聽點(diǎn)說是公司沒人推行此類技術(shù);難聽點(diǎn)說,系統(tǒng)不重要,可有可無或者說即便出了問題也會不了了知。

責(zé)任編輯:趙寧寧 來源: 云原生技術(shù)愛好者社區(qū)
相關(guān)推薦

2022-05-18 08:32:05

服務(wù)監(jiān)控Prometheus開源

2023-12-27 18:05:13

2020-12-01 08:32:12

Spring Boot

2020-11-20 08:15:40

Grafana + P

2023-12-28 08:01:17

SpringAPI數(shù)據(jù)

2025-04-09 11:35:00

MySQL數(shù)據(jù)庫監(jiān)控

2020-07-14 11:00:12

Spring BootRedisJava

2020-09-02 17:28:26

Spring Boot Redis集成

2024-09-27 08:25:47

2018-10-22 15:34:31

Spring Boo監(jiān)控視化

2022-02-09 20:39:52

Actuator應(yīng)用監(jiān)控

2024-01-16 08:17:29

Mybatis驗(yàn)證業(yè)務(wù)

2021-02-03 12:47:09

Spring Boot應(yīng)用監(jiān)控

2022-02-15 10:43:51

數(shù)據(jù)庫Druid連接池

2020-11-10 09:19:23

Spring BootJava開發(fā)

2023-07-27 08:53:44

2020-12-30 08:09:46

運(yùn)維Prometheus 監(jiān)控

2022-07-07 08:38:15

Springflowable引擎

2018-05-04 15:27:22

Spring Boo Web開發(fā)

2023-09-12 07:11:33

Prometheus聚合告警GPT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號