prometheus-app

Client library for Prometheus monitoring
README

To run services reliably, it is useful if they can report various metrics
(for example, heap size, queue lengths, number of warnings logged, etc).

A monitoring service can be configured to collect this data regularly.
The data can be graphed to help understand the performance of the service over time,
or to help debug problems quickly.
It can also be used to send alerts if a service is down or behaving poorly.

This repository contains code to report metrics to a Prometheus monitoring server.

Use by libraries

Library authors should define a set of metrics that may be useful. For example, the DataKitCI
cache module defines several metrics like this:

module Metrics = struct
  open Prometheus

  let namespace = "DataKitCI"
  let subsystem = "cache"

  let builds_started_total =
    let help = "Total number of builds started" in
    Counter.v_label ~help ~label_name:"name" ~namespace ~subsystem "builds_started_total"

  let builds_succeeded_total =
    let help = "Total number of builds that succeeded" in
    Counter.v_label ~help ~label_name:"name" ~namespace ~subsystem "builds_succeeded_total"

  let builds_failed_total =
    let help = "Total number of builds that failed" in
    Counter.v_label ~help ~label_name:"name" ~namespace ~subsystem "builds_failed_total"

  [...]
end

Each of these metrics has a name label, which allows the reports to be further broken down
by the type of thing being built.

When (for example) a build succeeds, the CI does:

Prometheus.Counter.inc_one (Metrics.builds_succeeded_total build_type)

Use by applications

Applications can enable metric reporting using the prometheus-app opam package.
This depends on cohttp and can serve the metrics collected above over HTTP.

The prometheus-app.unix ocamlfind library provides the Prometheus_unix module,
which includes a cmdliner option and pre-configured web-server.
See the examples/example.ml program for an example, which can be run as:

$ dune exec -- examples/example.exe --listen-prometheus=9090
If run with the option --listen-prometheus=9090, this program serves metrics at
http://localhost:9090/metrics
Tick!
Tick!
...

Unikernels can use Prometheus_app instead of Prometheus_unix to avoid the Unix dependency.

API docs

Generated API documentation is available at https://mirage.github.io/prometheus/.

Licensing

This code is licensed under the Apache License, Version 2.0. See
LICENSE for the full
license text.

Install
Published
16 Jun 2022
Maintainers
Sources
prometheus-1.2.tbz
sha256=83643a029a6b6de71d14034eee2e94feff1d08755c4a41d583dc1530ab555bcb
sha512=bbec7f0728b850b991ec50e76ef2c999341a9469ceaa11b68180f060150c4fe62f3dca87c13914ac331b3d7ef6e46256ae11466b607ecb60d00b8f284cab86b9
Dependencies
logs
>= "0.6.0"
alcotest-lwt
with-test
alcotest
with-test
lwt
>= "2.5.0"
cohttp-lwt
>= "4.0.0"
re
>= "1.8.0"
fmt
>= "0.8.7"
prometheus
= version
dune
>= "2.3"
ocaml
>= "4.08"
Reverse Dependencies