时序数据库学习二:OpenMetrics规范

简介: 时序数据库学习二:OpenMetrics规范

OpenMetrics规范

OpenMetrics:一种云原生、高度可扩展的指标协议。它定义了大规模上报云原生指标的事实标准,同时支持文本表示协议和Protocol Buffers协议。虽然时间序列可以支持任意字符串或二进制数据,但RFC只针对和包括数字数据。得益于Prometheus的流行,作为Prometheus的监控数据采集方案,OpenMetrics可能很快会成为未来监控的业界标准。

目前绝大部分热门开源服务均有官方或非官方的exporter可供使用。实施者必须以 OpenMetrics 文本格式公开指标,以响应对给定进程或设备的文档化 URL 的简单 HTTP GET 请求。这个端点应该被称为“/metrics”。实施者还可以通过其他方式公开 OpenMetrics 格式的指标,例如通过 HTTP 定期将指标集推送到操作员配置的端点。

备注:事件(Event)与指标相反,单一事件发生在特定时刻;而指标是个时间序列。这个概念在运维域非常重要。

数据模型

OpenMetrics对数据模型有如下的定义:

- 度量值(value)   浮点数或者整数

- 时间戳(timestamp)  必须是以秒为单位的Unix Epoch

- 字符串(string) 必须是由有效的UTF8 字符组成

- 标签(Label) 由字符串组成的键值对.如果是下划线开头的标签名称,则是保留标签,一般不让使用

- 标签集(LabelSet) 它必须由标签组成,并且可以为空,标签名在标签集中是唯一的

- 指标点(MetricPoint) 每个MetricPoint 由一组值组成,具体取决于 MetricFamily 类型.  MetricPoint 不应该有明确的时间戳

- 指标(metric) 由MetricFamily 中的唯一 LabelSet定义.

metrics必须包含一个或者多个MetricPoint 的列表.  给定MetricFamily 具有相同名称的度量标准应该在它们的LabelSet 中 具有相同的标签名称集.

如果为一个Metric公开了多个MetricPoint,则其MetricPoint必须具有单调递增的时间戳

- 指标家族(MetricFamily)  一个MetricFamily 可以有0个或者多个指标

MetricFamily 必须具有名称,HELP,TYPE和UNIT 元数据.

MetricFamily 中的每个Metric 都必须有一个唯一的LabelSet

MetricFamily 名称必须在MetricSet中是唯一的

- 后缀: OpenMetric定义了文本格式样例度量名称使用的后缀:

- 计数器(Counter) :  _total   _created

- 摘要(Summary) : _count  _sum _created

- 直方图(Histogram): _count _sum _bucket _created

- 测量直方图(GaugeHistogram) _gcount _gsum _bucket

- 信息(Info) _info

- 指标集(MetricSet) 是OpenMetrics 公开的顶级对象, 它由MetricFamilies组成,每个MetricFamily名称必须是唯一的

相同的标签名称和值不应该出现在MetricSet中的每个Metric上

MetricSet中不需要特定的MetricFailies 排序

指标类型

OpenMetrics规范定义了8种指标类型

- Gauge (仪表读数,测量值) : 当前的测量值.  例如当前网速

- Counter (计数器): 计量离散事件. 例如计算从启动到现在的总流量.一般情况下,用户主要在乎的是增加的速度

- StateSet (状态集): 表示一系列相关的布尔值,也称为位集.  可以存储系统一些布尔状态,例如系统是否正常,某个参数开关状态

- Info (信息指标): 用于公开在流程生命周期内不应该更改的文本信息. 例如系统版本,接口类型

- Histogram (直方图): 测量离散时间的分布.  一般是http请求的延迟,io请求大小. 直方图MetricPoint 至少包含一个桶,并且应该包含Sum和Create值,每个桶必须有一个阈值和一个值

- GaugeHistogram (仪表直方图): 测量当前分布. 一般是项目在队列中请求的大小

- Summary (摘要): Summary 测量离散事件的分布. 并且可以在直方图计算过于昂贵或平均事件大小足够时使用.

包含Count 或Sum值类型为Summary的Metric中的MetricPoint 应该具有Created的Timestamp值.这可以帮助摄取者区分新的指标和之前没有看到的长期运行的指标

- Unknown(未知) : 当无法确定来自3rd方系统的单个指标的类型时,可以使用未知,一般情况不能使用.

本文参考: https://zhuanlan.zhihu.com/p/410255386

目录
相关文章
|
2月前
|
数据库 Python
在数据库中的规范设计
【5月更文挑战第16天】关系数据库规范化理论涉及函数依赖和超键概念。函数依赖如X->Y表示X能唯一确定Y。超键是能唯一标识元组的属性集合,候选键是最小超键,无冗余。主键是用户选定的候选键,外键关联不同表的主键。Armstrong公理用于推导函数依赖。数据库范式从1NF到5NF,消除部分和传递依赖,确保数据完整性。实际操作中,反规范化有时用于优化,如增加冗余列、派生列、重组表和分表策略,以提升查询效率和性能。
161 51
在数据库中的规范设计
|
28天前
|
SQL 关系型数据库 MySQL
关于MySQL数据库的学习指南总结
【6月更文挑战第17天】MySQL是流行的关系型DBMS,适合各种应用。学习要点包括安装配置、数据类型、SQL(如SELECT、INSERT)、关系模型、表设计、SQL查询(如WHERE、ORDER BY)、事务处理、用户管理、性能优化和高级技术如存储过程、触发器。了解ACID特性,使用索引和内存优化提升性能,通过备份恢复确保数据安全。不断学习新技术以提升技能。
51 3
|
28天前
|
关系型数据库 网络安全 数据库
一些数据库设计的基本知识和学习指导
【6月更文挑战第17天】**数据库设计概览** - 从需求到结构,转化业务规则为关系型数据库。 - 遵循ER模型,定义实体、属性与联系。 - 步骤:需求分析、数据收集、ER图到物理设计,及优化。 - 范式理论确保数据无冗余,1NF至5NF逐步规范。 - 反规范化平衡查询效率与数据一致性。 - 优化策略:索引、简化查询、分区、延迟加载和并行处理。 - 安全措施:权限控制、加密、审计日志和防火墙。 - 实践与理解原理是成功设计的关键。
48 3
|
11天前
|
SQL 存储 关系型数据库
关系型数据库PostgreSQL学习
【7月更文挑战第4天】
412 2
|
11天前
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
21 2
|
23天前
|
SQL 数据库
零基础学习数据库SQL语句之操作表中数据的DML语句
零基础学习数据库SQL语句之操作表中数据的DML语句
19 0
零基础学习数据库SQL语句之操作表中数据的DML语句
|
27天前
|
SQL 存储 关系型数据库
【数据库】SQL零基础入门学习
【数据库】SQL零基础入门学习
32 3
|
13天前
|
SQL 存储 Java
SQL数据库学习指南:从基础到高级
SQL数据库学习指南:从基础到高级
|
1月前
|
SQL 存储 关系型数据库
sql学习数据库
SQL(Structured Query Language)是用于管理关系型数据库的标准编程语言。学习SQL数据库涉及理解数据库的基本概念、SQL语言的结构和语法,以及如何使用SQL来查询、插入、更新
|
21天前
|
SQL 数据库 数据库管理
逆向学习数据库篇:多表查询技术详解
逆向学习数据库篇:多表查询技术详解
12 0