写点什么

Prometheus 监控实战(四):数据模型

2019 年 11 月 27 日

Prometheus 监控实战(四):数据模型

Prometheus 会收集时间序列数据,为了处理这些数据,它使用一个多维时间序列数据模型。这个时间序列数据模型结合了时间序列名称和称为标签(label)的键/值对,这些标签提供了维度。每个时间序列由时间序列名称和标签的组合唯一标识。


指标名称


时间序列名称通常描述收集的时间序列数据的一般性质—例如,website_visits_total 为网站访问的总数。


名称可以包含 ASCII 字符、数字、下划线和冒号。


标签


标签为 Prometheus 数据模型提供了维度。它们为特定时间序列添加上下文。例如,total_website_visits 时间序列可以使用能够识别网站名称、请求 IP 或其他特殊标识的标签。Prometheus 可以在一个时间序列、一组时间序列或者所有相关的时间序列上进行查询。


标签共有两大类:插桩标签(instrumentation label)和目标标签(target label)。插桩标签来自被监控的资源—例如,对于与 HTTP 相关的时间序列,标签可能会显示所使用的特定 HTTP 动词。这些标签在由诸如客户端或 exporter 抓取之前会被添加到时间序列中。目标标签更多地与架构相关—它们可能会识别时间序列所在的数据中心。目标标签由 Prometheus 在抓取期间和之后添加。


时间序列由名称和标签标识(尽管从技术上讲,名称本身也是名为__name__的标签)。如果你在时间序列中添加或更改标签,那么 Prometheus 会将其视为新的时间序列。


你可以理解label就是键/值形式的标签,并且新的标签会创建新的时间序列。


标签名称可以包含 ASCII 字符、数字和下划线。


带有__前缀的标签名称保留给Prometheus内部使用。


采样数据


时间序列的真实值是采样(sample)的结果,它包括两部分:


  • 一个float64类型的数值

  • 一个毫秒精度的时间戳


符号表示


结合这些元素,我们可以看到 Prometheus 如何将时间序列表示为符号(notation),如下所示。


代码清单 2-1 时间序列符号


<time series name>{<label name>=<label value>, ...}
复制代码


例如,带有标签的 total_website_visits 时间序列可能如下所示。


代码清单 2-2 时间序列示例


total_website_visits{site="MegaApp",location="NJ",instance="webserver",job="web"}
复制代码


首先是时间序列名称,后面跟着一组键/值对标签。通常所有时间序列都有一个 instance 标签(标识源主机或应用程序)以及一个 job 标签(包含抓取特定时间序列的作业名称)。


这与 OpenTSDB 使用的符号大致相同,受到了 Borgmon 的影响。


保留时间


Prometheus 专为短期监控和警报需求而设计。默认情况下,它在其数据库中保留 15 天的时间序列数据。如果要保留更长时间的数据,则建议将所需数据发送到远程的第三方平台。


安全模型


Prometheus 可以通过多种方式进行配置和部署,关于安全有以下两个假设:


  • 不受信任的用户将能够访问Prometheus服务器的HTTP API,从而访问数据库中的所有数据。

  • 只有受信任的用户才能访问Prometheus命令行、配置文件、规则文件和运行时配置。


从Prometheus 2.0开始,默认情况下某些HTTP API的管理功能被禁用。


因此,Prometheus 及其组件不提供任何服务器端的身份验证、授权或加密。如果你在一个更加安全的环境中工作,则需要自己实施安全控制—例如,通过反向代理访问 Prometheus 服务器或者正向代理 exporter。由于不同版本的配置会潜在地发生较大变化,因此本书没有记录如何执行这些操作。


作者介绍:


詹姆斯·特恩布尔(James Turnbull)是一位作家和工程师。他最近出版的书包括《The Packer Book》《The Terraform Book》和《The Art of Monitoring》,以及关于开源容器虚拟化技术的《The Docker Book》,还有关于开源日志工具的《The Logstash Book》。詹姆斯还撰写了两本关于 Puppet 的书:《Pro Puppet》和《Pulling Strings with Puppet》。同时他还是另外三本书的作者:《Pro Linux System Administration》《Pro Nagios 2.0》和《Hardening Linux》。


他目前是 Empatico 公司的首席技术官,并且曾担任过 Kickstarter 公司的首席技术官、Docker 公司服务和支持副总裁、Venmo 公司工程副总裁以及 Puppet 公司技术运营副总裁。他喜欢品尝美食、喝酒、读书、摄影和养猫。


本文节选自《Prometheus 监控实战》,更多内容请点击此处查看。


相关阅读:


Prometheus 监控实战(三):Prometheus 架构


Prometheus 监控实战(二):监控方法论与报警通知


Prometheus 监控实战(一):监控机制


2019 年 11 月 27 日 14:181498

评论

发布
暂无评论
发现更多内容

Architecture Phase1 Week8:HomeWork

phylony-lu

极客大学架构师训练营

深度学习-框架之 pytorch

Dreamer

框架

LeetCode题解:169. 多数元素,排序,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

「八大排序算法」16张图带你彻底搞懂基数排序

bigsai

排序算法 基数排序

架构师训练营 W04 作业

Geek_f06ede

极客大学架构师训练营

架构师训练营第 4 周课后练习

菜青虫

极客大学架构师训练营

架构师训练营第四周作业

韩儿

架构师训练营第八周课后作业

Gosling

极客大学架构师训练营

架构师训练营第 4 周学习总结

菜青虫

极客大学架构师训练营

系统架构总结

Mars

系统架构

为什么继承 Python 内置类型会出问题?!

Python猫

c Python 编程 程序员

产品发布 | 准备好提升你的 ITSM 了吗?

Atlassian速递

DevOps Atlassian ITSM ITIL

Week 8总结

黄立

架构师训练第4周:作业二

leo

极客大学架构师训练营

【第八周】性能优化(二)

云龙

架构师训练营第 1 期 -- 第八周学习总结

发酵的死神

极客大学架构师训练营

第四周课后练习作业一

lithium

极客大学架构师训练营

Wi-Fi+BLE 通断器开发资料全开源!快速打造您的智能家居“改装神器”

智能物联实验室

人工智能 物联网 智能家居 通断器

架构师训练营第四周作业

丁乐洪

为什么说 Pulsar 是云原生的消息平台?

tison

云原生 消息队列 Apache Pulsar

亚新资本开创金融理财新征程

Geek_459987

架构师入门学习感悟四

莫问

架构师训练营第 1 期 -- 第八周作业

发酵的死神

极客大学架构师训练营

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述

幸福小子

互联网系统架构

week4学习小结

幸福小子

互联网系统架构

架构师训练营第四周作业2

韩儿

第四周课后练习作业二

lithium

架构师系列之5:互联网大数据分析系统架构例子解析

桃花原记

架构师训练营-week08

睁眼看世界

极客大学架构师训练营

架构师训练第4周:作业一

leo

极客大学架构师训练营

性能优化二第八周作业「架构师训练营第 1 期」

天天向善

Prometheus 监控实战(四):数据模型-InfoQ