--- description: "Metrics plugins." keywords: "Examples, Usage, plugins, docker, documentation, user guide, metrics" --- # Docker metrics collector plugins 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**: that 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 the`MetricsCollector` 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** ```json {} ``` The request has no playload. **Response** ```json { "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** ```json {} ``` The request has no playload. **Response** ```json { "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.