• Prometheus的标签


    标签

    标签提供了时间序列的维度。它们可以定义目标,并为时间序列提供上下文。但最重要的是,结合指标名称,它们构成了时间序列的标识,如果它们改变了,那么时间序列的标识也会跟着改变。

    更改或添加标签会创建新的时间序列。

    这意味着应该明智地使用标签并尽可能保持不变。如果不遵守这一规定,则可能产生新的时间序列,从而创建出一个动态的数据环境,使监控的数据源难以跟踪。想象一下,你有一个时间序列,用于跟踪服务的状态。你为该时间系列配置了一个警报,该警报依赖于指标的标签来评判。如果更改或添加标签,那么警报将变为无效。这同样适用于历史时间序列数据:更改或添加标签,我们会丢失先前时间序列的跟踪,破坏已有的图像和表达式,并可能导致混乱。

    标签分类

    与大多数监控分类法一样,在分层更加广泛时标签可能表现最好。一个设定分类标准的好办法是利用拓扑标签和模式标签。

    拓扑标签(topological label)通过其物理或逻辑组成来切割服务组件,例如我们在上面看到的datacenter标签。每个指标都天然带有两个拓扑标签:job和instance。标签job是根据抓取配置中的作业名称设置的。我们倾向于使用job来描述正在监控的事物的类型。在之前的Node Exporter作业中,我们将其命名为node。这会为每个Node Exporter指标打上job标签node。instance标签可以标识目标,它通常是目标的IP地址和端口,并且来自__address__标签。

    模式标签(schematic label)是url、error_code或user之类的东西,它们允许你将拓扑中同一级别的时间序列匹配在一起,例如创建数据间的比率。

    image-20200914175058220

    为了删除标签,我们指定一个正则表达式,然后指定删除标签的操作labeldrop。这将删除与正则表达式匹配的所有标签。此操作还有一个对应的反向操作labelkeep,它将保留与正则表达式匹配的标签,并删除所有其他标签。

    重新标记

    • 删除不必要的指标。

    • 从指标中删除敏感或不需要的标签。

    • 添加、编辑或修改指标的标签值或标签格式。

    这里__name__标签值将使用“,”进行分隔。它将匹配并捕获两个指标:container_tasks_state``container_memory_failures_total如果指定了多个源标签,那么我们将使用分隔符隔开每个正则表达式,如regex1;regex2;regex3

    image-20200915092339344

    多个标签通过分隔符连接在一起,默认分隔符为“;”,也可以使用separator参数覆盖分隔符配置。

    测试结果:

    image-20200915092434519

    替换标签值

    我们还可以替换标签的值。举个例子,许多cAdvisor指标都有一个id标签,其中包含正在运行的进程的名称。如果该进程是一个容器,那么我们会看到类似如下的信息:

    image-20200915092957653

    上面的内容有点冗长,我们想要从中获取容器ID:然后将其放入一个新标签container_id中,通过重新标记我们可以这样做:

    image-20200915093037496

    我们的源标签是id。然后,指定匹配并捕获容器ID的正则表达式(regex)。replacement字段包含新标签值,在示例中使用的是匹配的结果$1。然后,在target_label参数中指定捕获信息的目标,此处为container_id。

    image-20200915093133604

    删除标签

    最后我们介绍一个删除标签的例子。这通常用于隐藏敏感信息或简化时间序列。在这个(为演示而创建的)示例中,我们将删除kernelVersion标签,隐藏Docker主机的内核版本。

    image-20200915093205076

    为了删除标签,我们指定一个正则表达式,然后指定删除标签的操作labeldrop。这将删除与正则表达式匹配的所有标签。此操作还有一个对应的反向操作labelkeep,它将保留与正则表达式匹配的标签,并删除所有其他标签。

    标签是时间序列的唯一性约束。如果你删除标签并导致时间序列重复,那么系统可能会出现问题!

    image-20200915095234190

  • 相关阅读:
    对象的继承关系在数据库中的实现方式和PowerDesigner设计
    Oracle数据库需要修改默认的Profiles,避免用户密码过期
    如何将数据库从SQL Server迁移到MySQL
    NHibernate中对同一个对象的Lazyload要设置一致
    时来运转乎
    如何用VS里的部署实现在Duwamish7安装时的自动创建数据功能
    Windows 2003里的一个小bug?
    DailyBuild全攻略"隆重"发布V1.0
    建议DuDu:实现上传图片能够以目录方式存放.
    如何在VS里的部署中执行一段 .sql 的脚本文件?
  • 原文地址:https://www.cnblogs.com/dalianpai/p/13671561.html
Copyright © 2020-2023  润新知