From e0923791d059b96ec721006573b6d4a2d949add6 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Sun, 6 Feb 2022 15:33:30 +0100 Subject: [PATCH 1/7] Refactor systemd version Move the systemd version function to an exporter method. This way we can update the Verison information at every scrape, in case the underlying version changes. Signed-off-by: Ben Kochie --- collector/systemd_linux.go | 39 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/collector/systemd_linux.go b/collector/systemd_linux.go index b114e3b81c..f75b5cf2d4 100644 --- a/collector/systemd_linux.go +++ b/collector/systemd_linux.go @@ -57,6 +57,8 @@ var ( enableTaskMetrics = kingpin.Flag("collector.systemd.enable-task-metrics", "Enables service unit tasks metrics unit_tasks_current and unit_tasks_max").Bool() enableRestartsMetrics = kingpin.Flag("collector.systemd.enable-restarts-metrics", "Enables service unit metric service_restart_total").Bool() enableStartTimeMetrics = kingpin.Flag("collector.systemd.enable-start-time-metrics", "Enables service unit metric unit_start_time_seconds").Bool() + + systemdVersionRE = regexp.MustCompile(`[0-9]{3,}(\.[0-9]+)?`) ) type systemdCollector struct { @@ -152,12 +154,6 @@ func NewSystemdCollector(logger log.Logger) (Collector, error) { level.Info(logger).Log("msg", "Parsed flag --collector.systemd.unit-exclude", "flag", *unitExclude) unitExcludePattern := regexp.MustCompile(fmt.Sprintf("^(?:%s)$", *unitExclude)) - systemdVersion := getSystemdVersion(logger) - if systemdVersion < minSystemdVersionSystemState { - level.Warn(logger).Log("msg", "Detected systemd version is lower than minimum", "current", systemdVersion, "minimum", minSystemdVersionSystemState) - level.Warn(logger).Log("msg", "Some systemd state and timer metrics will not be available") - } - return &systemdCollector{ unitDesc: unitDesc, unitStartTimeDesc: unitStartTimeDesc, @@ -171,7 +167,6 @@ func NewSystemdCollector(logger log.Logger) (Collector, error) { socketCurrentConnectionsDesc: socketCurrentConnectionsDesc, socketRefusedConnectionsDesc: socketRefusedConnectionsDesc, systemdVersionDesc: systemdVersionDesc, - systemdVersion: systemdVersion, unitIncludePattern: unitIncludePattern, unitExcludePattern: unitExcludePattern, logger: logger, @@ -188,6 +183,13 @@ func (c *systemdCollector) Update(ch chan<- prometheus.Metric) error { } defer conn.Close() + systemdVersion := c.getSystemdVersion(conn) + if systemdVersion < minSystemdVersionSystemState { + level.Debug(c.logger).Log("msg", "Detected systemd version is lower than minimum, some systemd state and timer metrics will not be available", "current", systemdVersion, "minimum", minSystemdVersionSystemState) + } + ch <- prometheus.MustNewConstMetric( + c.systemdVersionDesc, prometheus.GaugeValue, systemdVersion) + allUnits, err := c.getAllUnits(conn) if err != nil { return fmt.Errorf("couldn't get units: %w", err) @@ -234,7 +236,7 @@ func (c *systemdCollector) Update(ch chan<- prometheus.Metric) error { }() } - if c.systemdVersion >= minSystemdVersionSystemState { + if systemdVersion >= minSystemdVersionSystemState { wg.Add(1) go func() { defer wg.Done() @@ -252,15 +254,12 @@ func (c *systemdCollector) Update(ch chan<- prometheus.Metric) error { level.Debug(c.logger).Log("msg", "collectSockets took", "duration_seconds", time.Since(begin).Seconds()) }() - if c.systemdVersion >= minSystemdVersionSystemState { + if systemdVersion >= minSystemdVersionSystemState { begin = time.Now() err = c.collectSystemState(conn, ch) level.Debug(c.logger).Log("msg", "collectSystemState took", "duration_seconds", time.Since(begin).Seconds()) } - ch <- prometheus.MustNewConstMetric( - c.systemdVersionDesc, prometheus.GaugeValue, float64(c.systemdVersion)) - return err } @@ -488,23 +487,17 @@ func filterUnits(units []unit, includePattern, excludePattern *regexp.Regexp, lo return filtered } -func getSystemdVersion(logger log.Logger) float64 { - conn, err := newSystemdDbusConn() - if err != nil { - level.Warn(logger).Log("msg", "Unable to get systemd dbus connection, defaulting systemd version to 0", "err", err) - return 0 - } - defer conn.Close() +func (c *systemdCollector) getSystemdVersion(conn *dbus.Conn) float64 { version, err := conn.GetManagerProperty("Version") if err != nil { - level.Warn(logger).Log("msg", "Unable to get systemd version property, defaulting to 0") + level.Debug(c.logger).Log("msg", "Unable to get systemd version property, defaulting to 0") return 0 } - re := regexp.MustCompile(`[0-9][0-9][0-9](\.[0-9]+)?`) - version = re.FindString(version) + level.Debug(c.logger).Log("msg", "Got systemd version", "version", version) + version = systemdVersionRE.FindString(version) v, err := strconv.ParseFloat(version, 64) if err != nil { - level.Warn(logger).Log("msg", "Got invalid systemd version", "version", version) + level.Debug(c.logger).Log("msg", "Got invalid systemd version", "version", version) return 0 } return v From 028ae9a3928dc5c87d5bf11be5480d9e7ff8716a Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Thu, 17 Feb 2022 14:25:49 +0100 Subject: [PATCH 2/7] Add systemd version as label string. Signed-off-by: Ben Kochie --- collector/systemd_linux.go | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/collector/systemd_linux.go b/collector/systemd_linux.go index f75b5cf2d4..453ebde482 100644 --- a/collector/systemd_linux.go +++ b/collector/systemd_linux.go @@ -131,7 +131,7 @@ func NewSystemdCollector(logger log.Logger) (Collector, error) { "Total number of refused socket connections", []string{"name"}, nil) systemdVersionDesc := prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "version"), - "Detected systemd version", []string{}, nil) + "Detected systemd version", []string{"version"}, nil) if *oldUnitExclude != "" { if !unitExcludeSet { @@ -183,12 +183,16 @@ func (c *systemdCollector) Update(ch chan<- prometheus.Metric) error { } defer conn.Close() - systemdVersion := c.getSystemdVersion(conn) + systemdVersion, systemdVersionFull := c.getSystemdVersion(conn) if systemdVersion < minSystemdVersionSystemState { level.Debug(c.logger).Log("msg", "Detected systemd version is lower than minimum, some systemd state and timer metrics will not be available", "current", systemdVersion, "minimum", minSystemdVersionSystemState) } ch <- prometheus.MustNewConstMetric( - c.systemdVersionDesc, prometheus.GaugeValue, systemdVersion) + c.systemdVersionDesc, + prometheus.GaugeValue, + systemdVersion, + systemdVersionFull, + ) allUnits, err := c.getAllUnits(conn) if err != nil { @@ -487,18 +491,19 @@ func filterUnits(units []unit, includePattern, excludePattern *regexp.Regexp, lo return filtered } -func (c *systemdCollector) getSystemdVersion(conn *dbus.Conn) float64 { +func (c *systemdCollector) getSystemdVersion(conn *dbus.Conn) (float64, string) { version, err := conn.GetManagerProperty("Version") if err != nil { level.Debug(c.logger).Log("msg", "Unable to get systemd version property, defaulting to 0") - return 0 + return 0, "" } + version = strings.TrimPrefix(strings.TrimSuffix(version, `"`), `"`) level.Debug(c.logger).Log("msg", "Got systemd version", "version", version) - version = systemdVersionRE.FindString(version) - v, err := strconv.ParseFloat(version, 64) + parsedVersion := systemdVersionRE.FindString(version) + v, err := strconv.ParseFloat(parsedVersion, 64) if err != nil { level.Debug(c.logger).Log("msg", "Got invalid systemd version", "version", version) - return 0 + return 0, "" } - return v + return v, version } From e825c6950d74be0793af0f516b5b10a0f4fd0de0 Mon Sep 17 00:00:00 2001 From: bielu Date: Wed, 16 Mar 2022 11:13:54 +0800 Subject: [PATCH 3/7] add cgroups collector Signed-off-by: biello --- collector/cgroups_linux.go | 65 ++++++++++++++++++++++++++++++++++++++ go.mod | 3 +- go.sum | 4 +++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 collector/cgroups_linux.go diff --git a/collector/cgroups_linux.go b/collector/cgroups_linux.go new file mode 100644 index 0000000000..6eec4822fd --- /dev/null +++ b/collector/cgroups_linux.go @@ -0,0 +1,65 @@ +// Copyright 2015 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !nostat +// +build !nostat + +package collector + +import ( + "fmt" + "strconv" + + "github.com/go-kit/log" + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/procfs" +) + +type cgroupSummaryCollector struct { + fs procfs.FS + cgroups *prometheus.Desc + logger log.Logger +} + +func init() { + registerCollector("cgroupSummary", defaultEnabled, NewCgroupSummaryCollector) +} + +// NewCgroupSummaryCollector returns a new Collector exposing a summary of cgroups. +func NewCgroupSummaryCollector(logger log.Logger) (Collector, error) { + fs, err := procfs.NewFS(*procPath) + if err != nil { + return nil, fmt.Errorf("failed to open procfs: %w", err) + } + return &cgroupSummaryCollector{ + fs: fs, + cgroups: prometheus.NewDesc( + prometheus.BuildFQName(namespace, "", "cgroups"), + "Current cgroup number of the subsystem.", + []string{"subsys_name", "enabled"}, nil, + ), + logger: logger, + }, nil +} + +// Update implements Collector and exposes cgroup statistics. +func (c *cgroupSummaryCollector) Update(ch chan<- prometheus.Metric) error { + cgroupSummarys, err := c.fs.CgroupSummarys() + if err != nil { + return err + } + for _, cs := range cgroupSummarys { + ch <- prometheus.MustNewConstMetric(c.cgroups, prometheus.CounterValue, float64(cs.Cgroups), cs.SubsysName, strconv.Itoa(cs.Enabled)) + } + return nil +} diff --git a/go.mod b/go.mod index 2311026de1..922ff0c44d 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ require ( github.com/beevik/ntp v0.3.0 github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf github.com/ema/qdisc v0.0.0-20200603082823-62d0308e3e00 + github.com/go-kit/kit v0.9.0 github.com/go-kit/log v0.2.0 github.com/godbus/dbus v0.0.0-20190402143921-271e53dc4968 github.com/hashicorp/go-envparse v0.0.0-20200406174449-d9cfd743a15e @@ -17,7 +18,7 @@ require ( github.com/prometheus/client_model v0.2.0 github.com/prometheus/common v0.32.1 github.com/prometheus/exporter-toolkit v0.7.0 - github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f + github.com/prometheus/procfs v0.7.4-0.20211209105546-0f8a320e1e1f github.com/safchain/ethtool v0.1.0 github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973 // indirect github.com/soundcloud/go-runit v0.0.0-20150630195641-06ad41a06c4a diff --git a/go.sum b/go.sum index 0c47623a08..a6e64d06dc 100644 --- a/go.sum +++ b/go.sum @@ -74,6 +74,7 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= @@ -83,6 +84,7 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus v0.0.0-20190402143921-271e53dc4968 h1:s+PDl6lozQ+dEUtUtQnO7+A2iPG3sK1pI4liU+jxn90= github.com/godbus/dbus v0.0.0-20190402143921-271e53dc4968/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= @@ -244,6 +246,8 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f h1:ncXqc93eJV1Ncr3f6GA3MrIDNkNHvcPonRC2QgZaVkQ= github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.4-0.20211209105546-0f8a320e1e1f h1:tg+5gOV1AkhTfWNi94UA5rvn+Mat/thyB2WASYAzPZo= +github.com/prometheus/procfs v0.7.4-0.20211209105546-0f8a320e1e1f/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/safchain/ethtool v0.1.0 h1:SsRnt87qssm3RltLJze6kM+4fs32twq6mZEcBxbDMVg= github.com/safchain/ethtool v0.1.0/go.mod h1:WkKB1DnNtvsMlDmQ50sgwowDJV/hGbJSOvJoEXs1AJQ= From a183e99becceb9a178eaa2b70e90c4dae2b49671 Mon Sep 17 00:00:00 2001 From: bielu Date: Wed, 16 Mar 2022 11:14:36 +0800 Subject: [PATCH 4/7] update Copyright Signed-off-by: biello --- collector/cgroups_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collector/cgroups_linux.go b/collector/cgroups_linux.go index 6eec4822fd..c144864373 100644 --- a/collector/cgroups_linux.go +++ b/collector/cgroups_linux.go @@ -1,4 +1,4 @@ -// Copyright 2015 The Prometheus Authors +// Copyright 2022 The Prometheus Authors // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at From 8655e1e4b2c97d1864415c2e8c90639a0bc23a94 Mon Sep 17 00:00:00 2001 From: biello Date: Wed, 16 Mar 2022 14:50:10 +0800 Subject: [PATCH 5/7] go mod tidy Signed-off-by: biello --- go.mod | 1 - go.sum | 4 ---- 2 files changed, 5 deletions(-) diff --git a/go.mod b/go.mod index 922ff0c44d..76112cf247 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ require ( github.com/beevik/ntp v0.3.0 github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf github.com/ema/qdisc v0.0.0-20200603082823-62d0308e3e00 - github.com/go-kit/kit v0.9.0 github.com/go-kit/log v0.2.0 github.com/godbus/dbus v0.0.0-20190402143921-271e53dc4968 github.com/hashicorp/go-envparse v0.0.0-20200406174449-d9cfd743a15e diff --git a/go.sum b/go.sum index a6e64d06dc..9b80cd79cc 100644 --- a/go.sum +++ b/go.sum @@ -74,7 +74,6 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= @@ -84,7 +83,6 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus v0.0.0-20190402143921-271e53dc4968 h1:s+PDl6lozQ+dEUtUtQnO7+A2iPG3sK1pI4liU+jxn90= github.com/godbus/dbus v0.0.0-20190402143921-271e53dc4968/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= @@ -244,8 +242,6 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f h1:ncXqc93eJV1Ncr3f6GA3MrIDNkNHvcPonRC2QgZaVkQ= -github.com/prometheus/procfs v0.7.4-0.20211011103944-1a7a2bd3279f/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.4-0.20211209105546-0f8a320e1e1f h1:tg+5gOV1AkhTfWNi94UA5rvn+Mat/thyB2WASYAzPZo= github.com/prometheus/procfs v0.7.4-0.20211209105546-0f8a320e1e1f/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= From 1aee02373ab70ae5b0a354dad34ca071cef512e8 Mon Sep 17 00:00:00 2001 From: biello Date: Wed, 16 Mar 2022 15:54:59 +0800 Subject: [PATCH 6/7] add fixture for e2e_test Signed-off-by: biello --- collector/fixtures/e2e-output.txt | 15 +++++++++++++++ collector/fixtures/proc/cgroups | 13 +++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 collector/fixtures/proc/cgroups diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index 2f5db751f0..aa81e338b1 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -238,6 +238,20 @@ node_buddyinfo_blocks{node="0",size="8",zone="Normal"} 0 node_buddyinfo_blocks{node="0",size="9",zone="DMA"} 1 node_buddyinfo_blocks{node="0",size="9",zone="DMA32"} 0 node_buddyinfo_blocks{node="0",size="9",zone="Normal"} 0 +# HELP node_cgroups Current cgroup number of the subsystem. +# TYPE node_cgroups counter +node_cgroups{enabled="1",subsys_name="blkio"} 170 +node_cgroups{enabled="1",subsys_name="cpu"} 172 +node_cgroups{enabled="1",subsys_name="cpuacct"} 172 +node_cgroups{enabled="1",subsys_name="cpuset"} 47 +node_cgroups{enabled="1",subsys_name="devices"} 170 +node_cgroups{enabled="1",subsys_name="freezer"} 47 +node_cgroups{enabled="1",subsys_name="hugetlb"} 47 +node_cgroups{enabled="1",subsys_name="memory"} 234 +node_cgroups{enabled="1",subsys_name="net_cls"} 47 +node_cgroups{enabled="1",subsys_name="perf_event"} 47 +node_cgroups{enabled="1",subsys_name="pids"} 170 +node_cgroups{enabled="1",subsys_name="rdma"} 1 # HELP node_context_switches_total Total number of context switches. # TYPE node_context_switches_total counter node_context_switches_total 3.8014093e+07 @@ -2973,6 +2987,7 @@ node_scrape_collector_success{collector="bcache"} 1 node_scrape_collector_success{collector="bonding"} 1 node_scrape_collector_success{collector="btrfs"} 1 node_scrape_collector_success{collector="buddyinfo"} 1 +node_scrape_collector_success{collector="cgroupSummary"} 1 node_scrape_collector_success{collector="conntrack"} 1 node_scrape_collector_success{collector="cpu"} 1 node_scrape_collector_success{collector="cpufreq"} 1 diff --git a/collector/fixtures/proc/cgroups b/collector/fixtures/proc/cgroups new file mode 100644 index 0000000000..99382e312e --- /dev/null +++ b/collector/fixtures/proc/cgroups @@ -0,0 +1,13 @@ +#subsys_name hierarchy num_cgroups enabled +cpuset 5 47 1 +cpu 3 172 1 +cpuacct 3 172 1 +blkio 6 170 1 +memory 7 234 1 +devices 11 170 1 +freezer 9 47 1 +net_cls 2 47 1 +perf_event 8 47 1 +hugetlb 12 47 1 +pids 10 170 1 +rdma 4 1 1 \ No newline at end of file From a30af56dc8b79bbb4418186a62ddc88aab0f2a50 Mon Sep 17 00:00:00 2001 From: biello Date: Wed, 16 Mar 2022 17:08:23 +0800 Subject: [PATCH 7/7] add "_total" suffix to counter metrics Signed-off-by: biello --- collector/cgroups_linux.go | 2 +- collector/fixtures/e2e-output.txt | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/collector/cgroups_linux.go b/collector/cgroups_linux.go index c144864373..80ae7da1da 100644 --- a/collector/cgroups_linux.go +++ b/collector/cgroups_linux.go @@ -44,7 +44,7 @@ func NewCgroupSummaryCollector(logger log.Logger) (Collector, error) { return &cgroupSummaryCollector{ fs: fs, cgroups: prometheus.NewDesc( - prometheus.BuildFQName(namespace, "", "cgroups"), + prometheus.BuildFQName(namespace, "", "cgroups_total"), "Current cgroup number of the subsystem.", []string{"subsys_name", "enabled"}, nil, ), diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index aa81e338b1..28e48749a0 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -238,20 +238,20 @@ node_buddyinfo_blocks{node="0",size="8",zone="Normal"} 0 node_buddyinfo_blocks{node="0",size="9",zone="DMA"} 1 node_buddyinfo_blocks{node="0",size="9",zone="DMA32"} 0 node_buddyinfo_blocks{node="0",size="9",zone="Normal"} 0 -# HELP node_cgroups Current cgroup number of the subsystem. -# TYPE node_cgroups counter -node_cgroups{enabled="1",subsys_name="blkio"} 170 -node_cgroups{enabled="1",subsys_name="cpu"} 172 -node_cgroups{enabled="1",subsys_name="cpuacct"} 172 -node_cgroups{enabled="1",subsys_name="cpuset"} 47 -node_cgroups{enabled="1",subsys_name="devices"} 170 -node_cgroups{enabled="1",subsys_name="freezer"} 47 -node_cgroups{enabled="1",subsys_name="hugetlb"} 47 -node_cgroups{enabled="1",subsys_name="memory"} 234 -node_cgroups{enabled="1",subsys_name="net_cls"} 47 -node_cgroups{enabled="1",subsys_name="perf_event"} 47 -node_cgroups{enabled="1",subsys_name="pids"} 170 -node_cgroups{enabled="1",subsys_name="rdma"} 1 +# HELP node_cgroups_total Current cgroup number of the subsystem. +# TYPE node_cgroups_total counter +node_cgroups_total{enabled="1",subsys_name="blkio"} 170 +node_cgroups_total{enabled="1",subsys_name="cpu"} 172 +node_cgroups_total{enabled="1",subsys_name="cpuacct"} 172 +node_cgroups_total{enabled="1",subsys_name="cpuset"} 47 +node_cgroups_total{enabled="1",subsys_name="devices"} 170 +node_cgroups_total{enabled="1",subsys_name="freezer"} 47 +node_cgroups_total{enabled="1",subsys_name="hugetlb"} 47 +node_cgroups_total{enabled="1",subsys_name="memory"} 234 +node_cgroups_total{enabled="1",subsys_name="net_cls"} 47 +node_cgroups_total{enabled="1",subsys_name="perf_event"} 47 +node_cgroups_total{enabled="1",subsys_name="pids"} 170 +node_cgroups_total{enabled="1",subsys_name="rdma"} 1 # HELP node_context_switches_total Total number of context switches. # TYPE node_context_switches_total counter node_context_switches_total 3.8014093e+07