Grafana Prometheus合并两列

Grafana Prometheus merge two columns

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

然后我创建了一个 Grafana table,我在其中看到流量分为“来源”、“目的地”和“流量”。

现在我想创建一个 table,其中“来源”和“目的地”列在一列中。因此,无论流量是来自还是流向该服务器都无关紧要。

示例:

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

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

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

  • 这会将 source 标签复制到 IP:

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

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

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

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