A local plugin that presents an endpoint for Prometheus metric gathering. Can be used either in Prometheus or as an InfluxDB v2 scraper
Plugins can add their own metrics to the output by adding their own plugin_name_prometheus_get_metrics(int $window)
function
to lib.php. This function must return either one or more \local_prometheus\metric
objects, or an empty array.
Plugins should give users the option to toggle metric gathering for that plugin on or off.
The $window
parameter is a unix timestamp and is used for determining the cutoff for a 'current' value. For example to determine
the number of currently online users we can only look at the last access timestamp. In this case, $window
would mean "treat users
active since this timestamp as currently online".
Example implementation in lib.php:
/**
* Fetch metrics for the plugin
*
* @param int $window
* @return metric[]
*/
mod_example_prometheus_get_metrics(int $window): array {
$metric = new metric(
'moodle_mod_example_foo',
metric::TYPE_GAUGE,
'optional HELP text, can be omitted'
);
$metric->add_value(new metric_value(
[ 'label' => 'foo' ],
12
));
return [ $metric ];
}
The plugin requires Moodle 3.9 or later, and PHP 7.4 or later. You will also need some way of gathering, storing, and using the metrics that the plugin generates.
There's no special installation steps or instructions, just install it as you would any other plugin
/moodle/root/local
php /moodle/root/admin/cli/upgrade.php
git clone https://github.com/Vidalia/moodle-local_prometheus.git local/prometheus
php /moodle/root/admin/cli/upgrade.php
/moodle/root/local/prometheus
moodle-local_prometheus-master
directory to prometheus
php /moodle/root/admin/cli/upgrade.php