github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/cli/docs/extend/plugins_metrics.md (about) 1 --- 2 description: "Metrics plugins." 3 keywords: "Examples, Usage, plugins, docker, documentation, user guide, metrics" 4 --- 5 6 <!-- This file is maintained within the docker/cli GitHub 7 repository at https://github.com/docker/cli/. Make all 8 pull requests against that repo. If you see this file in 9 another repository, consider it read-only there, as it will 10 periodically be overwritten by the definitive file. Pull 11 requests which include edits to this file in other repositories 12 will be rejected. 13 --> 14 15 # Docker metrics collector plugins 16 17 Docker exposes internal metrics based on the prometheus format. Metrics plugins 18 enable accessing these metrics in a consistent way by providing a Unix 19 socket at a predefined path where the plugin can scrape the metrics. 20 21 > **Note** 22 > 23 > While the plugin interface for metrics is non-experimental, the naming of the 24 > metrics and metric labels is still considered experimental and may change in a 25 > future version. 26 27 ## Creating a metrics plugin 28 29 You must currently set `PropagatedMount` in the plugin `config.json` to 30 `/run/docker`. This allows the plugin to receive updated mounts 31 (the bind-mounted socket) from Docker after the plugin is already configured. 32 33 ## MetricsCollector protocol 34 35 Metrics plugins must register as implementing the`MetricsCollector` interface 36 in `config.json`. 37 38 On Unix platforms, the socket is located at `/run/docker/metrics.sock` in the 39 plugin's rootfs. 40 41 `MetricsCollector` must implement two endpoints: 42 43 ### `MetricsCollector.StartMetrics` 44 45 Signals to the plugin that the metrics socket is now available for scraping 46 47 **Request** 48 ```json 49 {} 50 ``` 51 52 The request has no playload. 53 54 **Response** 55 ```json 56 { 57 "Err": "" 58 } 59 ``` 60 61 If an error occurred during this request, add an error message to the `Err` field 62 in the response. If no error then you can either send an empty response (`{}`) 63 or an empty value for the `Err` field. Errors will only be logged. 64 65 ### `MetricsCollector.StopMetrics` 66 67 Signals to the plugin that the metrics socket is no longer available. 68 This may happen when the daemon is shutting down. 69 70 **Request** 71 ```json 72 {} 73 ``` 74 75 The request has no playload. 76 77 **Response** 78 ```json 79 { 80 "Err": "" 81 } 82 ``` 83 84 If an error occurred during this request, add an error message to the `Err` field 85 in the response. If no error then you can either send an empty response (`{}`) 86 or an empty value for the `Err` field. Errors will only be logged.