Attach the pod labels to the `kubernetes_pod_volume` & `kubernetes_pod_network` metrics. (#9438)
This commit is contained in:
parent
348c18db75
commit
51720f3bd7
|
|
@ -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) {
|
func buildPodMetrics(summaryMetrics *SummaryMetrics, podInfo []Metadata, labelFilter filter.Filter, acc telegraf.Accumulator) {
|
||||||
for _, pod := range summaryMetrics.Pods {
|
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 {
|
for _, container := range pod.Containers {
|
||||||
tags := map[string]string{
|
tags := map[string]string{
|
||||||
"node_name": summaryMetrics.Node.NodeName,
|
"node_name": summaryMetrics.Node.NodeName,
|
||||||
|
|
@ -241,16 +252,9 @@ func buildPodMetrics(summaryMetrics *SummaryMetrics, podInfo []Metadata, labelFi
|
||||||
"container_name": container.Name,
|
"container_name": container.Name,
|
||||||
"pod_name": pod.PodRef.Name,
|
"pod_name": pod.PodRef.Name,
|
||||||
}
|
}
|
||||||
for _, info := range podInfo {
|
for k, v := range podLabels {
|
||||||
if info.Name == pod.PodRef.Name && info.Namespace == pod.PodRef.Namespace {
|
tags[k] = v
|
||||||
for k, v := range info.Labels {
|
|
||||||
if labelFilter.Match(k) {
|
|
||||||
tags[k] = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fields := make(map[string]interface{})
|
fields := make(map[string]interface{})
|
||||||
fields["cpu_usage_nanocores"] = container.CPU.UsageNanoCores
|
fields["cpu_usage_nanocores"] = container.CPU.UsageNanoCores
|
||||||
fields["cpu_usage_core_nanoseconds"] = container.CPU.UsageCoreNanoSeconds
|
fields["cpu_usage_core_nanoseconds"] = container.CPU.UsageCoreNanoSeconds
|
||||||
|
|
@ -275,6 +279,9 @@ func buildPodMetrics(summaryMetrics *SummaryMetrics, podInfo []Metadata, labelFi
|
||||||
"namespace": pod.PodRef.Namespace,
|
"namespace": pod.PodRef.Namespace,
|
||||||
"volume_name": volume.Name,
|
"volume_name": volume.Name,
|
||||||
}
|
}
|
||||||
|
for k, v := range podLabels {
|
||||||
|
tags[k] = v
|
||||||
|
}
|
||||||
fields := make(map[string]interface{})
|
fields := make(map[string]interface{})
|
||||||
fields["available_bytes"] = volume.AvailableBytes
|
fields["available_bytes"] = volume.AvailableBytes
|
||||||
fields["capacity_bytes"] = volume.CapacityBytes
|
fields["capacity_bytes"] = volume.CapacityBytes
|
||||||
|
|
@ -287,6 +294,9 @@ func buildPodMetrics(summaryMetrics *SummaryMetrics, podInfo []Metadata, labelFi
|
||||||
"pod_name": pod.PodRef.Name,
|
"pod_name": pod.PodRef.Name,
|
||||||
"namespace": pod.PodRef.Namespace,
|
"namespace": pod.PodRef.Namespace,
|
||||||
}
|
}
|
||||||
|
for k, v := range podLabels {
|
||||||
|
tags[k] = v
|
||||||
|
}
|
||||||
fields := make(map[string]interface{})
|
fields := make(map[string]interface{})
|
||||||
fields["rx_bytes"] = pod.Network.RXBytes
|
fields["rx_bytes"] = pod.Network.RXBytes
|
||||||
fields["rx_errors"] = pod.Network.RXErrors
|
fields["rx_errors"] = pod.Network.RXErrors
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,8 @@ func TestKubernetesStats(t *testing.T) {
|
||||||
"volume_name": "volume1",
|
"volume_name": "volume1",
|
||||||
"namespace": "foons",
|
"namespace": "foons",
|
||||||
"pod_name": "foopod",
|
"pod_name": "foopod",
|
||||||
|
"app": "foo",
|
||||||
|
"superkey": "foobar",
|
||||||
}
|
}
|
||||||
acc.AssertContainsTaggedFields(t, "kubernetes_pod_volume", fields, tags)
|
acc.AssertContainsTaggedFields(t, "kubernetes_pod_volume", fields, tags)
|
||||||
|
|
||||||
|
|
@ -154,6 +156,8 @@ func TestKubernetesStats(t *testing.T) {
|
||||||
"node_name": "node1",
|
"node_name": "node1",
|
||||||
"namespace": "foons",
|
"namespace": "foons",
|
||||||
"pod_name": "foopod",
|
"pod_name": "foopod",
|
||||||
|
"app": "foo",
|
||||||
|
"superkey": "foobar",
|
||||||
}
|
}
|
||||||
acc.AssertContainsTaggedFields(t, "kubernetes_pod_network", fields, tags)
|
acc.AssertContainsTaggedFields(t, "kubernetes_pod_network", fields, tags)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue