Prometheus + Spring Boot 应用监控

1.  Prometheus是什么

Prometheus是一个具有活跃生态系统的开源系统监控和告警工具包。一言以蔽之,它是一套开源监控解决方案。

Prometheus主要特性:

多维数据模型,其中包含由指标名称键/值对标识的时间序列数据

PromQL,一种灵活的查询语言

不依赖分布式存储; 单服务器节点是自治的

时间序列收集通过HTTP上的pull模型进行

通过中间网关支持推送(push)时间序列

通过服务发现或静态配置发现目标

支持多种模式的图形和仪表盘

为什么用pull(拉取)而不用push(推送)呢?

因为,pull有以下优势:

进行更改时,可以在笔记本电脑上运行监控

可以更轻松地判断目标是否下线

可以手动转到目标并使用Web浏览器检查其运行状况

目标暴露HTTP端点,Prometheus服务端通过HTTP主动拉取数据。既然是服务端自己主动向目标拉取数据,那么服务端运行在本地(我们自己的电脑上)也是可以的,只要能访问目标端点即可,同时就像心跳检测一样可以判断目标是否下线,还有,服务端自己主动拉取,那么想拉取谁的数据就拉取谁的数据,因而可以随意切换拉取目标。

回想一下Skywalking是怎么做的,SkyWalking有客户端和服务端,需要在目标服务上安装探针(agent),探针采集目标服务的指标数据,上报给服务端OAP服务,这个对目标有一定的侵入性,不过可以接受。Prometheus不需要探针,可以借助push gateway来实现push效果。

对了,有个名词要先说清楚,metrics (译:度量,指标),个人更倾向于把它翻译成指标,后面说指标就是metrics

Prometheus + Spring Boot 应用监控

2.  基本概念

2.1.  数据模型

Prometheus基本上将所有数据存储为时间序列:具有时间戳的值流,它们属于同一个指标和同一组标记的维度。除了存储的时间序列外,Prometheus还可以生成临时派生的时间序列作为查询的结果。

Metric names and labels

Every time series is uniquely identified by its metric name and optional key-value pairs called labels.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpydzp.html