写点什么

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

  • 2019-11-27
  • 本文字数:1745 字

    阅读完需:约 6 分钟

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:182294

评论

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

【沙丘大会回顾】九科信息研发中心自动化负责人郑文茂分享央企数字员工实践案例

九科Ninetech

FL Studio2023新版本功能爆料将引入4款全新插件!创作力UP!

茶色酒

FL Studio

设计原则 — 基于接口而非实现编程

Lemoon Can

面向对象设计原则 设计原则

模块一作业提交

Geek_7d539e

架构实战营-模块一作业

落叶挂云霄

架构实战模块一:架构图

小飞同学

#架构实战营

模块一:课程作业

peter

#架构实战营

架构训练营模块一作业

现在不学习马上变垃圾

#架构实战营

2022-12-07:删除重复的电子邮箱。删除重复数据后,id=3的数据被删除。请问sql语句如何写? DROP TABLE IF EXISTS `person`; CREATE TABLE `per

福大大架构师每日一题

数据库 福大大

从汽车之家效能平台建设看汽车行业研发数字化之路

之家技术

数字化 汽车 构架 效能度量 效能

API安全中的数据隐私保护步骤

穿过生命散发芬芳

API安全 12月月更

模块一作业

陈天境

FL Studio21正式版本发布更新附送85款主题下载

茶色酒

FL Studio 21 FL Studio21

模块七-王者荣耀商城异地多活架构设计

Geek_b35d92

商城 构架 王者荣耀

十大开源测试工具和框架

FunTester

Verilog 设计方法

向阳逐梦

流程 Verilog 设计方法

微信业务架构图 & 学生管理系统

chinandy

架构设计

MySQL执行计划之explain详解

@下一站

程序 MySQL优化 dba 11月日更 11月月更

架构实战营-模块一作业

 try 

#架构实战营

全面进化!Apache Doris 1.2.0 Release 版本正式发布|版本通告

SelectDB

数据库 大数据 开源 数据分析 Doris

架构实战营模块一作业

周烨

ZBC登录iZUMi Finance双挖池APY高达189%,极致通缩的典范

石头财经

设计原则

Lemoon Can

面向对象设计原则 设计原则

架构实战营模块一_作业

原城

架构实战营 #架构实战营 架构师实战营 「架构实战营」

ChatGPT 加图数据库 NebulaGraph 预测 2022 世界杯冠军球队

NebulaGraph

图数据库 世界杯 AI预测

如何通过“推送文案的千人千面”有效提升用户转化和留存

极光JIGUANG

极光推送 用户运营

架构实战营(第10期)模块一作业

Geek_e5f2e5

超详细FL Studio水果2023新版更新功能讲解!80项更新与改进!

茶色酒

FL Studio FL Studio 21 FL Studio21

设计原则 — 多用组合,少用继承

Lemoon Can

面向对象设计原则 设计原则

王者荣耀商城异地多活设计

π

架构实战营-模块1-作业

zealot0317

Prometheus 监控实战(四):数据模型_运维_James Turnbull_InfoQ精选文章