SpringBoot+Prometheus+Grafana搭建应用监控系统

news/2024/5/18 22:54:01 标签: spring boot, prometheus, grafana

1.应用监控系统介绍

SpringBoot的应用监控方案比较多,SpringBoot+Prometheus+Grafana是比较常用的一种解决方案,主要的监控数据的处理逻辑如下:
在这里插入图片描述

  • SpringBoot 的 actuator 提供了应用监控端点,可以对外暴露监控数据信息。
  • Prometheus 是监控系统,可以从 Springboot 采集监控数据,以时序数据的形式存储,并对外提供了监控数据查询服务。
  • Grafana 是专业的 UI 仪表盘系统,支持非常多的数据源,自然也支持Prometheus,可以对接Prometheus,从其中获取数据,使用仪表盘展示出来。

springboot 2.X 中引入了 micrometer,它可以更方便的对接各种监控系统,包括 Prometheus。

2.软件版本说明

3. 准备SpringBoot项目

创建一个Springboot项目, SpringBoot版本选择2.7.11, 项目的pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
   
	<groupId>com.beyond</groupId>
    <artifactId>beyond-monitor-admin</artifactId>
	 <packaging>jar</packaging>
	
	 <name>beyond-monitor-admin</name>
    <description>Demo project for Spring Boot</description>
	
	 <properties>
        <springboot.version>2.7.11</springboot.version>
		<prometheus.version>1.9.10</prometheus.version>
    </properties>
	
    <dependencies>
        <!-- SpringWeb模块 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 对外暴露监控端点 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- 集成prometheus定时爬取web服务监控端点数据 -->
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
			<version>${prometheus.version}</version>
        </dependency>
    </dependencies>
	
	 <!-- 依赖声明 -->
    <dependencyManagement>
        <dependencies>
            <!-- SpringBoot的依赖配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>	
	</dependencyManagement>
	
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

配置文件application.yml文件配置如下:

server:
  port: 19090
spring:
  application:
    name: beyond-monitor-admin
  profiles:
    active: dev

logging:
  config: classpath:logback-plus.xml

--- # Actuator 监控端点的配置项
management:
  endpoints:
    enabled-by-default: true #暴露所有端点信息
    web:
      exposure:
		# 这里可以指定暴露端点的范围,示例: health,info,env,prometheus,metrics,httptrace,threaddump,heapdump,springmetrics
        include: '*'
  endpoint:
    health:
      show-details: ALWAYS
    logfile:
      external-file: ./logs/beyond-monitor-admin.log

启动程序,访问http://localhost:19090/actuator/prometheus就可以看到服务暴露的那些监控指标了。
在这里插入图片描述
OK, 这样我们的web项目配置暴露监控指标就配置好了, 下面我们继续进行PrometheusGrafana的安装。

4.应用安装

4.1.Prometheus下载安装

本文下载的是linux版本的最新稳定版本prometheus-2.45.2.linux-amd64.tar.gz

下载地址:https://prometheus.io/download/

下载prometheus-2.45.2linux系统64位的安装压缩包,上传到服务器。
在这里插入图片描述

将上传的安装压缩包解压缩到指定的安装目录下

在这里插入图片描述

重命名应用名称为prometheus-2.45.2, 个人习惯, 可以跳过。

在这里插入图片描述在这里插入图片描述
通过以上步骤,prometheus-2.45.2就安装好了。

4.2.Grafana下载安装

本文下载的是linux版本的最新稳定版本grafana-10.1.0.linux-amd64.tar.gz

下载地址:https://grafana.com/grafana/download
在这里插入图片描述
下载grafana-10.1.0linux系统64位的安装压缩包,上传到服务器。

将上传的安装压缩包解压缩到指定的安装目录下

在这里插入图片描述
通过以上步骤,grafana-10.1.0就安装好了。

5.Prometheus配置启动

因为我们需要使用Prometheus从Springboot应用暴露的监控指标中进行数据采集,所以需要再Prometheus的配置文件prometheus.yml文件中配置数据采集的目标信息。
在这里插入图片描述

vim prometheus.yml

# 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: "prometheus"

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

    static_configs:
      - targets: ["localhost:9090"]
 
  # 配置应用监控服务的相关信息, prometheus会从配置的应用服务暴露的监控端点获取监控数据,如果有多个应用可以配置多个job
  - job_name: 'beyond-monitor-admin' 
    scrape_interval: 5s # 刮取的时间间隔
    scrape_timeout: 5s  
    metrics_path: /actuator/prometheus
    scheme: http
    #basic_auth: #认证信息(如果上线生产环境,admin项目最好配置安全认证, 这里配置认证账号和密码)
    #  username: admin
    #  password: admin 
    static_configs:
      - targets: ["10.10.3.169:19090"]  #此处填写 Spring Boot 应用的 IP + 端口号

更多配置信息请查看官方文档prometheus配置。

现在可以启动Prometheus了,启动命令如下:

./prometheus --config.file=prometheus.yml

如下图:说明启动成功
在这里插入图片描述

访问http://10.10.3.14:9090/targets,将IPt替换成你的Prometheus服务所在那台机器的IP,查看Spring Boot采集状态是否正常,如下图,说明Prometheus对接你的web应用成功,可以成功采集到监控信息。
在这里插入图片描述

6.Grafana配置启动

6.1.启动Grafana服务

在这里插入图片描述

# 进入到grafana的安装目录下的bin目录
cd /home/software/grafana-10.1.0/bin
# 启动grafana-server服务
nohup ./grafana-server &

当然你也可以直接将grafana-server配置到系统环境变量, 方便随时启动不用切换路径到grafana的安装目录下的bin目录,这个可以自行操作。

通过浏览器访问grafana服务,http://10.10.3.14:3000, 默认的登录账号密码是

账号:admin
密码:admin

在这里插入图片描述

使用默认账号密码登录成功过之后,系统要求立即修改密码,如下图:
在这里插入图片描述
修改密码保存之后就进入系统首页了
在这里插入图片描述

6.2.配置Grafana可视化图表

6.2.1.配置数据源

在配置Grafana可视化图表之前需要先配置数据源, Grafana支持很多种数据源对接,这里我们配置
Prometheus数据源。
在这里插入图片描述

在这里插入图片描述

点击添加数据源
在这里插入图片描述
选择Prometheus数据源
在这里插入图片描述
配置Prometheus的应用访问URL地址信息
在这里插入图片描述
在这里插入图片描述
如下图:说明数据源配置正常可访问, 如果失败, 大概率就是以下几种情况导致的:

  • Prometheus服务未正常启动
  • Prometheus服务url信息配置填写错误
  • 两个服务安装在不同的服务器,主机之间的网络不通
  • 两个服务安装在不同的服务器,防火墙服务启动,服务无法通信

一般错误就是这几种情况,一一排查基本就能解决。

在这里插入图片描述
之后再数据源列表就可以看到我们配置的Prometheus数据源
在这里插入图片描述

6.2.2.配置可视化监控面板

对于这块儿, 我是真不擅长, 但是Grafana有一个网站上提供了免费的可视化模板可以下载, 访问地址是:https://grafana.com/grafana/dashboards/
在这里插入图片描述
这里我们搜索Spring,
在这里插入图片描述

找一个你喜欢的模板, 点击Download JSON
加粗样式
在这里插入图片描述

然后再Grafana上点击Dashboards菜单。如下图:
在这里插入图片描述
选择从外部导入
在这里插入图片描述

上传可视化面板的JSON文件并导入
在这里插入图片描述
在这里插入图片描述
载入可视化面板模板如下:
在这里插入图片描述

保存可视化面板
在这里插入图片描述

可视化面板入口一

在这里插入图片描述

可视化面板入口二

在这里插入图片描述
通过以上操作, 我们的SpringBoot+Prometheus+Grafana搭建应用监控系统就搭建起来了。
好了,本篇文章到此结束,如果安装搭建过程中遇到问题,欢迎留言讨论哈,最后如果文章对你有帮助,请点赞关注,送你一朵小红花,谢谢~~~。


http://www.niftyadmin.cn/n/5315069.html

相关文章

c语言:输入成绩,统计不及格人数|练习题

一、题目 输入学生成绩&#xff0c;统计不及格的学生人数 二、代码截图【带注释】 三、源代码【带注释】 #include <stdio.h> //题目&#xff1a;输入成绩&#xff0c;统计不及格人数 //思考分析 //1、由于学生人数是未知数&#xff0c;所以可以在输入时&#xff0c;以0…

Prometheus监控遇上报错invalid is not a valid start token

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 问题描述&#xff1a; 使用prometheus采集java应用的metric指标数据&#xff0c;在prometheus界面pod状态为down&#xff0c;报…

Istio 实战:WasmPlugin(Proxy-Wasm 插件)开发(实现限流和修改请求和响应的 header)

WasmPlugin 的典型应用 限流&#xff1a;当前 envoy 提供的限流能力虽然比较强大&#xff0c;但主要提供了一些 api&#xff0c;在使用上对用户不够友好&#xff0c;且全局限流对每个请求都调用一次限流服务&#xff0c;性能损耗较大。因此&#xff0c;可以通过开发限流过滤器…

关于git使用的tips

前言 这里是一些git指令使用的tips&#xff0c;如果你作为初学者的话&#xff0c;我认为它将对你有所帮助。 常见指令 常见问题处理 1、使用git clone下载【huggingface.co】资源超时或无法请求问题 绝大多数情况是网络问题&#xff0c;首先如果是比较大的资源&#xff0c;你需…

「实用分享」如何用Telerik UI组件创建可扩展的企业级WPF应用?

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序&#xff0c;同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等&#xff0c;创建的应用程序可靠且结构良好&#xff0c;非常容易维护&#xff0c;其直观的API将无缝地集成Visual Studio…

Git删除远程仓库某次提交记录后的所有提交

1、鼠标右键->git bash here&#xff0c;然后cd切换到代码目录&#xff1b; 2、git log查看提交记录&#xff0c;获取commit id 3、git reset commit id&#xff08;commit id指要保留的最新的提交记录id&#xff09; 4、git push --force&#xff0c;强制push 如果出现…

《PySpark大数据分析实战》-27.数据可视化图表Pyecharts介绍

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

RK3288开发指南

官方网站 https://wiki.t-firefly.com/ 进入网站&#xff0c;找到对应型号的开发板&#xff0c;并点击进入 即可跳到如下的RK3288的上手教程 RK3288上手教程 https://wiki.t-firefly.com/zh_CN/Firefly-RK3288/ 瑞芯微的适配源码&#xff1a; https://opensource.rock-chi…