Skip to main content

Docker Engine

Docker Engine

Plugin: go.d.plugin Module: docker_engine

Maintained by Netdata

Overview​

This collector monitors the activity and health of Docker Engine and Docker Swarm.

The built-in Prometheus exporter is used to get the metrics.

This collector is supported on all platforms.

This collector supports collecting metrics from multiple instances of this integration.

Default Behavior​

Auto-Detection​

It discovers instances running on localhost by attempting to connect to a known Docker TCP socket: http://127.0.0.1:9323/metrics.

Limits​

The default configuration for this integration does not impose any limits on data collection.

Performance Impact​

The default configuration for this integration is not expected to impose a significant performance impact on the system.

Setup​

You can configure the docker_engine collector in two ways:

MethodBest forHow to
UIFast setup without editing filesGo to Nodes → Configure this node → Collectors → Jobs, search for docker_engine, then click + to add a job.
FileIf you prefer configuring via file, or need to automate deployments (e.g., with Ansible)Edit go.d/docker_engine.conf and add a job.
important

UI configuration requires paid Netdata Cloud plan.

Prerequisites​

Enable built-in Prometheus exporter​

To enable built-in Prometheus exporter, follow the official documentation.

Configuration​

Options​

The following options can be defined globally: update_every, autodetection_retry.

Config options
GroupOptionDescriptionDefaultRequired
Collectionupdate_everyData collection interval (seconds).1no
autodetection_retryAutodetection retry interval (seconds). Set 0 to disable.0no
TargeturlTarget endpoint URL.http://127.0.0.1:9323/metricsyes
timeoutHTTP request timeout (seconds).1no
HTTP AuthusernameUsername for Basic HTTP authentication.no
passwordPassword for Basic HTTP authentication.no
bearer_token_filePath to a file containing a bearer token (used for Authorization: Bearer).no
TLStls_skip_verifySkip TLS certificate and hostname verification (insecure).nono
tls_caPath to CA bundle used to validate the server certificate.no
tls_certPath to client TLS certificate (for mTLS).no
tls_keyPath to client TLS private key (for mTLS).no
Proxyproxy_urlHTTP proxy URL.no
proxy_usernameUsername for proxy Basic HTTP authentication.no
proxy_passwordPassword for proxy Basic HTTP authentication.no
RequestmethodHTTP method to use.GETno
bodyRequest body (e.g., for POST/PUT).no
headersAdditional HTTP headers (one per line as key: value).no
not_follow_redirectsDo not follow HTTP redirects.nono
force_http2Force HTTP/2 (including h2c over TCP).nono
Virtual NodevnodeAssociates this data collection job with a Virtual Node.no

via UI​

Configure the docker_engine collector from the Netdata web interface:

  1. Go to Nodes.
  2. Select the node where you want the docker_engine data-collection job to run and click the ⚙ (Configure this node). That node will run the data collection.
  3. The Collectors → Jobs view opens by default.
  4. In the Search box, type docker_engine (or scroll the list) to locate the docker_engine collector.
  5. Click the + next to the docker_engine collector to add a new job.
  6. Fill in the job fields, then click Test to verify the configuration and Submit to save.
    • Test validates the provided settings and checks the collector's startup prerequisites. Successful validation does not guarantee that every metric will be available during collection.
    • If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.

via File​

The configuration file name for this integration is go.d/docker_engine.conf.

The file format is YAML. Generally, the structure is:

update_every: 1
autodetection_retry: 0
jobs:
- name: some_name1
- name: some_name2

You can edit the configuration file using the edit-config script from the Netdata config directory.

cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config go.d/docker_engine.conf
Examples​
Basic​

A basic example configuration.

jobs:
- name: local
url: http://127.0.0.1:9323/metrics

HTTP authentication​

Basic HTTP authentication.

Config
jobs:
- name: local
url: http://127.0.0.1:9323/metrics
username: username
password: password

HTTPS with self-signed certificate​

Configuration with enabled HTTPS and self-signed certificate.

Config
jobs:
- name: local
url: http://127.0.0.1:9323/metrics
tls_skip_verify: yes

Multi-instance​

Note: When you define multiple jobs, their names must be unique.

Collecting metrics from local and remote instances.

Config
jobs:
- name: local
url: http://127.0.0.1:9323/metrics

- name: remote
url: http://192.0.2.1:9323/metrics

Alerts​

There are no alerts configured by default for this integration.

Metrics​

Metrics grouped by scope.

The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.

Per Docker Engine instance​

These metrics refer to the entire monitored application.

This scope has no labels.

Metrics:

MetricDescriptionDimensionsUnit
docker_engine.engine_daemon_container_actionsContainer Actionschanges, commit, create, delete, startactions/s
docker_engine.engine_daemon_container_states_containersContainers In Various Statesrunning, paused, stoppedcontainers
docker_engine.builder_builds_failed_totalBuilder Builds Fails By Reasonbuild_canceled, build_target_not_reachable_error, command_not_supported_error, dockerfile_empty_error, dockerfile_syntax_error, error_processing_commands_error, missing_onbuild_arguments_error, unknown_instruction_errorfails/s
docker_engine.engine_daemon_health_checks_failed_totalHealth Checksfailsevents/s
docker_engine.swarm_manager_leaderSwarm Manager Leaderis_leaderbool
docker_engine.swarm_manager_object_storeSwarm Manager Object Storenodes, services, tasks, networks, secrets, configsobjects
docker_engine.swarm_manager_nodes_per_stateSwarm Manager Nodes Per Stateready, down, unknown, disconnectednodes
docker_engine.swarm_manager_tasks_per_stateSwarm Manager Tasks Per Staterunning, failed, ready, rejected, starting, shutdown, new, orphaned, preparing, pending, complete, remove, accepted, assignedtasks

Troubleshooting​

Diagnostics​

Debug Mode​

Important: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.

To troubleshoot issues with the docker_engine collector, run the go.d.plugin with the debug option enabled. The output should give you clues as to why the collector isn't working.

  • Navigate to the plugins.d directory, usually at /usr/libexec/netdata/plugins.d/. If that's not the case on your system, open netdata.conf and look for the plugins setting under [directories].

    cd /usr/libexec/netdata/plugins.d/
  • Switch to the netdata user.

    sudo -u netdata -s
  • Run the go.d.plugin to debug the collector:

    ./go.d.plugin -d -m docker_engine

    To debug a specific job:

    ./go.d.plugin -d -m docker_engine -j jobName

Getting Logs​

If you're encountering problems with the docker_engine collector, follow these steps to retrieve logs and identify potential issues:

  • Run the command specific to your system (systemd, non-systemd, or Docker container).
  • Examine the output for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.
System with systemd​

Use the following command to view logs generated since the last Netdata service restart:

journalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep docker_engine
System without systemd​

Locate the collector log file, typically at /var/log/netdata/collector.log, and use grep to filter for collector's name:

grep docker_engine /var/log/netdata/collector.log

Note: This method shows logs from all restarts. Focus on the latest entries for troubleshooting current issues.

Docker Container​

If your Netdata runs in a Docker container named "netdata" (replace if different), use this command:

docker logs netdata 2>&1 | grep docker_engine

Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.