「Prometheus」- 概念术语

概览系统(=> INTRODUCTION/Overview)

Prometheus(我们用 Prom 简写代指),监控及告警工具,由 SoundCloud 构建,现已开源,并且已经加入 CNCF 组织(紧随 Kubernetes 之后)。

Prom 采集指标,并作为时序数据存储。例如 指标信息时间戳被称为标签的键值对 一起存储。

特性特征:
1)多维度的数据模型(由指标名、键值对标识的时序数据)
2)PromQL 灵活的数据查询语句;
3)不依赖分布式存储;单个服务器节点是自治的;
4)HTTP and Pull 来主动抓取指标数据;
5)亦能够通过 Push Gateway 来主动推送数据;
6)通过静态配置或服务发现的方式来主动抓取指标;
7)支持多种图形模式和仪表板;

metrics, Time series

非专业术语,metrics 指数值化的测量。Time series,指随着时间的推移而记录的变化。

通过 Metrics 和 Time Series 能够反映出应用程序的运行情况,让我们找到问题所在。

核心组件

1)Prom Server
2)Client Libraries,用于与应用程序集成;
3)Push Gateway,推送网关,以允许应用主动推送;
4)Exporters,暴露指标;
5)Alertmanger,负责告警;
6)其他周边工具;

多数组件以 Go 编写,所以构建和运行比较容易。

系统架构

根据配置的 Job 来抓取指标(直接抓取或通过 Push-Gateway 来获取);
将指标进行本地存储,并针对指标运行规则(聚合并生成新的指标,或产生告警);
通过 Grafana 来显示指标;

应用场景

适用场景:
1)记录纯数字性质的指标;
2)它既适合以机器为中心的监控,也适合监控高度动态的面向服务的架构;
3)在微服务中,它对多维数据收集和查询的支持是一个特殊的优势。

潜在问题(或不适用的场景)
1)Prometheus 重视可靠性,而非精准性,所以如果需要较高精准度,则无法依赖于 Prometheus 来实现;

监控对比(=>INTRODUCTION/Comparison to alternatives)

Comparison to alternatives | Prometheus

官方 Comparison to alternatives 文档,提供 Prom 与其他监控产品的对比。

我们相信市场及多数人的选择,所以我们未曾详细阅读该文档。

常见问题(=> INTRODUCTION/FAQ)

FAQ | Prometheus

官方 FAQ 文档,是 Prom 出现的常见问题,以及官方的解答内容,这里不再赘述;

发展路线(=> INTRODUCTION/Roadmap)

Roadmap | Prometheus

官方 Roadmap 文档,是官方计划在不久的将来实施的一些主要功能的一部分。

要更全面地了解计划中的功能和当前工作,需要参考项目仓库或者其他的追踪工具。

设计文档(=> INTRODUCTION/Design Documents)

Design Documents | Prometheus

正如官方文档所述:

Design docs do not always reflect exactly what has been implemented, and implementation details might have changed since a feature was merged. Design docs are not considered documentation and can not define a standard.

我们也不会特别关注这部分内容。

相关资源(=> INTRODUCTION/Media)

Media | Prometheus

在 reddit 中,有关 Prom 的内容:https://www.reddit.com/r/prometheusmonitoring
Awesome Prometheus,社区维护,包含 Prom 相关的综合内容:https://github.com/roaldnefs/awesome-prometheus

还有很多其他关于 Prom 的资源,参考 Media 文档,以获取更多内容;

概念术语(=> INTRODUCTION/Glossary)

Glossary | Prometheus

官方 Glossary 文档,是 Prom 的词汇表,记录相关的概念术语。

我们将对需要了解的概念进行进一步记录(可能存在理解错误,后面将进一步修正):
01)PromQL (Prometheus)
02)Bridge,是个组件,用于将 Prom Metrics 暴露给非 Prom 监控服务;
03)Collector,是 Exporter 的一部分,负责收集指标;
04)Direct instrumentation,通过 client library 应用程序直接暴露 http/metric 接口;
05)Endpoint,可以抓取的指标来源,通常对应于单个进程。
06)Instance,是个标签(唯一标识 Job 中的 Target)
07)Job,具有相同目的的一组 Target;
08)Target,定义需要抓取的目标(包含 要应用的标签、认证信息、抓取方式 等等)
09)Sample,是时间序列中某个时间点的单个值。

Remote Read、Remote Read Adapter、Remote Read Endpoint:
Remote Write、Remote Write Adapter、Remote Write Endpoint:
这套机制,允许从其他系统中透明读/写时序数据,这主要用于长期存储(而非本地存储);
并非所有其他系统能够被直接操作,而 Adapter 是中间层,允许 Prom 对其他系统进行读/写;
Endpoint 则是值最终被读/写的系统;

版本发布(=> INTRODUCTION/Long-Term Support)

Long-Term Support | Prometheus

Prom LTS 版本支持周期较长,但是仅修复 Bug Sec Doc 等等内容。
但是 LTS 版本也不包含某些特性。

每 6 周启动一个新的 Prometheus 次要发布周期。过去这 6 周,次要版本通常不再收到错误修正。
升级直接进行,但是新功能和增强功能也存在回归的风险,需要再次升级。

接口稳定性(=> PROMETHEUS/API Stability)

API Stability | Prometheus

在主板本号内,接口是稳定的,不会带来破坏性修改。

部分实验或开发阶段的接口可能会发生变化。

特征选项(=> PROMETHEUS/Feature flags)

Feature flags | Prometheus

部分特性,通常处于实验性质,默认是关闭的,需要进行开启才能使用。

Expand environment variables in external labels
Remote Write Receiver,默认不允许其他 Prom Server 向当前 Prom Server 写入数据;
Exemplars storage
Memory snapshot on shutdown
Extra scrape metrics
New service discovery manager
Prometheus agent
Per-step stats
Auto GOMAXPROCS