Lightweight Docker metrics exporter for Docker Compose style projects. It collects a small set of project and container metrics and exposes them to Prometheus and MQTT/Home Assistant without the overhead of cadvisor.
The exporter reads the Docker Engine API directly. By default it uses unix:///var/run/docker.sock.
docker_exporter_container_cpu_usage_percentdocker_exporter_container_memory_usage_bytesdocker_exporter_container_memory_limit_bytesdocker_exporter_container_runningdocker_exporter_container_stats_collecteddocker_exporter_project_cpu_usage_percentdocker_exporter_project_memory_usage_bytesdocker_exporter_project_total_containersdocker_exporter_project_running_containersdocker_exporter_updocker_exporter_last_collection_timestamp_secondsdocker_exporter_container_stats_errorsLocal binary:
go build -o docker-exporter .
Docker image:
docker build -t docker-exporter:latest .
Published Docker Hub image:
docker pull rcooler/docker_exporter:latest
Docker Compose example:
docker compose -f docker-compose.example.yml up -d --build
Local process:
./docker-exporter \
--docker-host unix:///var/run/docker.sock \
--listen-address :9877
Docker container:
docker run -d \
--name docker-exporter \
-p 9877:9877 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
rcooler/docker_exporter:latest
With MQTT and Home Assistant discovery:
docker run -d \
--name docker-exporter \
-p 9877:9877 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e DOCKER_EXPORTER_MQTT_ENABLED=true \
-e DOCKER_EXPORTER_MQTT_BROKER=tcp://host.docker.internal:1883 \
-e DOCKER_EXPORTER_MQTT_USER=ha \
-e DOCKER_EXPORTER_MQTT_PASS=change_me \
-e DOCKER_EXPORTER_MQTT_CLIENT_ID=docker_exporter \
-e DOCKER_EXPORTER_MQTT_TOPIC_PREFIX=docker_exporter \
-e DOCKER_EXPORTER_MQTT_DISCOVERY_PREFIX=homeassistant \
-e DOCKER_EXPORTER_MQTT_INTERVAL=60 \
-e DOCKER_EXPORTER_MQTT_RETAIN=true \
-e DOCKER_EXPORTER_MQTT_EXPIRE_AFTER=360 \
rcooler/docker_exporter:latest
Docker Compose:
services:
docker-exporter:
build: .
restart: unless-stopped
ports:
- "9877:9877"
environment:
DOCKER_HOST: "unix:///var/run/docker.sock"
DOCKER_EXPORTER_MQTT_ENABLED: "true"
DOCKER_EXPORTER_MQTT_BROKER: "tcp://host.docker.internal:1883"
DOCKER_EXPORTER_MQTT_USER: "ha"
DOCKER_EXPORTER_MQTT_PASS: "change_me"
DOCKER_EXPORTER_MQTT_CLIENT_ID: "docker_exporter"
DOCKER_EXPORTER_MQTT_TOPIC_PREFIX: "docker_exporter"
DOCKER_EXPORTER_MQTT_DISCOVERY_PREFIX: "homeassistant"
DOCKER_EXPORTER_MQTT_INTERVAL: "60"
DOCKER_EXPORTER_MQTT_RETAIN: "true"
DOCKER_EXPORTER_MQTT_EXPIRE_AFTER: "360"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
Full example file: docker-compose.example.yml
Flags and env vars:
--listen-address, LISTEN_ADDRESS--metrics-path, METRICS_PATH--scrape-interval, SCRAPE_INTERVAL--docker-host, DOCKER_HOST--docker-timeout, DOCKER_TIMEOUT--project-label, DOCKER_PROJECT_LABEL--standalone-project-name, STANDALONE_PROJECT_NAME--container-concurrency, CONTAINER_CONCURRENCY--mqtt-broker, MQTT_BROKER--mqtt-client-id, MQTT_CLIENT_ID--mqtt-username, MQTT_USERNAME--mqtt-password, MQTT_PASSWORD--mqtt-topic-prefix, MQTT_TOPIC_PREFIX--homeassistant-discovery-prefix, HOMEASSISTANT_DISCOVERY_PREFIX--mqtt-qos, MQTT_QOS--mqtt-retain, MQTT_RETAIN--mqtt-connect-timeout, MQTT_CONNECT_TIMEOUT--homeassistant-expire-after, HOMEASSISTANT_EXPIRE_AFTERPreferred MQTT env vars:
DOCKER_EXPORTER_MQTT_ENABLEDDOCKER_EXPORTER_MQTT_BROKERDOCKER_EXPORTER_MQTT_USERDOCKER_EXPORTER_MQTT_PASSDOCKER_EXPORTER_MQTT_CLIENT_IDDOCKER_EXPORTER_MQTT_TOPIC_PREFIXDOCKER_EXPORTER_MQTT_DISCOVERY_PREFIXDOCKER_EXPORTER_MQTT_INTERVALDOCKER_EXPORTER_MQTT_RETAINDOCKER_EXPORTER_MQTT_QOSDOCKER_EXPORTER_MQTT_CONNECT_TIMEOUTDOCKER_EXPORTER_MQTT_EXPIRE_AFTERDOCKER_EXPORTER_MQTT_INTERVAL and DOCKER_EXPORTER_MQTT_EXPIRE_AFTER accept either plain seconds like 60 and 360, or Go duration strings like 60s and 6m.
Projects are detected from the label com.docker.compose.project by default. Containers without that label are grouped under standalone, unless you override it with --standalone-project-name.
unix://, tcp://, http://, https://npipe:// is not implemented in this versionContent type
Image
Digest
sha256:3893d1d00…
Size
5.7 MB
Last updated
3 months ago
docker pull rcooler/docker_exporter