状态指标

状态: 开发中

定义

本文档中的“状态指标”是指用于表示事物在特定时间处于一组明确的可能状态值中的一个状态的指标。

设计

要表示此类指标,设计将如下所示:

id: metric.example.status
type: metric
metric_name: example.status
stability: development
brief: "The current state."
note: |
  A timeseries is produced for every possible value of `example.state`. The
  value of this metric is 1 for a state if it is currently in said state, and
  is 0 for all other states.
instrument: updowncounter
unit: "1"
attributes:
- ref: example.state

仪表

该指标被仪表为 UpDownCounter 而不是 Gauge。这是一个经过深思熟虑的选择,因为计算处于特定状态的对象是一个合理的用例。由于给定状态属性值的指标值不是 0 就是 1,这意味着您可以进行简单的求和聚合来计算特定状态的实例。

它应该是一个实体属性吗?

可以将状态作为实体上的描述性属性(**非**标识性属性)。跟踪实体状态更改是实体的已知用例。但是,仍然建议定义一个状态指标,因为它有助于以指标为中心的解决方案理解如何与实体交互。

命名

如果仪器上下文中已经存在众所周知的命名约定,例如 k8s 中的 phasestatus 等词,则应始终选择这些词。

如果没有立即可用的命名选项,您可以使用此推荐的命名方案。
此命名方案需要选择两个词来表示:

  • 表示可能值集之一的名词(属性名)
  • 描述当前激活的值的形容词(指标名)

总体的建议是使用“state”一词作为属性,使用“status”一词作为指标。这源于每个词的常见短语:

“X 处于什么**状态**?”“X 的**当前状态**是什么?”

这在英语语义上存在很大的争议,因此为了保持一致性,如果不存在明显的措辞,建议采用此命名方案。