From 272dd2068c8cdb05a201b38e658e259de4320717 Mon Sep 17 00:00:00 2001 From: Chad Patel Date: Thu, 27 Jul 2023 10:18:02 -0500 Subject: [PATCH 1/2] add cluster_number_of_running_pods metric --- .../internal/k8sapiserver/k8sapiserver.go | 8 ++++++++ .../internal/k8sapiserver/k8sapiserver_test.go | 2 ++ .../internal/stores/podstore.go | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/receiver/awscontainerinsightreceiver/internal/k8sapiserver/k8sapiserver.go b/receiver/awscontainerinsightreceiver/internal/k8sapiserver/k8sapiserver.go index a5f83b921a29..13632ffb7192 100644 --- a/receiver/awscontainerinsightreceiver/internal/k8sapiserver/k8sapiserver.go +++ b/receiver/awscontainerinsightreceiver/internal/k8sapiserver/k8sapiserver.go @@ -103,6 +103,14 @@ func (k *K8sAPIServer) getClusterMetrics(clusterName, timestampNs string) pmetri "cluster_failed_node_count": k.leaderElection.nodeClient.ClusterFailedNodeCount(), "cluster_node_count": k.leaderElection.nodeClient.ClusterNodeCount(), } + + namespaceMap := k.leaderElection.podClient.NamespaceToRunningPodNum() + clusterPodCount := 0 + for _, value := range namespaceMap { + clusterPodCount += value + } + fields["cluster_number_of_running_pods"] = clusterPodCount + attributes := map[string]string{ ci.ClusterNameKey: clusterName, ci.MetricType: ci.TypeCluster, diff --git a/receiver/awscontainerinsightreceiver/internal/k8sapiserver/k8sapiserver_test.go b/receiver/awscontainerinsightreceiver/internal/k8sapiserver/k8sapiserver_test.go index 727525d1c763..229fc9bec9a4 100644 --- a/receiver/awscontainerinsightreceiver/internal/k8sapiserver/k8sapiserver_test.go +++ b/receiver/awscontainerinsightreceiver/internal/k8sapiserver/k8sapiserver_test.go @@ -270,6 +270,8 @@ func TestK8sAPIServer_GetMetrics(t *testing.T) { case ci.TypeCluster: assertMetricValueEqual(t, metric, "cluster_failed_node_count", int64(1)) assertMetricValueEqual(t, metric, "cluster_node_count", int64(1)) + assertMetricValueEqual(t, metric, "cluster_number_of_running_pods", int64(2)) + case ci.TypeClusterService: assertMetricValueEqual(t, metric, "service_number_of_running_pods", int64(1)) assert.Contains(t, []string{"service1", "service2"}, getStringAttrVal(metric, ci.TypeService)) diff --git a/receiver/awscontainerinsightreceiver/internal/stores/podstore.go b/receiver/awscontainerinsightreceiver/internal/stores/podstore.go index 70116c47b911..b7a8395c7af0 100644 --- a/receiver/awscontainerinsightreceiver/internal/stores/podstore.go +++ b/receiver/awscontainerinsightreceiver/internal/stores/podstore.go @@ -117,7 +117,7 @@ type podClient interface { type PodStore struct { cache *mapWithExpiry - // preMeasurements per each Type (Pod, Container, etc) + // prevMeasurements per each Type (Pod, Container, etc) prevMeasurements sync.Map // map[string]*mapWithExpiry podClient podClient k8sClient replicaSetInfoProvider From 1c3dc4a14ae2424200fa3d76ee1bf47f42be8f1e Mon Sep 17 00:00:00 2001 From: Chad Patel Date: Thu, 27 Jul 2023 10:24:55 -0500 Subject: [PATCH 2/2] update readme --- .../awscontainerinsightreceiver/README.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/receiver/awscontainerinsightreceiver/README.md b/receiver/awscontainerinsightreceiver/README.md index 9729cf8c9465..bbac91b70e89 100644 --- a/receiver/awscontainerinsightreceiver/README.md +++ b/receiver/awscontainerinsightreceiver/README.md @@ -340,17 +340,18 @@ kubectl apply -f config.yaml ## Available Metrics and Resource Attributes ### Cluster -| Metric | Unit | -|------------------------------------------------------------|---------| -| cluster_failed_node_count | Count | -| cluster_node_count | Count | -| apiserver_storage_objects | Count | -| apiserver_request_total | Count | -| apiserver_request_duration_seconds | Seconds | -| apiserver_admission_controller_admission_duration_seconds | Seconds | -| rest_client_request_duration_seconds | Seconds | -| rest_client_requests_total | Count | -| etcd_request_duration_seconds | Seconds | +| Metric | Unit | +|-----------------------------------------------------------|---------| +| cluster_failed_node_count | Count | +| cluster_node_count | Count | +| cluster_number_of_running_pods | Count | +| apiserver_storage_objects | Count | +| apiserver_request_total | Count | +| apiserver_request_duration_seconds | Seconds | +| apiserver_admission_controller_admission_duration_seconds | Seconds | +| rest_client_request_duration_seconds | Seconds | +| rest_client_requests_total | Count | +| etcd_request_duration_seconds | Seconds |