SpringBoot集成Prometheus实现监控

2023-09-21 23:43:48
SpringBoot配置Prometheus
  • pom.xml 引入监控以及prometheus依赖
	 <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
  • 自定义指标

引入上面两个依赖之后,SpringBoot的/actuator/prometheus路径会默认暴露一些指标。

在这里插入图片描述

prometheus通过Http协议拉取的指标数据格式为
指标名 {标签} 值
如 jvm_memory_max_bytes{application=“blog”,area=“heap”,id=“Eden Space”,} 7.1630848E7
这个指标的指标名是jvm_memory_max_bytes,标签是 {application=“blog”,area=“heap”,id=“Eden Space”,},而指标值是 7.1630848E7,将来使用PromQL查询时,标签可以起到筛选条件的作用。

除了引入依赖所提供的指标外,还可以自定义指标。

@SuppressWarnings("all")
@Component
public class MetricsCounter {

    private static Counter loginCounter = null;
    private static Counter registerCounter = null;

    private static AtomicInteger atomicInteger;

    public MetricsCounter(MeterRegistry registry) {
        loginCounter = registry.counter("login_nums");
        registerCounter = registry.counter("register_nums");
        atomicInteger = registry.gauge("ssl_expire_days", new AtomicInteger(10));
    }

    /**
     * 此方法可能会被多线程执行,需要考虑线程安全问题
     */
    public synchronized static void incrLogin() {
        loginCounter.increment();
    }

    public synchronized static void incrRegister() {
        registerCounter.increment();
    }

    public static void updateSslExpireDays(){
        atomicInteger.set(new Random().nextInt(100));
    }

}

通过拿到MeterRegistry 自定义指标,这里定义了两种类型的指标,一种是Counter 计数器,值只增不减,一种是gauge,gauge类型可以随意修改。

  1. 编写一个接口,改变指标
@RestController
public class TestRest {

    @GetMapping("t1")
    public String t1(){
        MetricsCounter.incrLogin();
        MetricsCounter.incrRegister();
        MetricsCounter.updateSslExpireDays();
        return "t1";
    }

}
  1. 访问路径

在这里插入图片描述
可以看到最新的指标值。

二 、 Prometheus 端配置

SpringBoot将指标暴露出去后,还需要配置Prometheus 的配置文件,让Prometheus 定时去访问路径拉取到指标。

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "nodeExporter"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.240.130:9100"] #监控自己主机上的端口
  - job_name: "springboot"
    scrape_interval: 3s                                                # 多久采集一次数据
    scrape_timeout: 3s                                                 # 采集时的超时时间
    metrics_path: '/actuator/prometheus'                # 采集的路径
    static_configs:                                     # 采集服务的地址,设置成Springboot应用所在服务器的具体地址
      - targets: ["192.168.1.103:8188"]

alerting : 配置告警管理器地址
rule_files : 配置告警 规则
scrape_configs : 配置指标抓取规则,在这个配置项下配置SpringBoot的指标路径。

  • 启动promteus
nohup ./prometheus --config.file=./prometheus.yml &

启动后的端口默认是 9090

在这里插入图片描述

可以在上述的input输入框中输入PromQL进行对指标的查询。

具体的算术运算符、关系运算符以及内置函数等 可参考 Prometheus官网

到此SpringBoot已完成与Prometheus的整合。

更多推荐

加强半圆头方颈螺栓的型式尺寸

声明本文是学习github5.com网站的报告而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件规定了加强半圆头方颈螺栓的型式尺寸、技术条件和标记。本文件适用于螺纹规格为M6~M20,产品等级为B级(A型)和C级(B型)的加强半圆头方颈螺栓。2规范性引用文件下列文件中的内容通过文中的规范性

Cpp/Qt-day050921Qt

目录实现使用数据库的登录注册功能头文件:registrwidget.h:widget.h:源文件:registrwidget.c:widget.h:效果图:思维导图实现使用数据库的登录注册功能头文件:registrwidget.h:#ifndefREGISTRWIDGET_H#defineREGISTRWIDGET_H

心理咨询预约微信小程序开发制作步骤

随着互联网的普及和人们对心理健康的重视,越来越多的心理咨询需求在日常生活中涌现。为了满足这一需求,开发一款心理咨询预约微信小程序势在必行。本文将介绍使用乔拓云网这个第三方制作平台来制作这款小程序的具体步骤。1.找一个合适的第三方制作平台/工具乔拓云网是一家提供全方位微信小程序制作工具的平台,具有简单易用的操作界面,丰富

.NET 8 中的 WPF File Dialog 改进

作者:DipeshKumar排版:AlanWang我们很高兴宣布从.NET8Preview7开始,对WPF中的通用文件对话框API进行了一系列新的改进。其中包括迄今为止存储库中投票最多的API建议–允许用户选择文件夹的OpenFolderDialog控件–以及文件对话框上支持新的用户场景的几个新属性,例如单独保存状态、

【AI语言大模型】文心一言功能使用介绍

一、前言文心一言是一个知识增强的大语言模型,基于飞桨深度学习平台和文心知识增强大模型,持续从海量数据和大规模知识中融合学习具备知识增强、检索增强和对话增强的技术特色。最近收到百度旗下产品【文心一言】的产品,抱着试一试的心态体验了一下,整体感觉:还行!二、模块【文心一言】有以下模块:趣味挑战、人物对话、创意写作、职场效率

Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化...

原文链接:http://tecdat.cn/?p=23689本文探索Python中的长短期记忆(LSTM)网络,以及如何使用它们来进行股市预测(点击文末“阅读原文”获取完整代码数据)。相关视频在本文中,你将看到如何使用一个被称为长短时记忆的时间序列模型。LSTM模型很强大,特别是在保留长期记忆方面。在本文中,你将解决以

bat写的git命令大全(适合初学者)掌握命令行下的Git操作!

欢迎来到Git!无论你是一位Git初学者,这个在命令大全将帮助你在命令行下熟练运用Git,提高版本控制和团队协作的效率。从基本的仓库管理到分支操作,从提交修改到远程仓库同步,这个命令大全涵盖了Git的各种常用功能和技巧。不论你是初学者还是有经验的用户,都能从中学习到有用的命令和最佳实践,让你成为Git的高手!功能列表:

为什么tomcat要自定义线程池实现?

背景最近在研究tomcat调优的问题,开发人员做过的最多的tomcat调优想必就是线程池调优了,但是tomcat并没有使用jdk自己的线程池实现,而是自定了了线程池,自己实现了ThreadPoolExecutor类位于org.apache.tomcat.util.threads包下jdk线程池首先回顾一下jdk的线程池

git rebase 修改中间的commit

0.前言今天在移植最新版本kfence功能的时候,一共需要移植大概40多个patch,中间有很多patch存在冲突,需要手动修改后才能合并。当所有的patch都合并完成进行编译的时候,发现其中一个patch手动合并出了个错误。假如共有40个patch,编号1-40,现在问题是第20个patch需要再修改一下,而21-4

【【萌新的FPGA学习之Vivado下的仿真入门-2】】

萌新的FPGA学习之Vivado下的仿真入门-2我们上一章大概了解了我们所需要进行各项操作的基本框架对于内部实现其实一知半解我们先从基本的出发但从FPGA了解一下vivado下的仿真入门正好帮我把自己的riscV波形拉一下行为级仿真step1:进入仿真界面:SIMULATION->单击RunSimulation->单击

无线振弦采集仪应用隧道安全监测的方案解析

无线振弦采集仪应用隧道安全监测的方案解析隧道是交通建设中重要的组成部分,安全监测是保障隧道使用安全的重要手段。无线振弦采集仪可以对隧道进行实时、连续的振动监测,提供精确的数据分析和预警,是隧道安全监测的有效工具。无线振弦采集仪利用振弦原理,通过测量隧道内振动的频率、振幅及相位等参数,来检测隧道结构的状态,从而判断隧道的

热文推荐