作者:微信小助手
发布时间:2023-07-28T15:52:18
在介绍springboot如何与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。然后,警报管理器通过电子邮件,通话通知系统和聊天平台等方法管理这些警报,包括静默,禁止,聚合和发出通知。
设置警报和通知的主要步骤是:
设置和配置Alertmanager
配置prometheus与Alertmanager对话
在prometheus中创建警报规则
9、prometheus安装Alertmanager集成
因为篇幅关系,prometheus 安装Alertmanager集成可以参考如下链接进行安装
https://www.cnblogs.com/xiangsikai/p/11289757.html
1、什么是Grafana
Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。Grafana允许您查询,可视化,警报和了解指标,无论它们存储在哪里
2、Grafana的特点
可视化:快速和灵活的客户端图形具有多种选项。面板插件为许多不同的方式可视化指标和日志。
报警:可视化地为最重要的指标定义警报规则。Grafana将持续评估它们,并发送通知。
通知:警报更改状态时,它会发出通知。接收电子邮件通知。
动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部。
混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源。这甚至适用于自定义数据源。
注释:注释来自不同数据源图表。将鼠标悬停在事件上可以显示完整的事件元数据和标记。
过滤器:过滤器允许您动态创建新的键/值过滤器,这些过滤器将自动应用于使用该数据源的所有查询。
3、Grafana安装
Grafana官网有提供很详细的安装教程,安装可以查看如下链接,本文就不再论述
https://grafana.com/docs/installation/rpm/
1、什么是micrometer
micrometer号称监控界的SLF4J,主要用来以极低极低的消耗来给Java程序提供对指标的监控。micrometer为 Java平台上的性能数据收集提供了一个通用的 API,应用程序只需要使用 Micrometer 的通用 API 来收集性能指标即可。micrometer会负责完成与不同监控系统的适配工作。这就使得切换监控系统变得很容易。micrometer还支持推送数据到多个不同的监控系统。
2、micrometer的核心组成模块
包含数据收集 SPI 和基于内存的实现的核心模块 micrometer-core。
针对不同监控系统的实现模块,如针对 Prometheus 的 micrometer-registry-prometheus。
与测试相关的模块 micrometer-test。
1、整合的前置条件
服务器上已经安装了prometheus、grafana、alertmanager(可选)。本文的安装使用docker-compose来构建相关服务,具体的安装过程可以参考如下文章
https://blog.51cto.com/msiyuetian/2369130
如果懒得看,也可以拿我已经准备好的脚本,扔到服务器上执行吧,相关的脚本可以查看如下链接
http://1t.click/beth
2、pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
</dependencies>
3、application.yml
management:
endpoints:
web:
exposure:
include: '*'
spring:
application:
name: springboot_prometheus
4、prometheus.yml中配置需要采集的服务
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'