@@ -33,9 +33,35 @@ dashboards for most purposes other than debugging.
If you want your service to be monitored by Prometheus, you need to
[write](https://prometheus.io/docs/instrumenting/writing_exporters/) or [reuse an existing exporter](https://prometheus.io/docs/instrumenting/exporters/). [Writing an
exporter](https://prometheus.io/docs/instrumenting/writing_exporters/) is more involved, but still fairly easy and might be
exporter][] is more involved, but still fairly easy and might be
necessary if you are the maintainer of an application not already
instrumented for Prometheus.
instrumented for Prometheus.
[Writing an exporter]:https://prometheus.io/docs/instrumenting/writing_exporters/
The [actual documentation][Writing an exporter] is fairly good, but basically: a
Prometheus exporter is a simple HTTP server which responds to a
specific URL (`/metrics`, by convention, but it can be anything) and
responds with a key/value list of entries, one on each line. Each
"key" is a simple string with an arbitrary list of "labels" enclosed
in curly braces. For example, here's how the "node exporter" exports
CPU usage:
# HELP node_cpu_seconds_total Seconds the cpus spent in each mode.
Obviously, you don't necessarily have to write all that logic
yourself, however: there are [client libraries](https://prometheus.io/docs/instrumenting/clientlibs/)(see the [Golang
guide](https://prometheus.io/docs/guides/go-application/), [Python demo](https://github.com/prometheus/client_python#three-step-demo) or [C documentation](https://digitalocean.github.io/prometheus-client-c/) for examples) that
do most of the job for you.
Once you have an exporter endpoint (say at
`http://example.com:9090/metrics`), make sure it works: