From 0d48de1ba8a64ba0442d296f362e25ae3469180c Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sun, 4 Mar 2018 16:38:10 +0100 Subject: [PATCH] Add Prometheus timer. This timer will periodically upload Prometheus information to the push gateway. By default, every `sensors.pushgateway_period` (10) seconds. --- mos.yml | 1 + src/mgos_prometheus_sensors.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/mos.yml b/mos.yml index 4ae94f1..bdab145 100644 --- a/mos.yml +++ b/mos.yml @@ -18,6 +18,7 @@ config_schema: - ["sensors", "o", {title: "Sensors settings"}] - ["sensors.dht_gpio", "s", "13,12,14", {title: "Comma Separated list of GPIO pins to enable DHT22/AM2302 sensors on"}] - ["sensors.dht_period", "i", 3, {title: "Sample period in seconds for DHT sensors"}] + - ["sensors.pushgateway_period", "i", 10, {title: "Period in seconds for Prometheus Pushgateway POSTs"}] - ["prometheus.pushgateway", "prometheus.example.net:9091"] diff --git a/src/mgos_prometheus_sensors.c b/src/mgos_prometheus_sensors.c index 0310324..36a8570 100644 --- a/src/mgos_prometheus_sensors.c +++ b/src/mgos_prometheus_sensors.c @@ -1,9 +1,17 @@ #include "mgos_config.h" +#include "mgos_prometheus_metrics.h" #include "mgos_prometheus_sensors.h" void dht_init(); +static void pushgateway_timer(void *user_data) { + mgos_prometheus_metrics_push(MGOS_APP, mgos_sys_config_get_device_id()); + (void) user_data; +} + bool mgos_prometheus_sensors_init(void) { dht_init(); + if (mgos_sys_config_get_sensors_pushgateway_period()>0) + mgos_set_timer(mgos_sys_config_get_sensors_pushgateway_period()*1000, true, pushgateway_timer, NULL); return true; }