Springboot整合Prometheus+grafana实现系统监控

前言

Prometheus是一个开源的服务监控系统和时序数据库,它提供了强大的功能和灵活的架构,是目前主流的监控和管理应用系统的工具。

而Grafana是一个开源的数据可视化工具,与Prometheus集成,就可以可视化地监控系统的各个指标。

原理

首先Springboot整合actuator将服务的各种参数暴露出来,Prometheus定期通过接口查询这些参数,然后将参数存储在Prometheus内置的数据库内,然后再

一、Springboot整合actuator暴露数据

引入依赖

java 复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

配置yml暴露数据

java 复制代码
spring:
  application:
    name: my-app
server:
  port: 8081
  servlet:
    context-path: /myApp
management:
  endpoints:
    web:
      exposure:
        include: "*"   #放行数据
  endpoint:
    prometheus:
      enabled: true  #开启普罗米修斯,对上面放行的数据进行格式转换
    health:
      show-details: always #展示服务监控更多细节
  metrics:
    export:
      prometheus:
        enabled: true #上面的指标允许被导出

配置文件配置prometheus服务名

创建一个配置文件,注入bean

java 复制代码
import io.micrometer.core.instrument.MeterRegistry;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RedissonConfig {
    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurePrometheus(@Value("${spring.application.name}") String name){
        return (registry -> registry.config().commonTags("application",name));
    }
}

验证结果

启动springboot项目,然后服务名+/actutor,没有定义服务名的记得把前面部分去掉。如下,代表成功放行服务数据。

再拼接/prometheus,如下,是经过prometheus转换的数据。

二、安装并配置prometheus

下载官网

选择对应的系统下载,我这里用的是window,下载之后解压。

解压后可以看到如下目录,data文件夹在第一次启动的时候会自动创建。

编辑prometheus.yml

在最后面加入如下代码,job_name可以自定义,metrics_path配置的是prometheus的相对访问路径,targets配置ip+端口

总的来说,要确保拼接之后能访问到前面暴露的数据即可。访问路径=targets+metrics_path

我的访问路径拼接后是http://127.0.0.1:8081/myApp/actuator/prometheus

java 复制代码
### 配置拉取springboot数据
  - job_name: "my_app_prometheus"
    scrape_interval: 5s
    metrics_path: '/myApp/actuator/prometheus'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["127.0.0.1:8081"]

保存之后,双击prometheus.exe启动,如果启动之后闪一下就没有反应了,肯定是配置文件的问题。可以尝试先把上面加的去掉再启动来判断是否是添加的内容的问题。如果能正常启动,则检查配置的路径targets+metrics_path的路径是否能访问到数据。

验证

启动之后,打开127.0.0.1:9090,跳转如下页面说明启动成功。

点击status/target health,可以看到如下,说明成功读取到项目的数据

三、安装并配置grafana

下载官网

选择window,点击下载,然后解压。

解压后进入bin目录下,启动grafana-server.exe然后等待启动完成。

grafana的默认端口是3000,默认账号密码都是admin,登录之后会让你设置新密码,可以设置,也可以跳过。

进入如下界面,想要展示prometheus的数据,则需要配置数据源。

选择prometheus数据源,默认第一个就是

设置prometheus服务的地址

自定义数据源名称

拉到最下方点击,点击seve&test,如果出现绿色箭头,说明连接成功

创建仪表盘

选择一个仪表盘

4701是JVM的专属仪表盘,想查看更多仪表盘样式,可以在仪表盘官网查看。

选择数据源,然后导入

最终得到如下仪表盘,点击右上角保存仪表盘,至此配置完成

仪表盘布局支持拉拽进行布局,也支持删除编辑仪表盘等。

相关推荐
悟空码字3 小时前
Spring Boot 整合 MongoDB 最佳实践:CRUD、分页、事务、索引全覆盖
java·spring boot·后端
皮皮林5512 天前
拒绝写重复代码,试试这套开源的 SpringBoot 组件,效率翻倍~
java·spring boot
用户908324602734 天前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
用户8307196840825 天前
Spring Boot 集成 RabbitMQ :8 个最佳实践,杜绝消息丢失与队列阻塞
spring boot·后端·rabbitmq
Java水解5 天前
Spring Boot 视图层与模板引擎
spring boot·后端
Java水解5 天前
一文搞懂 Spring Boot 默认数据库连接池 HikariCP
spring boot·后端
洋洋技术笔记5 天前
Spring Boot Web MVC配置详解
spring boot·后端
初次攀爬者6 天前
Kafka 基础介绍
spring boot·kafka·消息队列
用户8307196840826 天前
spring ai alibaba + nacos +mcp 实现mcp服务负载均衡调用实战
spring boot·spring·mcp
Java水解6 天前
SpringBoot3全栈开发实战:从入门到精通的完整指南
spring boot·后端