Attach the pod labels to the `kubernetes_pod_volume` & `kubernetes_pod_network` metrics. (#9438)

This commit is contained in:
Raphael Yu 2021-07-28 05:13:12 +08:00 committed by GitHub
parent 348c18db75
commit 51720f3bd7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 9 deletions

View File

@ -234,6 +234,17 @@ func (k *Kubernetes) LoadJSON(url string, v interface{}) error {
func buildPodMetrics(summaryMetrics *SummaryMetrics, podInfo []Metadata, labelFilter filter.Filter, acc telegraf.Accumulator) {
for _, pod := range summaryMetrics.Pods {
podLabels := make(map[string]string)
for _, info := range podInfo {
if info.Name == pod.PodRef.Name && info.Namespace == pod.PodRef.Namespace {
for k, v := range info.Labels {
if labelFilter.Match(k) {
podLabels[k] = v
}
}
}
}
for _, container := range pod.Containers {
tags := map[string]string{
"node_name": summaryMetrics.Node.NodeName,
@ -241,16 +252,9 @@ func buildPodMetrics(summaryMetrics *SummaryMetrics, podInfo []Metadata, labelFi
"container_name": container.Name,
"pod_name": pod.PodRef.Name,
}
for _, info := range podInfo {
if info.Name == pod.PodRef.Name && info.Namespace == pod.PodRef.Namespace {
for k, v := range info.Labels {
if labelFilter.Match(k) {
tags[k] = v
}
}
}
for k, v := range podLabels {
tags[k] = v
}
fields := make(map[string]interface{})
fields["cpu_usage_nanocores"] = container.CPU.UsageNanoCores
fields["cpu_usage_core_nanoseconds"] = container.CPU.UsageCoreNanoSeconds
@ -275,6 +279,9 @@ func buildPodMetrics(summaryMetrics *SummaryMetrics, podInfo []Metadata, labelFi
"namespace": pod.PodRef.Namespace,
"volume_name": volume.Name,
}
for k, v := range podLabels {
tags[k] = v
}
fields := make(map[string]interface{})
fields["available_bytes"] = volume.AvailableBytes
fields["capacity_bytes"] = volume.CapacityBytes
@ -287,6 +294,9 @@ func buildPodMetrics(summaryMetrics *SummaryMetrics, podInfo []Metadata, labelFi
"pod_name": pod.PodRef.Name,
"namespace": pod.PodRef.Namespace,
}
for k, v := range podLabels {
tags[k] = v
}
fields := make(map[string]interface{})
fields["rx_bytes"] = pod.Network.RXBytes
fields["rx_errors"] = pod.Network.RXErrors

View File

@ -141,6 +141,8 @@ func TestKubernetesStats(t *testing.T) {
"volume_name": "volume1",
"namespace": "foons",
"pod_name": "foopod",
"app": "foo",
"superkey": "foobar",
}
acc.AssertContainsTaggedFields(t, "kubernetes_pod_volume", fields, tags)
@ -154,6 +156,8 @@ func TestKubernetesStats(t *testing.T) {
"node_name": "node1",
"namespace": "foons",
"pod_name": "foopod",
"app": "foo",
"superkey": "foobar",
}
acc.AssertContainsTaggedFields(t, "kubernetes_pod_network", fields, tags)
}