Simple container metrics in Go
Collect Docker container and daemon statistics with Prometheus .
Motivation
I'm running a Home Lab on resource constrained devices, and wanted a simple metrics collector with low CPU, memory and disk requirements as an alternative to (the otherwise fantastic) Telegraf collector.
The end result is a small static binary, packaged as a Docker image , weighing only 3 MB (compressed).
Usage
The easiest way to get started is to use the Docker image available.
$ docker run -d --name container-metrics \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
rycus86/container-metrics #[flags]
Copy
The application accepts the following flags:
-p or -port : HTTP port to listen on (default: 8080)
-i or -interval : Interval for reading metrics from the engine (default: 5s)
-t or -timeout : Timeout for calling endpoints on the engine (default: 30s)
-l or -labels : Labels to keep (comma separated, accepts regex)
-d or -debug : Enable debug messages
-v or -verbose : Enable verbose messages - assumes debug
You can also build the application with Go, currently tested with version 1.10, then simply run it on the host:
$ ./container-metrics -p 8080 -i 15s -l com.docker.compose.service,com.mycompany.custom
Copy
Metrics collected
Currently, the following Gauge metrics are exported.
Engine metrics
cntm_engine_num_images : Number of images
cntm_engine_num_containers : Number of containers
cntm_engine_num_containers_running : Number of running containers
cntm_engine_num_containers_stopped : Number of stopped containers
cntm_engine_num_containers_paused : Number of paused containers
Container CPU metrics
cntm_cpu_usage_total_seconds : Total CPU usage
cntm_cpu_usage_system_seconds : CPU usage in system mode
cntm_cpu_usage_user_seconds : CPU usage in user mode
cntm_cpu_usage_percent : Total CPU usage in percent
Container memory metrics
cntm_memory_total_bytes : Total memory available
cntm_memory_usage_bytes : Memory usage
cntm_memory_usage_percent : Memory usage in percent
Container I/O metrics
cntm_io_read_bytes : I/O bytes read
cntm_io_write_bytes : I/O bytes written
Container network metrics
cntm_net_rx_bytes : Network receive bytes
cntm_net_rx_packets : Network receive packets
cntm_net_rx_dropped : Network receive packets dropped
cntm_net_rx_errors : Network receive errors
cntm_net_tx_bytes : Network transmit bytes
cntm_net_tx_packets : Network transmit packets
cntm_net_tx_dropped : Network transmit packets dropped
cntm_net_tx_errors : Network transmit errors
License
MIT