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的专属仪表盘,想查看更多仪表盘样式,可以在仪表盘官网查看。

选择数据源,然后导入

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

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

相关推荐
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
荆州克莱3 小时前
mysql中局部变量_MySQL中变量的总结
spring boot·spring·spring cloud·css3·技术
武昌库里写JAVA4 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
Q_19284999064 小时前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
Q_19284999064 小时前
基于Spring Boot的营销项目系统
spring boot
路在脚下@6 小时前
Spring Boot @Conditional注解
java·spring boot·spring
陶庵看雪6 小时前
Spring Boot注解总结大全【案例详解,一眼秒懂】
java·spring boot·后端
Q_19284999067 小时前
基于Spring Boot的图书管理系统
java·spring boot·后端
Mitch3117 小时前
【漏洞复现】CVE-2021-45788 SQL Injection
sql·web安全·docker·prometheus·metersphere
ss2737 小时前
基于Springboot + vue实现的汽车资讯网站
vue.js·spring boot·后端