0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SpringBoot+Prometheus+Grafana實現(xiàn)自定義監(jiān)控

jf_ro2CN3Fa ? 來源:CSDN技術社區(qū) ? 2022-12-26 16:02 ? 次閱讀

1.Spring Boot 工程集成 Micrometer

1.1引入依賴


org.springframework.boot
spring-boot-starter-actuator


io.micrometer
micrometer-registry-prometheus

1.2配置

management.server.port=9003
management.endpoints.web.exposure.include=*
management.endpoint.metrics.enabled=true
management.endpoint.health.show-details=always
management.endpoint.health.probes.enabled=true
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
management.metrics.tags.application=voice-qc-backend

這里 management.endpoints.web.exposure.include=* 配置為開啟 Actuator 服務,因為Spring Boot Actuator 會自動配置一個 URL 為 /actuator/Prometheus 的 HTTP 服務來供 Prometheus 抓取數(shù)據(jù),不過默認該服務是關閉的,該配置將打開所有的 Actuator 服務。

management.metrics.tags.application 配置會將該工程應用名稱添加到計量器注冊表的 tag 中去,方便后邊 Prometheus 根據(jù)應用名稱來區(qū)分不同的服務。

1.3監(jiān)控jvm信息

然后在工程啟動主類中添加 Bean 如下來監(jiān)控 JVM 性能指標信息:

@SpringBootApplication
publicclassGatewayDatumApplication{

publicstaticvoidmain(String[]args){
SpringApplication.run(GatewayDatumApplication.class,args);
}

@Bean
MeterRegistryCustomizerconfigurer(
@Value("${spring.application.name}")StringapplicationName){
return(registry)->registry.config().commonTags("application",applicationName);
}

}

1.4創(chuàng)建自定義監(jiān)控

監(jiān)控請求次數(shù)與響應時間

packagecom.lianxin.gobot.api.monitor;

importio.micrometer.core.instrument.Counter;
importio.micrometer.core.instrument.MeterRegistry;
importio.micrometer.core.instrument.Timer;
importlombok.Getter;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.beans.factory.annotation.Value;
importorg.springframework.stereotype.Component;

importjavax.annotation.PostConstruct;

/**
*@Author:GZ
*@CreateTime:2022-08-3010:50
*@Description:自定義監(jiān)控服務
*@Version:1.0
*/
@Component
publicclassPrometheusCustomMonitor{
/**
*上報撥打請求次數(shù)
*/
@Getter
privateCounterreportDialRequestCount;
/**
*上報撥打URL
*/
@Value("${lx.call-result-report.url}")
privateStringcallReportUrl;

/**
*上報撥打響應時間
*/
@Getter
privateTimerreportDialResponseTime;
@Getter
privatefinalMeterRegistryregistry;


@Autowired
publicPrometheusCustomMonitor(MeterRegistryregistry){
this.registry=registry;
}

@PostConstruct
privatevoidinit(){
reportDialRequestCount=registry.counter("go_api_report_dial_request_count","url",callReportUrl);
reportDialResponseTime=registry.timer("go_api_report_dial_response_time","url",callReportUrl);
}
}

1.5添加具體業(yè)務代碼監(jiān)控

//統(tǒng)計請求次數(shù)
prometheusCustomMonitor.getReportDialRequestCount().increment();
longstartTime=System.currentTimeMillis();
Stringcompany=HttpUtils.post(companyUrl,"");
//統(tǒng)計響應時間
longendTime=System.currentTimeMillis();
prometheusCustomMonitor.getReportDialResponseTime().record(endTime-startTime,TimeUnit.MILLISECONDS);

在瀏覽器訪問 http://127.0.0.1:9001/actuator/prometheus ,就可以看到服務的一系列不同類型 metrics 信息,例如jvm_memory_used_bytes gauge、jvm_gc_memory_promoted_bytes_total counter ,go_api_report_dial_request_count等

872629b6-837d-11ed-bfe3-dac502259ad0.png

到此,Spring Boot 工程集成 Micrometer 就已經完成,接下里就要與 Prometheus 進行集成了。

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權限、多租戶、數(shù)據(jù)權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/ruoyi-vue-pro

2.集成 Prometheus

2.1安裝

dockerpullprom/prometheus
mdkir/usr/local/prometheus
viprometheus.yml

>基于SpringCloudAlibaba+Gateway+Nacos+RocketMQ+Vue&Element實現(xiàn)的后臺管理系統(tǒng)+用戶小程序,支持RBAC動態(tài)權限、多租戶、數(shù)據(jù)權限、工作流、三方登錄、支付、短信、商城等功能
>
>*項目地址:
>*視頻教程

#myglobalconfig
global:
scrape_interval:15s#Setthescrapeintervaltoevery15seconds.Defaultisevery1minute.
evaluation_interval:15s#Evaluaterulesevery15seconds.Thedefaultisevery1minute.
#scrape_timeoutissettotheglobaldefault(10s).

#Alertmanagerconfiguration
alerting:
alertmanagers:
-static_configs:
-targets:
#-alertmanager:9093

#Loadrulesonceandperiodicallyevaluatethemaccordingtotheglobal'evaluation_interval'.
rule_files:
#-"first_rules.yml"
#-"second_rules.yml"

#Ascrapeconfigurationcontainingexactlyoneendpointtoscrape:
#Hereit'sPrometheusitself.
scrape_configs:
#Thejobnameisaddedasalabel`job=`toanytimeseriesscrapedfromthisconfig.
-job_name:'prometheus'

#metrics_pathdefaultsto'/metrics'
#schemedefaultsto'http'.

static_configs:
-targets:['192.168.136.129:9090']
dockerrun-d--nameprometheus-p9090:9090-v/usr/local/prometheus/prometheus.yml:/etc/prometheus/prometheus.ymlprom/prometheus
87569ff6-837d-11ed-bfe3-dac502259ad0.png

2.2集成配置

global:
scrape_interval:15s

scrape_configs:
-job_name:"prometheus"
static_configs:
-targets:["localhost:9090"]
-job_name:"metricsLocalTest"
metrics_path:"/actuator/prometheus"
static_configs:
-targets:["localhost:9003"]

這里 localhost:9001 就是上邊本地啟動的服務地址,也就是 Prometheus 要監(jiān)控的服務地址。同時可以添加一些與應用相關的標簽,方便后期執(zhí)行 PromSQL 查詢語句區(qū)分。最后重啟 Prometheus 服務

877d2e78-837d-11ed-bfe3-dac502259ad0.png87936ddc-837d-11ed-bfe3-dac502259ad0.png

3.使用 Grafana Dashboard 展示監(jiān)控項

3.1安裝grafana

dockerpullgrafana/grafana
dockerrun-d--namegrafana-p3000:3000-v/usr/local/grafana:/var/lib/grafanagrafana/grafana

默認用戶名/密碼 admin/admin

87b862cc-837d-11ed-bfe3-dac502259ad0.png

3.2配置prometheus數(shù)據(jù)源

87e34e4c-837d-11ed-bfe3-dac502259ad0.png

3.3增加jvm面板

模板編號為4701

880f7bde-837d-11ed-bfe3-dac502259ad0.png883c2080-837d-11ed-bfe3-dac502259ad0.png

3.4配置業(yè)務接口監(jiān)控面板

88561a44-837d-11ed-bfe3-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 監(jiān)控
    +關注

    關注

    6

    文章

    2208

    瀏覽量

    55197
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14343
  • Boot
    +關注

    關注

    0

    文章

    149

    瀏覽量

    35837
  • Prometheus
    +關注

    關注

    0

    文章

    27

    瀏覽量

    1716
  • SpringBoot
    +關注

    關注

    0

    文章

    173

    瀏覽量

    178

原文標題:SpringBoot+Prometheus+Grafana 實現(xiàn)自定義監(jiān)控

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發(fā)實例:【自定義Emitter】

    使用[Emitter]實現(xiàn)事件的訂閱和發(fā)布,使用[自定義彈窗]設置廣告信息。
    的頭像 發(fā)表于 04-14 11:37 ?1002次閱讀
    HarmonyOS開發(fā)實例:【<b class='flag-5'>自定義</b>Emitter】

    阿里云容器Kubernetes監(jiān)控(二) - 使用Grafana展現(xiàn)Pod監(jiān)控數(shù)據(jù)

    個版本的Grafana中我們已經內置了兩個模板,一個負責展示節(jié)點級別的物理資源,一個負責展示Pod相關的資源。開發(fā)者也可以通過添加自定義的Dashboard的方式進行更復雜的展現(xiàn),也可以基于Grafana進行資源的告警等等。原文
    發(fā)表于 05-10 15:28

    prometheus監(jiān)控服務的整個流程介紹

    Prometheus,這時候就可以提供一個獨立的Exporter,通過中間件對外提供的監(jiān)控數(shù)據(jù)API,來獲取監(jiān)控數(shù)據(jù),然后轉換成Prometheus可以識別的數(shù)據(jù)格式;集成到應用中一些
    發(fā)表于 12-23 17:34

    Springboot是如何獲取自定義異常并進行返回的

    這里看到新服務是封裝的自定義異常,準備入手剖析一下,自定義的異常是如何進行抓住我們請求的方法的異常,并進行封裝返回到。廢話不多說,先看看如何才能實現(xiàn)封裝異常,先來一個示例:在這里,您會看到新服務是一
    發(fā)表于 03-22 14:15

    1602自定義字符

    1602液晶能夠顯示自定義字符,能夠根據(jù)讀者的具體情況顯示自定義字符。
    發(fā)表于 01-20 15:43 ?1次下載

    使用云監(jiān)控實現(xiàn)GPU云服務器的GPU監(jiān)控和報警(上) - 自定義監(jiān)控

    摘要:?本文將介紹如何利用阿里云云監(jiān)控服務提供的自定義監(jiān)控實現(xiàn)GPU云服務器的GPU監(jiān)控和報警的可視化,從而達到對GPU使用情況實時掌握的目
    發(fā)表于 07-23 16:49 ?491次閱讀

    如何在LabVIEW中實現(xiàn)自定義控件

    本文檔的主要內容詳細介紹的是如何在LabVIEW中實現(xiàn)自定義控件。
    發(fā)表于 01-14 17:17 ?48次下載
    如何在LabVIEW中<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>自定義</b>控件

    基于HAL庫的USB自定義HID設備實現(xiàn)

    基于HAL庫的USB自定義HID設備實現(xiàn)基于HAL庫的USB自定義HID設備實現(xiàn)準備工作CubeMX配置代碼實現(xiàn)基于HAL庫的USB
    發(fā)表于 12-28 20:04 ?13次下載
    基于HAL庫的USB<b class='flag-5'>自定義</b>HID設備<b class='flag-5'>實現(xiàn)</b>

    自定義視圖組件教程案例

    自定義組件 1.自定義組件-particles(粒子效果) 2.自定義組件- pulse(脈沖button效果) 3.自定義組件-progress(progress效果) 4.
    發(fā)表于 04-08 10:48 ?14次下載

    使用Thanos+Prometheus+Grafana構建監(jiān)控系統(tǒng)

    對于彈性伸縮和高可用的系統(tǒng)來說,一般有大量的指標數(shù)據(jù)需要收集和存儲,如何為這樣的系統(tǒng)打造一個監(jiān)控方案呢?本文介紹了如何使用 Thanos+Prometheus+Grafana 構建監(jiān)控系統(tǒng)。
    的頭像 發(fā)表于 05-05 21:14 ?2637次閱讀

    ArkUI如何自定義彈窗(eTS)

    自定義彈窗其實也是比較簡單的,通過CustomDialogController類就可以顯示自定義彈窗。
    的頭像 發(fā)表于 08-31 08:24 ?2197次閱讀

    labview自定義控件

    labview自定義精美控件
    發(fā)表于 05-15 16:46 ?17次下載

    自定義算子開發(fā)

    一個完整的自定義算子應用過程包括注冊算子、算子實現(xiàn)、含自定義算子模型轉換和運行含自定義op模型四個階段。在大多數(shù)情況下,您的模型應該可以通過使用hb_mapper工具完成轉換并順利部署
    的頭像 發(fā)表于 04-07 16:11 ?2811次閱讀
    <b class='flag-5'>自定義</b>算子開發(fā)

    labview超快自定義控件制作和普通自定義控件制作

    labview超快自定義控件制作和普通自定義控件制作
    發(fā)表于 08-21 10:32 ?13次下載

    基于Prometheus開源的完整監(jiān)控解決方案

    每一個被 Prometheus 監(jiān)控的服務都是一個 Job,Prometheus 為這些 Job 提供了官方的 SDK ,利用這個 SDK 可以自定義并導出自己的業(yè)務指標,也可以
    發(fā)表于 10-18 09:15 ?486次閱讀
    基于<b class='flag-5'>Prometheus</b>開源的完整<b class='flag-5'>監(jiān)控</b>解決方案