merge - Grafana Prometheus 合并两列

标签 merge prometheus grafana promql

我使用 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

最佳答案

您请求的关键是您希望聚合不同的维度(标签),而 Prometheus 无法实现这一点。

因此,您必须创建另一个维度(我们称之为IP)来收集边(目的地)。这可以使用 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", "(.*)"))

关于merge - Grafana Prometheus 合并两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70464034/

相关文章:

mercurial - 在cygwin下,如何配置Mercurial以使用WinMerge进行 merge ?

c - 如何将两个windows vc静态库合并为一个

mysql - Grafana世界地图面板: latitude and longitude in mysql cannot display points on map

influxdb - grafana:在另一个变量的定义中使用一个变量

Grafana Explore 对已解析字段的过滤

merge - Octopus merge 是否可能在 mercurial 中

svn - SVN 合并多列(制表符分隔)文本文件时遇到问题吗?

java - 当不是从 $JMETER_HOME/bin 运行时,Jmeter 无法使用 Prometheus JMX 代理启动

go - goroutine不会将内存返回操作系统

time-series - Prometheus DB如何计算平均值