@cryptotaxi247 / netdata-1 / commits / 8535123f4

rename kubernetes containers; fixes #3369

Costa Tsaousis (ktsaou) committed Feb 2, 2018 at 01:56 UTC 8535123f41a9ba901caf41cd1d5a17fe71d58b89
2 files changed +37 -16
plugins.d/cgroup-name.sh
+33 -13
@@ -94,6 +94,23 @@ function docker_get_name_api {
94 return 0
95 }
96
97 +function docker_get_name {
98 + local id="${1}"
99 + if hash docker 2>/dev/null
100 + then
101 + docker_get_name_classic "${id}"
102 + else
103 + docker_get_name_api "${id}" || docker_get_name_classic "${id}"
104 + fi
105 + if [ -z "${NAME}" ]
106 + then
107 + warning "cannot find the name of docker container '${id}'"
108 + NAME="${id:0:12}"
109 + else
110 + info "docker container '${id}' is named '${NAME}'"
111 + fi
112 +}
113 +
114 if [ -z "${NAME}" ]
115 then
116 if [[ "${CGROUP}" =~ ^.*docker[-_/\.][a-fA-F0-9]+[-_\.]?.*$ ]]
@@ -105,19 +122,22 @@ if [ -z "${NAME}" ]
122
123 if [ ! -z "${DOCKERID}" -a \( ${#DOCKERID} -eq 64 -o ${#DOCKERID} -eq 12 \) ]
124 then
108 - if hash docker 2>/dev/null
109 - then
110 - docker_get_name_classic ${DOCKERID}
111 - else
112 - docker_get_name_api ${DOCKERID} || docker_get_name_classic ${DOCKERID}
113 - fi
114 - if [ -z "${NAME}" ]
115 - then
116 - warning "cannot find the name of docker container '${DOCKERID}'"
117 - NAME="${DOCKERID:0:12}"
118 - else
119 - info "docker container '${DOCKERID}' is named '${NAME}'"
120 - fi
125 + docker_get_name "${DOCKERID}"
126 + else
127 + error "a docker id cannot be extracted from docker cgroup '${CGROUP}'."
128 + fi
129 + elif [[ "${CGROUP}" =~ ^.*kubepods[_/].*[_/]pod[a-fA-F0-9-]+[_/][a-fA-F0-9]+$ ]]
130 + then
131 + # kubernetes
132 +
133 + DOCKERID="$( echo "${CGROUP}" | sed "s|^.*kubepods[_/].*[_/]pod[a-fA-F0-9-]\+[_/]\([a-fA-F0-9]\+\)$|\1|" )"
134 + # echo "DOCKERID=${DOCKERID}"
135 +
136 + if [ ! -z "${DOCKERID}" -a \( ${#DOCKERID} -eq 64 -o ${#DOCKERID} -eq 12 \) ]
137 + then
138 + docker_get_name "${DOCKERID}"
139 + else
140 + error "a docker id cannot be extracted from kubernetes cgroup '${CGROUP}'."
141 fi
142 elif [[ "${CGROUP}" =~ machine.slice_machine.*-qemu ]]
143 then
src/sys_fs_cgroup.c
+4 -3
@@ -213,7 +213,8 @@ void read_cgroup_plugin_configuration() {
213 " *docker* "
214 " *lxc* "
215 " *qemu* "
216 - " *.libvirt-qemu " // #3010
216 + " *kubepods* " // #3396
217 + " *.libvirt-qemu " // #3010
218 " * "
219 ), NULL, SIMPLE_PATTERN_EXACT);
220
@@ -839,9 +840,9 @@ static inline void cgroup_get_chart_name(struct cgroup *cg) {
840 pid_t cgroup_pid;
841 char buffer[CGROUP_CHARTID_LINE_MAX + 1];
842
842 - snprintfz(buffer, CGROUP_CHARTID_LINE_MAX, "exec %s '%s'", cgroups_rename_script, cg->chart_id);
843 + snprintfz(buffer, CGROUP_CHARTID_LINE_MAX, "exec %s '%s' '%s'", cgroups_rename_script, cg->chart_id, cg->id);
844
844 - debug(D_CGROUP, "executing command '%s' for cgroup '%s'", buffer, cg->id);
845 + debug(D_CGROUP, "executing command \"%s\" for cgroup '%s'", buffer, cg->id);
846 FILE *fp = mypopen(buffer, &cgroup_pid);
847 if(fp) {
848 // debug(D_CGROUP, "reading from command '%s' for cgroup '%s'", buffer, cg->id);