My openmetrics package is now available on
CRAN. The package makes it
possible to add predefined and custom “metrics” to any R web application and
expose them on a /metrics
endpoint, where they can be consumed by
Prometheus.
Prometheus itself is a hugely popular, open-source monitoring and metrics aggregation tool that is widely used in the Kubernetes ecosystem, usually alongside Grafana for visualisation.
To illustrate, the following is a real Grafana dashboard built from the default metrics exposed by the package for Plumber APIs:
Adding these to an existing Plumber API is extremely simple:
library(openmetrics)
srv <- plumber::plumb("plumber.R")
srv <- register_plumber_metrics(srv)
srv$run()
There is also built-in support for Shiny:
app <- shiny::shinyApp(...)
app <- register_shiny_metrics(app)
app
openmetrics is designed to be “batteries included” and offer good built-in metrics for existing applications, but it is also possible (and encouraged!) to add custom metrics tailored to your needs, and to expose them to Prometheus even if you are not using Plumber or Shiny.
More detailed usage information is available in the package’s
README
.