Skip to main content

No project description provided

Project description

CGroups exporter

Exporter for CGroups metrics, for LXD/Docker/systemd.

Collects metrics for all cgroups based containers or SystemD services on the host machine, without the need to install separate exporters inside each container.

Installation

pip install cgroups-exporter

Example

A simple example collects all available metrics for LXD containers.

cgroups-exporter --cgroups-path "/sys/fs/cgroup/*/lxc.payload.*"

You can pass several path templates, then metrics will be collected from everyone.

In the example below, metrics will be collected for:

  • All LXD containers
  • All SystemD services running inside the LXD containers
  • All Docker containers inside the LXD containers.
  • All user slices (when used entering through the ssh the SystemD creates the slice named by template user-$UID)
cgroups-exporter \
	--cgroups-path "/sys/fs/cgroup/*/lxc.payload.*/" \
	--cgroups-path "/sys/fs/cgroup/unified/lxc.payload.*/**/*.service" \
	--cgroups-path "/sys/fs/cgroup/unified/lxc.payload.*/**/user-*" \
	--cgroups-path "/sys/fs/cgroup/cpu/lxc.payload.*/**/*.service" \
	--cgroups-path "/sys/fs/cgroup/unified/**/user.slice/user-*" \
	--cgroups-path "/sys/fs/cgroup/*/lxc.payload.*/docker/*"

Usage

Args that start with -- (eg. -s) can also be set in a config file (~/.cgroups-exporter.conf or /etc/cgroups-exporter.conf).

Config file syntax allows: key=value, flag=true, stuff=[a,b,c] (for details, see syntax here).

If an arg is specified in more than one place, then commandline values override environment variables which override config file values which override defaults.

usage: cgroups-exporter [-h]
                        [-s POOL_SIZE]
                        [-u USER]
                        [--log-level {debug,info,warning,error,fatal}]
                        [--log-format {stream,color,json,syslog}]
                        [--metrics-address METRICS_ADDRESS]
                        [--metrics-port METRICS_PORT]
                        --cgroups-path CGROUPS_PATH [CGROUPS_PATH ...]
                        [--collector-interval COLLECTOR_INTERVAL]
                        [--collector-delay COLLECTOR_DELAY]
                        [--collector-workers COLLECTOR_WORKERS]
                        [--profiler]
                        [--profiler-interval PROFILER_INTERVAL]
                        [--profiler-top-results PROFILER_TOP_RESULTS]
                        [--memory-tracer]
                        [--memory-tracer-interval MEMORY_TRACER_INTERVAL]
                        [--memory-tracer-top-results MEMORY_TRACER_TOP_RESULTS]

optional arguments:

  -h, --help            show this help message and exit
  -s POOL_SIZE, --pool-size POOL_SIZE
                        Thread pool size [env var: CGROUPS_EXPORTER_POOL_SIZE] (default: 4)
  -u USER, --user USER  Change process UID [env var: CGROUPS_EXPORTER_USER] (default: None)

Logging options:
  --log-level {debug,info,warning,error,fatal}
                        [env var: CGROUPS_EXPORTER_LOG_LEVEL] (default: info)
  --log-format {stream,color,json,syslog}
                        [env var: CGROUPS_EXPORTER_LOG_FORMAT] (default: color)

Metrics API options:
  --metrics-address METRICS_ADDRESS
                        [env var: CGROUPS_EXPORTER_METRICS_ADDRESS] (default: ::)
  --metrics-port METRICS_PORT
                        [env var: CGROUPS_EXPORTER_METRICS_PORT] (default: 9735)

Cgroups options:
  --cgroups-path CGROUPS_PATH [CGROUPS_PATH ...]
                        [env var: CGROUPS_EXPORTER_CGROUPS_PATH] (default: None)
  --collector-interval COLLECTOR_INTERVAL
                        [env var: CGROUPS_EXPORTER_COLLECTOR_INTERVAL] (default: 15.0)
  --collector-delay COLLECTOR_DELAY
                        [env var: CGROUPS_EXPORTER_COLLECTOR_DELAY] (default: 2.0)
  --collector-workers COLLECTOR_WORKERS
                        [env var: CGROUPS_EXPORTER_COLLECTOR_WORKERS] (default: 4)

Profiler settings:
  --profiler            [env var: CGROUPS_EXPORTER_PROFILER] (default: False)
  --profiler-interval PROFILER_INTERVAL
                        [env var: CGROUPS_EXPORTER_PROFILER_INTERVAL] (default: 5)
  --profiler-top-results PROFILER_TOP_RESULTS
                        [env var: CGROUPS_EXPORTER_PROFILER_TOP_RESULTS] (default: 20)

Memory tracer settings:
  --memory-tracer       [env var: CGROUPS_EXPORTER_MEMORY_TRACER] (default: False)
  --memory-tracer-interval MEMORY_TRACER_INTERVAL
                        [env var: CGROUPS_EXPORTER_MEMORY_TRACER_INTERVAL] (default: 5)
  --memory-tracer-top-results MEMORY_TRACER_TOP_RESULTS
                        [env var: CGROUPS_EXPORTER_MEMORY_TRACER_TOP_RESULTS] (default: 20)

Metrics

Name Description
cgroups_blkio_bfq_service_bytes_async BlockIO service bytes ('async' field from 'blkio.bfq.io_service_bytes' file)
cgroups_blkio_bfq_service_bytes_discard BlockIO service bytes ('discard' field from 'blkio.bfq.io_service_bytes' file)
cgroups_blkio_bfq_service_bytes_read BlockIO service bytes ('read' field from 'blkio.bfq.io_service_bytes' file)
cgroups_blkio_bfq_service_bytes_recursive_async BlockIO service bytes recursive ('async' field from 'blkio.bfq.io_service_bytes_recursive' file)
cgroups_blkio_bfq_service_bytes_recursive_discard BlockIO service bytes recursive ('discard' field from 'blkio.bfq.io_service_bytes_recursive' file)
cgroups_blkio_bfq_service_bytes_recursive_read BlockIO service bytes recursive ('read' field from 'blkio.bfq.io_service_bytes_recursive' file)
cgroups_blkio_bfq_service_bytes_recursive_sync BlockIO service bytes recursive ('sync' field from 'blkio.bfq.io_service_bytes_recursive' file)
cgroups_blkio_bfq_service_bytes_recursive_total BlockIO service bytes recursive ('total' field from 'blkio.bfq.io_service_bytes_recursive' file)
cgroups_blkio_bfq_service_bytes_recursive_write BlockIO service bytes recursive ('write' field from 'blkio.bfq.io_service_bytes_recursive' file)
cgroups_blkio_bfq_service_bytes_sync BlockIO service bytes ('sync' field from 'blkio.bfq.io_service_bytes' file)
cgroups_blkio_bfq_service_bytes_total BlockIO service bytes ('total' field from 'blkio.bfq.io_service_bytes' file)
cgroups_blkio_bfq_service_bytes_write BlockIO service bytes ('write' field from 'blkio.bfq.io_service_bytes' file)
cgroups_blkio_bfq_serviced_async BlockIO serviced bytes ('async' field from 'blkio.bfq.io_serviced' file)
cgroups_blkio_bfq_serviced_discard BlockIO serviced bytes ('discard' field from 'blkio.bfq.io_serviced' file)
cgroups_blkio_bfq_serviced_read BlockIO serviced bytes ('read' field from 'blkio.bfq.io_serviced' file)
cgroups_blkio_bfq_serviced_recursive_async BlockIO serviced bytes recursive ('async' field from 'blkio.bfq.io_serviced_recursive' file)
cgroups_blkio_bfq_serviced_recursive_discard BlockIO serviced bytes recursive ('discard' field from 'blkio.bfq.io_serviced_recursive' file)
cgroups_blkio_bfq_serviced_recursive_read BlockIO serviced bytes recursive ('read' field from 'blkio.bfq.io_serviced_recursive' file)
cgroups_blkio_bfq_serviced_recursive_sync BlockIO serviced bytes recursive ('sync' field from 'blkio.bfq.io_serviced_recursive' file)
cgroups_blkio_bfq_serviced_recursive_total BlockIO serviced bytes recursive ('total' field from 'blkio.bfq.io_serviced_recursive' file)
cgroups_blkio_bfq_serviced_recursive_write BlockIO serviced bytes recursive ('write' field from 'blkio.bfq.io_serviced_recursive' file)
cgroups_blkio_bfq_serviced_sync BlockIO serviced bytes ('sync' field from 'blkio.bfq.io_serviced' file)
cgroups_blkio_bfq_serviced_total BlockIO serviced bytes ('total' field from 'blkio.bfq.io_serviced' file)
cgroups_blkio_bfq_serviced_write BlockIO serviced bytes ('write' field from 'blkio.bfq.io_serviced' file)
cgroups_blkio_throttle_service_bytes_async BlockIO service bytes ('async' field from 'blkio.throttle.io_service_bytes' file)
cgroups_blkio_throttle_service_bytes_discard BlockIO service bytes ('discard' field from 'blkio.throttle.io_service_bytes' file)
cgroups_blkio_throttle_service_bytes_read BlockIO service bytes ('read' field from 'blkio.throttle.io_service_bytes' file)
cgroups_blkio_throttle_service_bytes_recursive_async BlockIO throttle serviced bytes ('async' field from 'blkio.throttle.io_service_bytes_recursive' file)
cgroups_blkio_throttle_service_bytes_recursive_discard BlockIO throttle serviced bytes ('discard' field from 'blkio.throttle.io_service_bytes_recursive' file)
cgroups_blkio_throttle_service_bytes_recursive_read BlockIO throttle serviced bytes ('read' field from 'blkio.throttle.io_service_bytes_recursive' file)
cgroups_blkio_throttle_service_bytes_recursive_sync BlockIO throttle serviced bytes ('sync' field from 'blkio.throttle.io_service_bytes_recursive' file)
cgroups_blkio_throttle_service_bytes_recursive_total BlockIO throttle serviced bytes ('total' field from 'blkio.throttle.io_service_bytes_recursive' file)
cgroups_blkio_throttle_service_bytes_recursive_write BlockIO throttle serviced bytes ('write' field from 'blkio.throttle.io_service_bytes_recursive' file)
cgroups_blkio_throttle_service_bytes_sync BlockIO service bytes ('sync' field from 'blkio.throttle.io_service_bytes' file)
cgroups_blkio_throttle_service_bytes_total BlockIO service bytes ('total' field from 'blkio.throttle.io_service_bytes' file)
cgroups_blkio_throttle_service_bytes_write BlockIO service bytes ('write' field from 'blkio.throttle.io_service_bytes' file)
cgroups_blkio_throttle_serviced_async BlockIO serviced bytes ('async' field from 'blkio.throttle.io_serviced' file)
cgroups_blkio_throttle_serviced_discard BlockIO serviced bytes ('discard' field from 'blkio.throttle.io_serviced' file)
cgroups_blkio_throttle_serviced_read BlockIO serviced bytes ('read' field from 'blkio.throttle.io_serviced' file)
cgroups_blkio_throttle_serviced_recursive_async BlockIO serviced bytes recursive ('async' field from 'blkio.throttle.io_serviced_recursive' file)
cgroups_blkio_throttle_serviced_recursive_discard BlockIO serviced bytes recursive ('discard' field from 'blkio.throttle.io_serviced_recursive' file)
cgroups_blkio_throttle_serviced_recursive_read BlockIO serviced bytes recursive ('read' field from 'blkio.throttle.io_serviced_recursive' file)
cgroups_blkio_throttle_serviced_recursive_sync BlockIO serviced bytes recursive ('sync' field from 'blkio.throttle.io_serviced_recursive' file)
cgroups_blkio_throttle_serviced_recursive_total BlockIO serviced bytes recursive ('total' field from 'blkio.throttle.io_serviced_recursive' file)
cgroups_blkio_throttle_serviced_recursive_write BlockIO serviced bytes recursive ('write' field from 'blkio.throttle.io_serviced_recursive' file)
cgroups_blkio_throttle_serviced_sync BlockIO serviced bytes ('sync' field from 'blkio.throttle.io_serviced' file)
cgroups_blkio_throttle_serviced_total BlockIO serviced bytes ('total' field from 'blkio.throttle.io_serviced' file)
cgroups_blkio_throttle_serviced_write BlockIO serviced bytes ('write' field from 'blkio.throttle.io_serviced' file)
cgroups_cpu_cpuacct_cfs_period_us Allowed CPU periods in microseconds
cgroups_cpu_cpuacct_cfs_quota_us Allowed CPU quota in microseconds
cgroups_cpu_cpuacct_shares Allowed CPU shares
cgroups_cpu_cpuacct_stat_nr_periods CPU statistic ('nr_periods' field from 'cpu.stat' file)
cgroups_cpu_cpuacct_stat_nr_throttled CPU statistic ('nr_throttled' field from 'cpu.stat' file)
cgroups_cpu_cpuacct_stat_system CPU accounting statistic ('system' field from 'cpuacct.stat' file)
cgroups_cpu_cpuacct_stat_throttled_time CPU statistic ('throttled_time' field from 'cpu.stat' file)
cgroups_cpu_cpuacct_stat_user CPU accounting statistic ('user' field from 'cpuacct.stat' file)
cgroups_cpu_pressure_some_avg10 CPU resource pressure. Average by 10 seconds
cgroups_cpu_pressure_some_avg300 CPU resource pressure. Average by 300 seconds
cgroups_cpu_pressure_some_avg60 CPU resource pressure. Average by 60 seconds
cgroups_cpu_pressure_some_total CPU resource pressure total
cgroups_cpuset_count_cpu CPU set for the cgroup
cgroups_exporter_calls_collector_created Exporter collector run counter
cgroups_exporter_calls_collector_total Exporter collector run counter
cgroups_exporter_collect_time_collector_created Exporter collector execution time
cgroups_exporter_collect_time_collector Exporter collector execution time
cgroups_io_pressure_full_avg10 IO resource pressure. Average by 10 seconds
cgroups_io_pressure_full_avg300 IO resource pressure. Average by 300 seconds
cgroups_io_pressure_full_avg60 IO resource pressure. Average by 60 seconds
cgroups_io_pressure_full_total IO resource pressure total
cgroups_io_pressure_some_avg10 IO resource pressure. Average by 10 seconds
cgroups_io_pressure_some_avg300 IO resource pressure. Average by 300 seconds
cgroups_io_pressure_some_avg60 IO resource pressure. Average by 60 seconds
cgroups_io_pressure_some_total IO resource pressure total
cgroups_memory_limit_kmem_tcp Kernel TCP memory limit
cgroups_memory_limit_kmem Memory kernel limit
cgroups_memory_limit_soft Soft limit
cgroups_memory_limit_swap Swap limit
cgroups_memory_limit Memory limit
cgroups_memory_pressure_full_avg10 Memory resource pressure. Average by 10 seconds
cgroups_memory_pressure_full_avg300 Memory resource pressure. Average by 300 seconds
cgroups_memory_pressure_full_avg60 Memory resource pressure. Average by 60 seconds
cgroups_memory_pressure_full_total Memory resource pressure total
cgroups_memory_pressure_some_avg10 Memory resource pressure. Average by 10 seconds
cgroups_memory_pressure_some_avg300 Memory resource pressure. Average by 300 seconds
cgroups_memory_pressure_some_avg60 Memory resource pressure. Average by 60 seconds
cgroups_memory_pressure_some_total Memory resource pressure total
cgroups_memory_stat_active_anon memory statistic ('active_anon' field from 'memory.stat' file)
cgroups_memory_stat_active_file memory statistic ('active_file' field from 'memory.stat' file)
cgroups_memory_stat_cache memory statistic ('cache' field from 'memory.stat' file)
cgroups_memory_stat_dirty memory statistic ('dirty' field from 'memory.stat' file)
cgroups_memory_stat_hierarchical_memory_limit memory statistic ('hierarchical_memory_limit' field from 'memory.stat' file)
cgroups_memory_stat_hierarchical_memsw_limit memory statistic ('hierarchical_memsw_limit' field from 'memory.stat' file)
cgroups_memory_stat_inactive_anon memory statistic ('inactive_anon' field from 'memory.stat' file)
cgroups_memory_stat_inactive_file memory statistic ('inactive_file' field from 'memory.stat' file)
cgroups_memory_stat_mapped_file memory statistic ('mapped_file' field from 'memory.stat' file)
cgroups_memory_stat_pgfault memory statistic ('pgfault' field from 'memory.stat' file)
cgroups_memory_stat_pgmajfault memory statistic ('pgmajfault' field from 'memory.stat' file)
cgroups_memory_stat_pgpgin memory statistic ('pgpgin' field from 'memory.stat' file)
cgroups_memory_stat_pgpgout memory statistic ('pgpgout' field from 'memory.stat' file)
cgroups_memory_stat_rss_huge memory statistic ('rss_huge' field from 'memory.stat' file)
cgroups_memory_stat_rss memory statistic ('rss' field from 'memory.stat' file)
cgroups_memory_stat_shmem memory statistic ('shmem' field from 'memory.stat' file)
cgroups_memory_stat_swap memory statistic ('swap' field from 'memory.stat' file)
cgroups_memory_stat_total_active_anon memory statistic ('total_active_anon' field from 'memory.stat' file)
cgroups_memory_stat_total_active_file memory statistic ('total_active_file' field from 'memory.stat' file)
cgroups_memory_stat_total_cache memory statistic ('total_cache' field from 'memory.stat' file)
cgroups_memory_stat_total_dirty memory statistic ('total_dirty' field from 'memory.stat' file)
cgroups_memory_stat_total_inactive_anon memory statistic ('total_inactive_anon' field from 'memory.stat' file)
cgroups_memory_stat_total_inactive_file memory statistic ('total_inactive_file' field from 'memory.stat' file)
cgroups_memory_stat_total_mapped_file memory statistic ('total_mapped_file' field from 'memory.stat' file)
cgroups_memory_stat_total_pgfault memory statistic ('total_pgfault' field from 'memory.stat' file)
cgroups_memory_stat_total_pgmajfault memory statistic ('total_pgmajfault' field from 'memory.stat' file)
cgroups_memory_stat_total_pgpgin memory statistic ('total_pgpgin' field from 'memory.stat' file)
cgroups_memory_stat_total_pgpgout memory statistic ('total_pgpgout' field from 'memory.stat' file)
cgroups_memory_stat_total_rss_huge memory statistic ('total_rss_huge' field from 'memory.stat' file)
cgroups_memory_stat_total_rss memory statistic ('total_rss' field from 'memory.stat' file)
cgroups_memory_stat_total_shmem memory statistic ('total_shmem' field from 'memory.stat' file)
cgroups_memory_stat_total_swap memory statistic ('total_swap' field from 'memory.stat' file)
cgroups_memory_stat_total_unevictable memory statistic ('total_unevictable' field from 'memory.stat' file)
cgroups_memory_stat_total_writeback memory statistic ('total_writeback' field from 'memory.stat' file)
cgroups_memory_stat_unevictable memory statistic ('unevictable' field from 'memory.stat' file)
cgroups_memory_stat_writeback memory statistic ('writeback' field from 'memory.stat' file)
cgroups_memory_usage_kmem_max Maximum kernel memory usage
cgroups_memory_usage_kmem_tcp Kernel TCP memory usage
cgroups_memory_usage_kmem Maximum kernel TCP maximum memory usage
cgroups_memory_usage_max Maximum memory usage
cgroups_memory_usage_swap_max Maximum swap usage
cgroups_memory_usage_swap Swap usage
cgroups_memory_usage Memory usage
cgroups_pids_count Process IDs count for this namespace
cgroups_pids_max Maximum Process IDs allowed for this namespace
cgroups_unified_stat_system_usec CPU statistic ('system_usec' field from 'cpu.stat' file)
cgroups_unified_stat_usage_usec CPU statistic ('usage_usec' field from 'cpu.stat' file)
cgroups_unified_stat_user_usec CPU statistic ('user_usec' field from 'cpu.stat' file)
cgroups_unified_uptime init.scope uptime

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page