Add v1 to metrics API endpoint

Fixes #1399

This versions the prometheus metrics API so we can manage backwards
incompatible changes in the future more easily.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
Michael Crosby 2017-09-20 16:24:30 -04:00
parent 9934acb271
commit f23edd3cc0
3 changed files with 11 additions and 2 deletions

View File

@ -189,6 +189,15 @@ enumerating the support services and messages. See [api/](api) for details.
Note that new services may be added in _minor_ releases. New service methods Note that new services may be added in _minor_ releases. New service methods
and new fields on messages may be added if they are optional. and new fields on messages may be added if they are optional.
### Metrics API
The metrics API that outputs prometheus style metrics will be versioned independently,
prefixed with the API version. i.e. `/v1/metrics`, `/v2/metrics`.
The metrics API version will be incremented when breaking changes are made to the prometheus
output. New metrics can be added to the output in a backwards compatible manner without
bumping the API version.
#### Error Codes #### Error Codes
Error codes will not change in a patch release, unless a missing error code Error codes will not change in a patch release, unless a missing error code

View File

@ -257,7 +257,7 @@ Waiting on things like the container's exit status and cgroup metrics are setup
If you are familiar with prometheus you can curl the containerd metrics endpoint (in the `config.toml` that we created) to see your container's metrics: If you are familiar with prometheus you can curl the containerd metrics endpoint (in the `config.toml` that we created) to see your container's metrics:
```bash ```bash
> curl 127.0.0.1:1338/metrics > curl 127.0.0.1:1338/v1/metrics
``` ```
Pretty cool right? Pretty cool right?

View File

@ -136,7 +136,7 @@ func (s *Server) ServeGRPC(l net.Listener) error {
// ServeMetrics provides a prometheus endpoint for exposing metrics // ServeMetrics provides a prometheus endpoint for exposing metrics
func (s *Server) ServeMetrics(l net.Listener) error { func (s *Server) ServeMetrics(l net.Listener) error {
m := http.NewServeMux() m := http.NewServeMux()
m.Handle("/metrics", metrics.Handler()) m.Handle("/v1/metrics", metrics.Handler())
return trapClosedConnErr(http.Serve(l, m)) return trapClosedConnErr(http.Serve(l, m))
} }