Prometheus简介

[TOC] 1、Prometheus介绍和架构 1.1 Prometheus介绍 Prometheus是一个开源的系统监视和警报工具包,自2012成立以来,许多公司和组织采用了Prometheus。它现在是一个独立的开源项目,并独立于任何公司维护。在2016年,Prometheus加入云计算基金会作为Kubernetes之后的第二托管项目。 1.1.1 Prometheus的关键特性 由度量名和键值对标识的时间序列数据的多维数据模型 灵活的查询语言 不依赖于分布式存储;单服务器节点是自治的 通过HTTP上的拉模型实现时间序列收集 通过中间网关支持推送时间序列 通过服务发现或静态配置发现目标 图形和仪表板支持的多种模式 1.1.2 Prometheus的组件: 如上图,Prometheus主要由以下部分组成: Prometheus Server:用于抓取和存储时间序列化数据 Exporters:主动拉取数据的插件 Pushgateway:被动拉取数据的插件 Altermanager:告警发送模块 Prometheus web UI:界面化,也包含结合Grafana进行数据展示或告警发送 prometheus本身是一个以进程方式启动,之后以多进程和多线程实现监控数据收集、计算、查询、更新、存储的这样一个C/S模型运行模式。 1.1.3 Prometheus的整体架构 Prometheus从jobs获取度量数据,也直接或通过推送网关获取临时jobs的度量数据。它在本地存储所有被获取的样本,并在这些数据运行规则,对现有数据进行聚合和记录新的时间序列,或生成警报。通过Grafana或其他API消费者,可以可视化的查看收集到的数据。下图显示了Pometheus的整体架构和生态组件: Prometheus的整体工作流程: 1)Prometheus 服务器定期从配置好的 jobs 或者 exporters 中获取度量数据;通过推送网关获取临时jobs的度量数据. -Retrieval 负责获取 2)Prometheus 服务器在本地存储收集到的度量数据,并对这些数据进行聚合;- 由TSDB负责存储 3)运行已定义好的 alert.rules,记录新的时间序列或者向告警管理器推送警报。 4)告警管理器根据配置文件,对接收到的警报进行处理,并通过email等途径发出告警。 5)Grafana等图形工具获取到监控数据,并以图形化的方式进行展示。 1.2 Prometheus关键概念 1.2.1 数据模型 Prometheus从根本上将所有数据存储为时间序列:属于相同度量标准和同一组标注尺寸的时间戳值流。除了存储的时间序列之外,普罗米修斯可能会生成临时派生时间序列作为查询的结果。 度量名称和标签:每个时间序列都是由度量标准名称和一组键值对(也称为标签)组成唯一标识。 度量名称指定被测量的系统的特征(例如:http_requests_total-接收到的HTTP请求的总数)。它可以包含ASCII字母和数字,以及下划线和冒号。它必须匹配正则表达式[a-zA-Z_:][a-zA-Z0-9_:]。 标签启用Prometheus的维度数据模型:对于相同度量标准名称,任何给定的标签组合都标识该度量标准的特定维度实例。查询语言允许基于这些维度进行筛选和聚合。更改任何标签值(包括添加或删除标签)都会创建新的时间序列。标签名称可能包含ASCII字母,数字以及下划线。他们必须匹配正则表达式[a-zA-Z_][a-zA-Z0-9_]*。以__开始的标签名称保留给供内部使用。 样本:实际的时间序列,每个序列包括:一个 float64 的值和一个毫秒级的时间戳。 **格式:**给定度量标准名称和一组标签,时间序列通常使用以下格式来标识: <metric name>{<label name>=<label value>, ...} 例如,时间序列的度量名称为api_http_requests_total,标签method=”POST”和handler=”/messages”,则标记为: api_http_requests_total{method="POST", handler="/messages"} 如下,是在进行数据收集后,在Prometheus中的data目录的数据 # tree . ├── 01EHSWYREVQ296VKWT5MAJEX90 │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ├── 01EHTAP73QPZY1VH6C2K9GHG6H │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ... ├── chunks_head │ ├── 000009 │ └── 000010 ├── index.html ├── lock ├── queries.active └── wal ├── 00000006 ├── 00000007 ├── 00000008 ├── 00000009 └── checkpoint.00000005 └── 00000000 prometheus采用time-series(时间序列)方式,存储在本地硬盘 ...

March 28, 2018