【问题标题】:Rename legend label in prometheus by script?通过脚本重命名普罗米修斯中的图例标签?
【发布时间】:2021-11-17 14:04:12
【问题描述】:

我在 Prometheus 中有一个简单的查询,例如:

irate(node_network_receive_bytes_total{job="job-name",device=~"br-.*",name="a-name"}[5m])

传说包含:{{device}} received

在面板上,我看到了我的度量图形,右侧是一个图例列表,其中包含所有网络“设备”的名称,例如:

br-a539a330b41b received
br-6c596943b7c8 received
br-dc406d831d4e received
[...]

如果我询问那台计算机上的 docker network,我可以得到一个名单,例如:

ubuntu@ip-10-278-0-45:~$ docker network ls
NETWORK ID     NAME                 DRIVER    SCOPE
0a9c74974c7f   bridge               bridge    local
6c596943b7c8   a-service_default    bridge    local
dc406d831d4e   b-service_default    bridge    local
a539a330b41b   c-service_default    bridge    local
68a058a0a38b   host                 host      local
0b101d111154   none                 null      local
[...]

在一个简单的 bash 中,我可以将当​​前给定的面板图例翻译成更易于理解的服务名称。

docker network ls | grep 6c596943b7c8 | awk '{print $2}' | sed 's/_default//'

有没有一种简单的方法可以将当前的 Legend {{device}} 翻译成更易读的东西,比如 docker network ls 中的名称?

所以我得到了这样的传说:

a-service received
b-service received
c-service received
[...]

或者还有其他“简单”的方式来翻译像桥接网络名称这样的 uuid?

一种“其他”方式可能是“操纵”node_exporter 输出。

【问题讨论】:

    标签: docker prometheus


    【解决方案1】:

    您可以将label_map 函数与network_id -> network_name 映射一起使用。例如:

    label_map(
      irate(node_network_receive_bytes_total{job="job-name",device=~"br-.*",name="a-name"}[5m]),
      "device",
      "br-6c596943b7c8", "a-service",
      "br-dc406d831d4e", "b-service",
      "br-a539a330b41b", "c-service",
    )
    

    label_map 函数在VictoriaMetrics 中可用。我希望它很快就会被添加到 Prometheus 中。

    【讨论】:

    • 这很好,但对我不起作用,因为 br-* 名称在新部署后会改变。没有更自动的方法吗?
    • node_exporter 不会在 node_network_receive_bytes_total 指标的标签中导出接口名称。最好在 github.com/prometheus/node_exporter/issues 提交功能请求,以便添加将网络接口名称放入该指标标签的功能。
    猜你喜欢
    • 2022-12-02
    • 1970-01-01
    • 2021-11-25
    • 2021-07-20
    • 2022-12-22
    • 1970-01-01
    • 2020-01-10
    • 2020-11-12
    • 2020-03-21
    相关资源
    最近更新 更多