springboot实战之prometheus监控整合

作者:微信小助手

发布时间:2023-07-28T15:52:18

前言

在介绍springboot如何与prometheus整合监控之前,先介绍几个待会整合会用到的工具。

prometheus

1、什么是prometheus

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本

2、prometheus的特点

  • 多维度数据模型

  • 灵活的查询语言

  • 不依赖分布式存储,单个服务器节点是自主的

  • 通过基于HTTP的pull方式采集时序数据

  • 可以通过中间网关进行时序列数据推送

  • 通过服务发现或者静态配置来发现目标服务对象

  • 支持多种多样的图表和界面展示,比如Grafana等

3、prometheus集成的组件

  • prometheus server:主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理

  • client libraries:用于对接 Prometheus Server, 可以查询和上报数据

  • push gateway:用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等

  • exporters:各种汇报exporter,例如nodeexporter,mysqlexporter,mongodb_exporter

  • alertmanager:告警通知管理

4、prometheus架构图


5、prometheus适用场景

prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。

6、prometheus不适用场景

prometheus重视可靠性。即使在故障情况下,您也始终可以查看有关系统的可用统计信息。如果您需要100%的准确性(例如按请求计费),则prometheus并不是一个不错的选择,因为所收集的数据可能不会足够详细和完整。在这种情况下,最好使用其他系统来收集和分析计费数据,并使用prometheus进行其余的监视。

7、prometheus安装

可以查看之前我的一篇文章:运维监控之Prometheus入门安装篇

8、prometheus监控告警

prometheus的警报分为两个部分。prometheus服务器中的警报规则将警报发送到Alertmanager。然后,警报管理器通过电子邮件,通话通知系统和聊天平台等方法管理这些警报,包括静默,禁止,聚合和发出通知。

设置警报和通知的主要步骤是:

  1. 设置和配置Alertmanager

  2. 配置prometheus与Alertmanager对话

  3. 在prometheus中创建警报规则

9、prometheus安装Alertmanager集成

因为篇幅关系,prometheus 安装Alertmanager集成可以参考如下链接进行安装

https://www.cnblogs.com/xiangsikai/p/11289757.html

Grafana

1、什么是Grafana

Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。Grafana允许您查询,可视化,警报和了解指标,无论它们存储在哪里

2、Grafana的特点

  • 可视化:快速和灵活的客户端图形具有多种选项。面板插件为许多不同的方式可视化指标和日志。

  • 报警:可视化地为最重要的指标定义警报规则。Grafana将持续评估它们,并发送通知。

  • 通知:警报更改状态时,它会发出通知。接收电子邮件通知。

  • 动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部。

  • 混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源。这甚至适用于自定义数据源。

  • 注释:注释来自不同数据源图表。将鼠标悬停在事件上可以显示完整的事件元数据和标记。

  • 过滤器:过滤器允许您动态创建新的键/值过滤器,这些过滤器将自动应用于使用该数据源的所有查询。

3、Grafana安装

Grafana官网有提供很详细的安装教程,安装可以查看如下链接,本文就不再论述

https://grafana.com/docs/installation/rpm/

micrometer

1、什么是micrometer

micrometer号称监控界的SLF4J,主要用来以极低极低的消耗来给Java程序提供对指标的监控。micrometer为 Java平台上的性能数据收集提供了一个通用的 API,应用程序只需要使用 Micrometer 的通用 API 来收集性能指标即可。micrometer会负责完成与不同监控系统的适配工作。这就使得切换监控系统变得很容易。micrometer还支持推送数据到多个不同的监控系统。

2、micrometer的核心组成模块

  • 包含数据收集 SPI 和基于内存的实现的核心模块 micrometer-core。

  • 针对不同监控系统的实现模块,如针对 Prometheus 的 micrometer-registry-prometheus。

  • 与测试相关的模块 micrometer-test。

正文

springboot整合prometheus

1、整合的前置条件

服务器上已经安装了prometheus、grafana、alertmanager(可选)。本文的安装使用docker-compose来构建相关服务,具体的安装过程可以参考如下文章

https://blog.51cto.com/msiyuetian/2369130

如果懒得看,也可以拿我已经准备好的脚本,扔到服务器上执行吧,相关的脚本可以查看如下链接

http://1t.click/beth

2、pom.xml

 
  1. <dependencies>

  2. <dependency>

  3. <groupId>org.springframework.boot</groupId>

  4. <artifactId>spring-boot-starter-actuator</artifactId>

  5. </dependency>


  6. <dependency>

  7. <groupId>io.micrometer</groupId>

  8. <artifactId>micrometer-registry-prometheus</artifactId>

  9. </dependency>

  10. </dependencies>

3、application.yml

 
  1. management:

  2. endpoints:

  3. web:

  4. exposure:

  5. include: '*'

  6. spring:

  7. application:

  8. name: springboot_prometheus


4、prometheus.yml中配置需要采集的服务

 
  1. scrape_configs:

  2. # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.

  3. - job_name: 'prometheus'


  4. # metrics_path defaults to '/metrics'