RM新时代网站-首页

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

jf_ro2CN3Fa ? 來源:CSDN技術(shù)社區(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 服務(wù),因?yàn)镾pring Boot Actuator 會(huì)自動(dòng)配置一個(gè) URL 為 /actuator/Prometheus 的 HTTP 服務(wù)來供 Prometheus 抓取數(shù)據(jù),不過默認(rèn)該服務(wù)是關(guān)閉的,該配置將打開所有的 Actuator 服務(wù)。

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

1.3監(jiān)控jvm信息

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

@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ù)與響應(yīng)時(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)控服務(wù)
*@Version:1.0
*/
@Component
publicclassPrometheusCustomMonitor{
/**
*上報(bào)撥打請求次數(shù)
*/
@Getter
privateCounterreportDialRequestCount;
/**
*上報(bào)撥打URL
*/
@Value("${lx.call-result-report.url}")
privateStringcallReportUrl;

/**
*上報(bào)撥打響應(yīng)時(shí)間
*/
@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è)務(wù)代碼監(jiān)控

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

在瀏覽器訪問 http://127.0.0.1:9001/actuator/prometheus ,就可以看到服務(wù)的一系列不同類型 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 就已經(jīng)完成,接下里就要與 Prometheus 進(jìn)行集成了。

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

項(xiàng)目地址: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實(shí)現(xiàn)的后臺(tái)管理系統(tǒng)+用戶小程序,支持RBAC動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
>
>*項(xiàng)目地址:
>*視頻教程

#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 就是上邊本地啟動(dòng)的服務(wù)地址,也就是 Prometheus 要監(jiān)控的服務(wù)地址。同時(shí)可以添加一些與應(yīng)用相關(guān)的標(biāo)簽,方便后期執(zhí)行 PromSQL 查詢語句區(qū)分。最后重啟 Prometheus 服務(wù)

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

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

3.1安裝grafana

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

默認(rèn)用戶名/密碼 admin/admin

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

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

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

3.3增加jvm面板

模板編號(hào)為4701

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

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

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

審核編輯:湯梓紅

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

    關(guān)注

    6

    文章

    2204

    瀏覽量

    55169
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    340

    瀏覽量

    14338
  • Boot
    +關(guān)注

    關(guān)注

    0

    文章

    149

    瀏覽量

    35823
  • Prometheus
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    1714
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    177

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

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

    Springboot是如何獲取自定義異常并進(jìn)行返回的

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

    1602自定義字符

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

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

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

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

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

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

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

    自定義視圖組件教程案例

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

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

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

    ArkUI如何自定義彈窗(eTS)

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

    labview自定義控件

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

    自定義算子開發(fā)

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

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

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

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

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