diff options
author | Ilya Mashchenko <ilya@netdata.cloud> | 2022-05-09 22:04:01 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-09 22:04:01 +0300 |
commit | ff4b15fb5681581f780e330a31deabb8ec206687 (patch) | |
tree | ee778f501181840d8372740620610b061e51fa29 /collectors/cgroups.plugin | |
parent | 8e573c63208f66c1ed533369f8b4917da981b962 (diff) |
feat(cgroups.plugin): add k8s cluster name label (GKE only) (#12858)
Diffstat (limited to 'collectors/cgroups.plugin')
-rwxr-xr-x | collectors/cgroups.plugin/cgroup-name.sh | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/collectors/cgroups.plugin/cgroup-name.sh b/collectors/cgroups.plugin/cgroup-name.sh index e65167568f..924b5b3197 100755 --- a/collectors/cgroups.plugin/cgroup-name.sh +++ b/collectors/cgroups.plugin/cgroup-name.sh @@ -139,6 +139,20 @@ function k8s_is_pause_container() { return } +function k8s_gcp_get_cluster_name() { + local header url id loc name + header="Metadata-Flavor: Google" + url="http://metadata/computeMetadata/v1" + if id=$(curl --fail -s -m 3 --noproxy "*" -H "$header" "$url/project/project-id") && + loc=$(curl --fail -s -m 3 --noproxy "*" -H "$header" "$url/instance/attributes/cluster-location") && + name=$(curl --fail -s -m 3 --noproxy "*" -H "$header" "$url/instance/attributes/cluster-name") && + [ -n "$id" ] && [ -n "$loc" ] && [ -n "$name" ]; then + echo "gke_${id}_${loc}_${name}" + return 0 + fi + return 1 +} + # k8s_get_kubepod_name resolves */kubepods/* cgroup name. # pod level cgroup name format: 'pod_<namespace>_<pod_name>' # container level cgroup name format: 'cntr_<namespace>_<pod_name>_<container_name>' @@ -230,21 +244,29 @@ function k8s_get_kubepod_name() { return 1 fi + local tmp_kube_cluster_name="${TMPDIR:-"/tmp"}/netdata-cgroups-k8s-cluster-name" local tmp_kube_system_ns_uid_file="${TMPDIR:-"/tmp"}/netdata-cgroups-kubesystem-uid" local tmp_kube_containers_file="${TMPDIR:-"/tmp"}/netdata-cgroups-containers" + local kube_cluster_name local kube_system_uid local labels if [ -n "$cntr_id" ] && + [ -f "$tmp_kube_cluster_name" ] && [ -f "$tmp_kube_system_ns_uid_file" ] && [ -f "$tmp_kube_containers_file" ] && labels=$(grep "$cntr_id" "$tmp_kube_containers_file" 2>/dev/null); then IFS= read -r kube_system_uid 2>/dev/null <"$tmp_kube_system_ns_uid_file" + IFS= read -r kube_cluster_name 2>/dev/null <"$tmp_kube_cluster_name" else IFS= read -r kube_system_uid 2>/dev/null <"$tmp_kube_system_ns_uid_file" + IFS= read -r kube_cluster_name 2>/dev/null <"$tmp_kube_containers_file" + [ -z "$kube_cluster_name" ] && ! kube_cluster_name=$(k8s_gcp_get_cluster_name) && kube_cluster_name="unknown" + local kube_system_ns local pods + if [ -n "${KUBERNETES_SERVICE_HOST}" ] && [ -n "${KUBERNETES_PORT_443_TCP_PORT}" ]; then local token header host url token="$(</var/run/secrets/kubernetes.io/serviceaccount/token)" @@ -308,6 +330,7 @@ function k8s_get_kubepod_name() { return 1 fi + [ -n "$kube_cluster_name" ] && echo "$kube_cluster_name" >"$tmp_kube_cluster_name" 2>/dev/null [ -n "$kube_system_ns" ] && [ -n "$kube_system_uid" ] && echo "$kube_system_uid" >"$tmp_kube_system_ns_uid_file" 2>/dev/null echo "$containers" >"$tmp_kube_containers_file" 2>/dev/null fi @@ -326,6 +349,7 @@ function k8s_get_kubepod_name() { labels+=',kind="container"' labels+=",qos_class=\"$qos_class\"" [ -n "$kube_system_uid" ] && [ "$kube_system_uid" != "null" ] && labels+=",cluster_id=\"$kube_system_uid\"" + [ -n "$kube_cluster_name" ] && [ "$kube_cluster_name" != "unknown" ] && labels+=",cluster_name=\"$kube_cluster_name\"" name="cntr" name+="_$(get_lbl_val "$labels" namespace)" name+="_$(get_lbl_val "$labels" pod_name)" @@ -341,6 +365,7 @@ function k8s_get_kubepod_name() { labels+=',kind="pod"' labels+=",qos_class=\"$qos_class\"" [ -n "$kube_system_uid" ] && [ "$kube_system_uid" != "null" ] && labels+=",cluster_id=\"$kube_system_uid\"" + [ -n "$kube_cluster_name" ] && [ "$kube_cluster_name" != "unknown" ] && labels+=",cluster_name=\"$kube_cluster_name\"" name="pod" name+="_$(get_lbl_val "$labels" namespace)" name+="_$(get_lbl_val "$labels" pod_name)" |