cgroups: now all cgroups are evaluated by default, up to 500 cgroups are allowed by default; .scope are enabled by default
Costa Tsaousis committed
May 2, 2016 at 18:52 UTC
4b776027ad367fba3725c1dd665bcfe3b6369df3
2 files changed
+32
-30
plugins.d/cgroup-name.sh
+22
-14
@@ -1,6 +1,7 @@
1
#!/bin/bash
2
3
export PATH="${PATH}:/sbin:/usr/sbin:/usr/local/sbin"
4
+export LC_ALL=C
5
6
NETDATA_CONFIG_DIR="${NETDATA_CONFIG_DIR-/etc/netdata}"
7
CONFIG="${NETDATA_CONFIG_DIR}/cgroups-names.conf"
@@ -20,26 +21,33 @@ if [ -f "${CONFIG}" ]
21
then
22
echo >&2 "${0}: cannot find cgroup '${CGROUP}' in '${CONFIG}'."
23
fi
23
-else
24
- echo >&2 "${0}: configuration file '${CONFIG}' is not available."
25
-fi
26
-
27
-if [ -z "${NAME}" -a "${CGROUP:0:7}" = "docker/" ]
28
- then
29
- NAME="$(docker ps --filter=id="${CGROUP:7:64}" --format="{{.Names}}")"
30
- [ -z "${NAME}" ] && NAME="${CGROUP:0:19}"
31
- [ ${#NAME} -gt 20 ] && NAME="${NAME:0:20}"
24
+#else
25
+# echo >&2 "${0}: configuration file '${CONFIG}' is not available."
26
fi
27
28
if [ -z "${NAME}" ]
29
then
36
- if [ ${#CGROUP} -gt 20 ]
30
+ if [[ "${CGROUP}" =~ ^.*docker[-/\.][a-fA-F0-9]+[-\.]?.*$ ]]
31
then
38
- NAME="${CGROUP:0:20}"
39
- else
40
- NAME="${CGROUP}"
32
+ DOCKERID="$( echo "${CGROUP}" | sed "s|^.*docker[-/]\([a-fA-F0-9]\+\)[-\.]\?.*$|\1|" )"
33
+
34
+ if [ ! -z "${DOCKERID}" -a \( ${#DOCKERID} -eq 64 -o ${#DOCKERID} -eq 12 \) ]
35
+ then
36
+ echo >&2 "Running command: docker ps --filter=id=\"${DOCKERID}\" --format=\"{{.Names}}\""
37
+ NAME="$( docker ps --filter=id="${DOCKERID}" --format="{{.Names}}" )"
38
+ if [ -z "${NAME}" ]
39
+ then
40
+ echo >&2 "Cannot find the name of docker container '${DOCKERID}'"
41
+ NAME="${DOCKERID:0:12}"
42
+ else
43
+ echo >&2 "Docker container '${DOCKERID}' is named '${NAME}'"
44
+ fi
45
+ fi
46
fi
47
+
48
+ [ -z "${NAME}" ] && NAME="${CGROUP}"
49
+ [ ${#NAME} -gt 50 ] && NAME="${NAME:0:50}"
50
fi
51
44
-echo >&2 "${0}: cgroup '${CGROUP}' is named as '${NAME}'"
52
+echo >&2 "${0}: cgroup '${CGROUP}' is called '${NAME}'"
53
echo "${NAME}"
src/sys_fs_cgroup.c
+10
-16
@@ -32,7 +32,7 @@ static char *cgroup_blkio_base = NULL;
32
static char *cgroup_memory_base = NULL;
33
34
static int cgroup_root_count = 0;
35
-static int cgroup_root_max = 50;
35
+static int cgroup_root_max = 500;
36
static int cgroup_max_depth = 0;
37
38
void read_cgroup_plugin_configuration() {
@@ -657,18 +657,23 @@ struct cgroup *cgroup_add(const char *id) {
657
!strcmp(chart_id, "libvirt") ||
658
!strcmp(chart_id, "qemu") ||
659
!strcmp(chart_id, "systemd") ||
660
- !strcmp(chart_id, "user.slice") ||
660
!strcmp(chart_id, "system.slice") ||
661
!strcmp(chart_id, "machine.slice") ||
662
!strcmp(chart_id, "user") ||
663
!strcmp(chart_id, "system") ||
664
!strcmp(chart_id, "machine") ||
665
+ // starts with them
666
+ (len > 6 && !strncmp(chart_id, "user/", 6)) ||
667
+ (len > 11 && !strncmp(chart_id, "user.slice/", 11)) ||
668
+ // ends with them
669
(len > 5 && !strncmp(&chart_id[len - 5], ".user", 5)) ||
667
- (len > 6 && !strncmp(&chart_id[len - 6], ".scope", 6)) ||
670
+ (len > 6 && !strncmp(&chart_id[len - 6], ".slice", 6)) ||
671
+ (len > 8 && !strncmp(&chart_id[len - 8], ".session", 8)) ||
672
+ (len > 8 && !strncmp(&chart_id[len - 8], ".service", 8)) ||
673
(len > 10 && !strncmp(&chart_id[len - 10], ".partition", 10))
674
) {
675
def = 0;
671
- debug(D_CGROUP, "cgroup '%s' is cgroup parent (by default %s)", id, (def)?"enabled":"disabled");
676
+ debug(D_CGROUP, "cgroup '%s' is %s (by default)", id, (def)?"enabled":"disabled");
677
}
678
}
679
@@ -813,18 +818,7 @@ void find_dir_in_subdirs(const char *base, const char *this, void (*callback)(co
818
char option[FILENAME_MAX + 1];
819
snprintf(option, FILENAME_MAX, "search for cgroups under %s", r);
820
option[FILENAME_MAX] = '\0';
816
-
817
- int def = 1;
818
- size_t len = strlen(r);
819
- if((len > 5 && !strncmp(&r[len - 5], ".user", 5)) ||
820
- !strcmp(r, "system.slice") ||
821
- !strcmp(r, "user.slice") ||
822
- !strcmp(r, "system") ||
823
- !strcmp(r, "user") ||
824
- !strcmp(r, "systemd"))
825
- def = 0;
826
-
827
- enabled = config_get_boolean("plugin:cgroups", option, def);
821
+ enabled = config_get_boolean("plugin:cgroups", option, 1);
822
}
823
824
if(enabled) {