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
)来收集边(source
和 destination)
。这可以使用 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", "(.*)"))
我使用 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
)来收集边(source
和 destination)
。这可以使用 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", "(.*)"))