2.0 KiB
title | description | keywords |
---|---|---|
Docker metrics collector plugins | Metrics plugins. | Examples, Usage, plugins, docker, documentation, user guide, metrics |
Docker exposes internal metrics based on the Prometheus format. Metrics plugins enable accessing these metrics in a consistent way by providing a Unix socket at a predefined path where the plugin can scrape the metrics.
[!NOTE] While the plugin interface for metrics is non-experimental, the naming of the metrics and metric labels is still considered experimental and may change in a future version.
Creating a metrics plugin
You must currently set PropagatedMount
in the plugin config.json
to
/run/docker
. This allows the plugin to receive updated mounts
(the bind-mounted socket) from Docker after the plugin is already configured.
MetricsCollector protocol
Metrics plugins must register as implementing theMetricsCollector
interface
in config.json
.
On Unix platforms, the socket is located at /run/docker/metrics.sock
in the
plugin's rootfs.
MetricsCollector
must implement two endpoints:
MetricsCollector.StartMetrics
Signals to the plugin that the metrics socket is now available for scraping
Request:
{}
The request has no payload.
Response:
{
"Err": ""
}
If an error occurred during this request, add an error message to the Err
field
in the response. If no error then you can either send an empty response ({}
)
or an empty value for the Err
field. Errors will only be logged.
MetricsCollector.StopMetrics
Signals to the plugin that the metrics socket is no longer available. This may happen when the daemon is shutting down.
Request:
{}
The request has no payload.
Response:
{
"Err": ""
}
If an error occurred during this request, add an error message to the Err
field
in the response. If no error then you can either send an empty response ({}
)
or an empty value for the Err
field. Errors will only be logged.