0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SpringBoot+Prometheus+Grafana实现自定义监控

jf_ro2CN3Fa 来源:CSDN技术社区 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 抓取数据,不过默认该服务是关闭的,该配置将打开所有的 Actuator 服务。

management.metrics.tags.application 配置会将该工程应用名称添加到计量器注册表的 tag 中去,方便后边 Prometheus 根据应用名称来区分不同的服务。

1.3监控jvm信息

然后在工程启动主类中添加 Bean 如下来监控 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创建自定义监控

监控请求次数与响应时间

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:自定义监控服务
*@Version:1.0
*/
@Component
publicclassPrometheusCustomMonitor{
/**
*上报拨打请求次数
*/
@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添加具体业务代码监控

//统计请求次数
prometheusCustomMonitor.getReportDialRequestCount().increment();
longstartTime=System.currentTimeMillis();
Stringcompany=HttpUtils.post(companyUrl,"");
//统计响应时间
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 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

项目地址: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实现的后台管理系统+用户小程序,支持RBAC动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
>
>*项目地址:
>*视频教程

#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 要监控的服务地址。同时可以添加一些与应用相关的标签,方便后期执行 PromSQL 查询语句区分。最后重启 Prometheus 服务

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

3.使用 Grafana Dashboard 展示监控项

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数据源

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

3.3增加jvm面板

模板编号为4701

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

3.4配置业务接口监控面板

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 监控
    +关注

    关注

    6

    文章

    2163

    浏览量

    55071
  • spring
    +关注

    关注

    0

    文章

    338

    浏览量

    14301
  • Boot
    +关注

    关注

    0

    文章

    149

    浏览量

    35766
  • Prometheus
    +关注

    关注

    0

    文章

    26

    浏览量

    1703
  • SpringBoot
    +关注

    关注

    0

    文章

    173

    浏览量

    165

原文标题:SpringBoot+Prometheus+Grafana 实现自定义监控

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HarmonyOS开发实例:【自定义Emitter】

    使用[Emitter]实现事件的订阅和发布,使用[自定义弹窗]设置广告信息。
    的头像 发表于 04-14 11:37 962次阅读
    HarmonyOS开发实例:【<b class='flag-5'>自定义</b>Emitter】

    阿里云容器Kubernetes监控(二) - 使用Grafana展现Pod监控数据

    个版本的Grafana中我们已经内置了两个模板,一个负责展示节点级别的物理资源,一个负责展示Pod相关的资源。开发者也可以通过添加自定义的Dashboard的方式进行更复杂的展现,也可以基于Grafana进行资源的告警等等。原文
    发表于 05-10 15:28

    prometheus监控服务的整个流程介绍

    Prometheus,这时候就可以提供一个独立的Exporter,通过中间件对外提供的监控数据API,来获取监控数据,然后转换成Prometheus可以识别的数据格式;集成到应用中一些
    发表于 12-23 17:34

    Springboot是如何获取自定义异常并进行返回的

    这里看到新服务是封装的自定义异常,准备入手剖析一下,自定义的异常是如何进行抓住我们请求的方法的异常,并进行封装返回到。废话不多说,先看看如何才能实现封装异常,先来一个示例:在这里,您会看到新服务是一
    发表于 03-22 14:15

    1602自定义字符

    1602液晶能够显示自定义字符,能够根据读者的具体情况显示自定义字符。
    发表于 01-20 15:43 1次下载

    使用云监控实现GPU云服务器的GPU监控和报警(上) - 自定义监控

    摘要: 本文将介绍如何利用阿里云云监控服务提供的自定义监控实现GPU云服务器的GPU监控和报警的可视化,从而达到对GPU使用情况实时掌握的目
    发表于 07-23 16:49 459次阅读

    如何在LabVIEW中实现自定义控件

    本文档的主要内容详细介绍的是如何在LabVIEW中实现自定义控件。
    发表于 01-14 17:17 48次下载
    如何在LabVIEW中<b class='flag-5'>实现</b><b class='flag-5'>自定义</b>控件

    基于HAL库的USB自定义HID设备实现

    基于HAL库的USB自定义HID设备实现基于HAL库的USB自定义HID设备实现准备工作CubeMX配置代码实现基于HAL库的USB
    发表于 12-28 20:04 13次下载
    基于HAL库的USB<b class='flag-5'>自定义</b>HID设备<b class='flag-5'>实现</b>

    自定义视图组件教程案例

    自定义组件 1.自定义组件-particles(粒子效果) 2.自定义组件- pulse(脉冲button效果) 3.自定义组件-progress(progress效果) 4.
    发表于 04-08 10:48 14次下载

    使用Thanos+Prometheus+Grafana构建监控系统

    对于弹性伸缩和高可用的系统来说,一般有大量的指标数据需要收集和存储,如何为这样的系统打造一个监控方案呢?本文介绍了如何使用 Thanos+Prometheus+Grafana 构建监控系统。
    的头像 发表于 05-05 21:14 2581次阅读

    ArkUI如何自定义弹窗(eTS)

    自定义弹窗其实也是比较简单的,通过CustomDialogController类就可以显示自定义弹窗。
    的头像 发表于 08-31 08:24 2117次阅读

    labview自定义控件

    labview自定义精美控件
    发表于 05-15 16:46 17次下载

    自定义算子开发

    一个完整的自定义算子应用过程包括注册算子、算子实现、含自定义算子模型转换和运行含自定义op模型四个阶段。在大多数情况下,您的模型应该可以通过使用hb_mapper工具完成转换并顺利部署
    的头像 发表于 04-07 16:11 2728次阅读
    <b class='flag-5'>自定义</b>算子开发

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

    labview超快自定义控件制作和普通自定义控件制作
    发表于 08-21 10:32 12次下载

    基于Prometheus开源的完整监控解决方案

    每一个被 Prometheus 监控的服务都是一个 Job,Prometheus 为这些 Job 提供了官方的 SDK ,利用这个 SDK 可以自定义并导出自己的业务指标,也可以
    发表于 10-18 09:15 425次阅读
    基于<b class='flag-5'>Prometheus</b>开源的完整<b class='flag-5'>监控</b>解决方案