当前位置: 首页 > news >正文

Spring Boot 监控实战:集成 Prometheus 与 Grafana,打造全方位监控体系

前言

在当今微服务架构盛行的时代,应用程序的监控变得尤为重要。Spring Boot 作为广泛使用的微服务框架,其监控需求也日益增加。Prometheus 和 Grafana 作为开源监控领域的佼佼者,为 Spring Boot 应用提供了强大的监控能力。本文将详细介绍如何将 Spring Boot 应用与 Prometheus 和 Grafana 集成,实现从数据采集到可视化展示,再到报警通知的全方位监控体系。通过本文的实践,你将能够快速搭建一套高效、可靠的监控系统,提升系统的可维护性和稳定性。

Prometheus 与 Grafana 简介

Prometheus
Prometheus 是一个开源的监控系统,主要用于收集和存储时间序列数据。它通过 HTTP 协议从目标系统拉取监控指标,并将这些指标存储在本地的时间序列数据库中。Prometheus 提供了强大的查询语言 PromQL,可以方便地查询和分析监控数据。
Grafana
Grafana 是一个开源的分析和可视化平台,支持多种数据源,包括 Prometheus。它允许用户创建丰富的仪表板,通过图表、表格等形式展示监控数据。Grafana 提供了灵活的配置选项,可以满足不同用户的需求。
二者关系
Prometheus 和 Grafana 是监控领域的黄金搭档。Prometheus 负责采集和存储监控数据,而 Grafana 则负责将这些数据以可视化的方式展示出来。通过将二者结合,用户可以快速搭建一套完整的监控系统,实现从数据采集到可视化的全流程监控。

为什么使用 Prometheus 和 Grafana

1.开源免费:Prometheus 和 Grafana 都是开源软件,无需支付高昂的许可费用,适合各种规模的企业和个人开发者。
2.强大的功能:Prometheus 提供了强大的监控数据采集和查询功能,而 Grafana 提供了丰富的可视化选项,可以满足各种监控需求。
3.社区支持:二者拥有庞大的社区,提供了大量的插件、模板和文档,用户可以轻松找到解决方案。
4.易用性:Prometheus 和 Grafana 的配置和使用都非常简单,即使是新手也能快速上手。

下面我们开始针对 Spring Boot 来集成 Prometheus 与 Grafana!

一、Spring Boot 应用配置

1.添加依赖

在 Spring Boot 项目中,我们首先需要添加必要的依赖。打开项目的 pom.xml 文件,添加以下依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

这些依赖将使 Spring Boot 应用能够通过 Actuator 暴露 Prometheus 格式的监控指标。

2.配置 application.yml

接下来,我们需要在 application.yml 文件中配置 Actuator 以暴露 Prometheus 端点:

management:endpoints:web:exposure:include: prometheus,health,metricsprometheus:metrics:export:enabled: true

通过以上配置,Spring Boot 应用将能够通过 /actuator/prometheus 端点输出监控指标,供 Prometheus 采集,这里需要在你使用的安全框架中将 /actuator/** 白名单放开

二、Docker 安装 Prometheus 和 Grafana

1.创建配置文件目录

在宿主机上创建 Prometheus 和 Grafana 的配置文件目录并配置权限:

mkdir -p /data/docker/{grafana,prometheus}
chmod -R 777 /data/docker/grafana
chmod -R 777 /data/docker/prometheus

这些目录将用于存放 Prometheus 和 Grafana 的配置文件和数据。

2.准备 Prometheus 配置文件

创建 prometheus.yml 文件并放置在 /data/docker/prometheus 目录下:

global:scrape_interval: 15sevaluation_interval: 15sscrape_configs:- job_name: 'spring-boot-application'metrics_path: '/actuator/prometheus'static_configs:- targets: ['<Spring Boot 应用的 IP>:<端口>']

注意:在 targets 中填写你的 Spring Boot 应用的 IP 地址和端口,以便 Prometheus 能够正确采集监控指标。

3.启动 Prometheus 容器

运行 Prometheus 容器并挂载配置文件和数据目录:

docker run -d \--name=prometheus \-p 9090:9090 \-v /data/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \-v /data/docker/prometheus:/prometheus \prom/prometheus

启动后,你可以通过访问 http://服务器IP:9090 来查看 Prometheus 的 Web 界面。

4.启动 Grafana 容器

运行 Grafana 容器并挂载数据目录:

docker run -d \--name=grafana \-p 3000:3000 \-v /data/docker/grafana:/var/lib/grafana \grafana/grafana

启动后,访问 http://服务器IP:3000,默认用户名和密码为 admin/admin,登录后即可开始使用 Grafana。

三、Grafana 配置

1.添加数据源

访问 Grafana 的 Web 界面(默认地址为 http://服务器IP:3000,用户名和密码为 admin/admin),添加 Prometheus 作为数据源:

  • URL:http://localhost:9090
  • Access:Browser

在最新版中,左侧菜单栏有一个 Connections ,在这里添加即可:
在这里插入图片描述
点击 “Save & Test” 按钮,如果配置正确,将显示 “Data source is working” 的提示

2.创建仪表板

在 Grafana 中创建新的仪表板,并添加面板来展示关心的监控指标。可以通过 Prometheus 查询语言(PromQL)选择希望可视化的指标。例如,你可以添加一个面板来展示 Spring Boot 应用的请求延迟:

job:http_request_duration_seconds:mean5m{job="spring-boot-application"}

通过这种方式,你可以创建多个面板,展示不同的监控指标,如请求量、错误率等。

另外也可通过去 grafana官网 下载适合自己的仪表盘,最后导入即可使用;

四、报警配置(可选)

1.配置 Alertmanager

创建 alertmanager.yml 文件并放置在 /data/docker/prometheus 目录下:

global:resolve_timeout: 5mroute:group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 12hreceiver: 'webhook'receivers:- name: 'webhook'webhook_configs:- url: 'https://your-webhook-url'

在 url 中填写你的 Webhook 接收地址,用于接收报警通知

2.配置 Prometheus 告警规则

创建 prometheus.rules.yml 文件并放置在 /data/docker/prometheus 目录下:

groups:- name: examplerules:- alert: HighRequestLatencyexpr: job:http_request_duration_seconds:mean5m{job="spring-boot-application"} > 0.5for: 10mlabels:severity: pageannotations:summary: "High request latency on {{ $labels.instance }}"description: "{{ $labels.instance }} has a mean request latency above 0.5s (current value: {{ $value }}s)"

在 expr 中定义了告警规则,当请求延迟超过 0.5 秒时触发告警

3.启动 Alertmanager 容器

运行 Alertmanager 容器并挂载配置文件:

docker run -d \--name=alertmanager \-p 9093:9093 \-v /data/docker/prometheus/alertmanager.yml:/etc/alertmanager/config.yml \prom/alertmanager

4.配置 Prometheus 使用 Alertmanager
prometheus.yml 文件中添加 Alertmanager 配置:

alerting:alertmanagers:- static_configs:- targets: ['localhost:9093']

通过以上配置,Prometheus 将能够将告警信息发送到 Alertmanager,进而触发报警通知

结语

通过本文的介绍,你已经掌握了如何将 Spring Boot 应用与 Prometheus 和 Grafana 集成,实现从数据采集到可视化展示,再到报警通知的全方位监控体系。希望本文能够帮助你在实际项目中快速搭建高效、可靠的监控系统,提升系统的可维护性和稳定性。如果你在实践过程中遇到任何问题,欢迎随时交流和探讨。


文章转载自:

http://P5OsMD6q.smkxm.cn
http://cH9GF8Rh.smkxm.cn
http://4E5O6eHJ.smkxm.cn
http://CNQrxgsQ.smkxm.cn
http://iyQbJfq8.smkxm.cn
http://E6uNDUVY.smkxm.cn
http://ePPHbZNg.smkxm.cn
http://F0NvYCmN.smkxm.cn
http://ZQ0yOeop.smkxm.cn
http://caKsmocb.smkxm.cn
http://2hgJgY5k.smkxm.cn
http://3FCeQrhv.smkxm.cn
http://nl2G2zcE.smkxm.cn
http://ajpOqGzL.smkxm.cn
http://NCgu8eMD.smkxm.cn
http://TXwQZGTg.smkxm.cn
http://zZ1jvVy6.smkxm.cn
http://myyz5dsH.smkxm.cn
http://HM1vlju7.smkxm.cn
http://pidpgA1V.smkxm.cn
http://CRk4RP6D.smkxm.cn
http://lWmzl3wH.smkxm.cn
http://RkuNBeVa.smkxm.cn
http://IuKA4tqI.smkxm.cn
http://PMz9JZFG.smkxm.cn
http://vSs8ylJh.smkxm.cn
http://Efah5ums.smkxm.cn
http://F8A1WWRo.smkxm.cn
http://4oHxqzoA.smkxm.cn
http://wTc6jYLr.smkxm.cn
http://www.dtcms.com/a/374902.html

相关文章:

  • 合理安排时间节点,避免影响正常生产——制造企业软件系统上线的关键考量
  • OBS直播教程:点歌直播间怎么弄?直播点歌用什么软件?
  • Apache Cloudberry 2.0.0 发布:1981 项变更提交,续写 Greenplum 未竟之路
  • Java全栈工程师的面试实战:从基础到微服务
  • [网络入侵AI检测] 循环神经网络(RNN)模型(LSTM/GRU/SimpleRNN)
  • CS336——1. Overview
  • 封装日期选择器组件,带有上周,下周按钮
  • PyTorch图像预处理:ToTensor()与Normalize()的本质区别
  • openssl简介
  • 八、Win/Linux/macOS全平台彻底卸载Docker的操作指南
  • 基于野火F407开发板实现电源管理-停止模式
  • Linux中 Swap 有哪些作用
  • Transformer架构:深度学习中的革命性模型
  • 解决window下共享资源报“不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接“问题
  • 自然语言处理 (NLP) 基础:词向量、模型与应用
  • C++设计模式之单例模式
  • C# ---ToLookUp
  • CSS in JS 的演进:Styled Components, Emotion 等的对比与选择
  • mybatis-plus多租户兼容多字段租户标识
  • Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
  • 华为云盘同步、备份和自动上传功能三者如何区分
  • 设计模式第一章(建造者模式)
  • Vue3入门到实战,最新版vue3+TypeScript前端开发教程,笔记02
  • 【Vue】Vue2 与 Vue3 内置组件对比
  • XSS 跨站脚本攻击剖析与防御 - 第一章:XSS 初探
  • vue 去掉el-dropdown 悬浮时出现的边框
  • 常见的排序算法总结
  • [优化算法]神经网络结构搜索(一)
  • php 使用html 生成pdf word wkhtmltopdf 系列2
  • 大数据毕业设计选题推荐-基于大数据的海洋塑料污染数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData