【问题标题】:Grafana Prometheus merge two columnsGrafana Prometheus 合并两列
【发布时间】:2022-01-24 13:29:41
【问题描述】:

我使用 sflow-rt-exporter (https://github.com/sflow-rt/prometheus) 收集交换机上的流量。

然后我创建了一个 Grafana 表,在该表中,我看到流量按“源”、“目标”和“流量”分开。

现在我想创建一个表,其中“源”和“目标”列在一个列中。这样无论流量来自还是来自该服务器都无关紧要。

例子:

Source    | Destination | Traffic
123.4.5.6 | 234.5.6.7   | 200B
234.5.6.7 | 123.4.5.6   | 500B

should become

IP        | Traffic
123.4.5.6 | 700B

经过一周的尝试,我终于放弃了,希望你们能帮助我:)

提前致谢。

问候 L1nk27

【问题讨论】:

    标签: merge prometheus grafana promql


    【解决方案1】:

    您请求的关键是您希望在不同的维度(标签)上进行聚合,而这在 Prometheus 中是不可能的。

    因此,您必须创建另一个维度(称之为IP)来收集边(sourcedestination)。这可以使用label_replace 函数来完成:

    • 这会将source 标签复制到IP

      label_replace(traffic, "IP", "$1", "source", "(.*)")
      
    • 这会将destination 标签复制到IP

      label_replace(traffic, "IP", "$1", "destination", "(.*)")
      

    请注意,您不能有重复项,因为会保留原始值(这很重要)。然后您可以使用OR 二元运算符将它们连接起来,然后对IP 标签求和:

    sum by(IP) (
      label_replace(traffic, "IP", "$1", "source", "(.*)")
      OR
      label_replace(traffic, "IP", "$1", "destination", "(.*)"))
    

    【讨论】:

    • 非常感谢!这是我搜索的解决方案。我以前尝试过使用 label_replace,但 grafana 不会停止抱怨。二元或运算似乎是缺失的部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 2020-08-03
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多