Expose mgos_*_stats in Prometheus
This commit is contained in:
@ -29,7 +29,6 @@ static void dht_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
|||||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||||
"humidity", "Relative humidity percentage",
|
"humidity", "Relative humidity percentage",
|
||||||
"{sensor=\"%d\",type=\"DHT\"} %f", i, s_dht_sensor[i]->humidity);
|
"{sensor=\"%d\",type=\"DHT\"} %f", i, s_dht_sensor[i]->humidity);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
static struct mgos_htu21df *s_htu21df;
|
static struct mgos_htu21df *s_htu21df;
|
||||||
|
|
||||||
static void htu21df_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
static void htu21df_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
||||||
|
struct mgos_htu21df_stats stats;
|
||||||
|
|
||||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||||
"temperature", "Temperature in Celcius",
|
"temperature", "Temperature in Celcius",
|
||||||
"{sensor=\"0\",type=\"HTU21DF\"} %f", mgos_htu21df_getTemperature(s_htu21df));
|
"{sensor=\"0\",type=\"HTU21DF\"} %f", mgos_htu21df_getTemperature(s_htu21df));
|
||||||
@ -16,18 +18,39 @@ static void htu21df_prometheus_metrics(struct mg_connection *nc, void *user_data
|
|||||||
"humidity", "Relative humidity percentage",
|
"humidity", "Relative humidity percentage",
|
||||||
"{sensor=\"0\",type=\"HTU21DF\"} %f", mgos_htu21df_getHumidity(s_htu21df));
|
"{sensor=\"0\",type=\"HTU21DF\"} %f", mgos_htu21df_getHumidity(s_htu21df));
|
||||||
|
|
||||||
|
if (mgos_htu21df_getStats(s_htu21df, &stats)) {
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_total", "Total reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"HTU21DF\"} %u", stats.read);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_total", "Total successful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"HTU21DF\"} %u", stats.read_success);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_cached_total", "Total successful cached reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"HTU21DF\"} %u", stats.read_success_cached);
|
||||||
|
uint32_t errors = stats.read - stats.read_success - stats.read_success_cached;
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_error_total", "Total unsuccessful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"HTU21DF\"} %u", errors);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_usecs_total", "Total microseconds spent in reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"HTU21DF\"} %f", stats.read_success_usecs);
|
||||||
|
}
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void htu21df_timer_cb(void *user_data) {
|
static void htu21df_timer_cb(void *user_data) {
|
||||||
double start;
|
|
||||||
uint32_t usecs=0;
|
|
||||||
float temperature, humidity;
|
float temperature, humidity;
|
||||||
|
struct mgos_htu21df_stats stats_before, stats_after;
|
||||||
|
uint32_t usecs=0;
|
||||||
|
|
||||||
start=mgos_uptime();
|
mgos_htu21df_getStats(s_htu21df, &stats_before);
|
||||||
temperature=mgos_htu21df_getTemperature(s_htu21df);
|
temperature=mgos_htu21df_getTemperature(s_htu21df);
|
||||||
humidity=mgos_htu21df_getHumidity(s_htu21df);
|
humidity=mgos_htu21df_getHumidity(s_htu21df);
|
||||||
usecs=1000000*(mgos_uptime()-start);
|
mgos_htu21df_getStats(s_htu21df, &stats_after);
|
||||||
|
|
||||||
|
usecs=stats_after.read_success_usecs - stats_before.read_success_usecs;
|
||||||
LOG(LL_INFO, ("HTU21DF sensor=0 temperature=%.2fC humidity=%.1f%% usecs=%u", temperature, humidity, usecs));
|
LOG(LL_INFO, ("HTU21DF sensor=0 temperature=%.2fC humidity=%.1f%% usecs=%u", temperature, humidity, usecs));
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
|
@ -9,20 +9,44 @@
|
|||||||
static struct mgos_mcp9808 *s_mcp9808;
|
static struct mgos_mcp9808 *s_mcp9808;
|
||||||
|
|
||||||
static void mcp9808_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
static void mcp9808_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
||||||
|
struct mgos_mcp9808_stats stats;
|
||||||
|
|
||||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||||
"temperature", "Temperature in Celcius",
|
"temperature", "Temperature in Celcius",
|
||||||
"{sensor=\"0\",type=\"MCP9808\"} %f", mgos_mcp9808_getTemperature(s_mcp9808));
|
"{sensor=\"0\",type=\"MCP9808\"} %f", mgos_mcp9808_getTemperature(s_mcp9808));
|
||||||
|
|
||||||
|
if (mgos_mcp9808_getStats(s_mcp9808, &stats)) {
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_total", "Total reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"MCP9808\"} %u", stats.read);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_total", "Total successful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"MCP9808\"} %u", stats.read_success);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_cached_total", "Total successful cached reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"MCP9808\"} %u", stats.read_success_cached);
|
||||||
|
uint32_t errors = stats.read - stats.read_success - stats.read_success_cached;
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_error_total", "Total unsuccessful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"MCP9808\"} %u", errors);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_usecs_total", "Total microseconds spent in reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"MCP9808\"} %f", stats.read_success_usecs);
|
||||||
|
}
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mcp9808_timer_cb(void *user_data) {
|
static void mcp9808_timer_cb(void *user_data) {
|
||||||
double start;
|
|
||||||
uint32_t usecs=0;
|
|
||||||
float temperature;
|
float temperature;
|
||||||
|
struct mgos_mcp9808_stats stats_before, stats_after;
|
||||||
|
uint32_t usecs=0;
|
||||||
|
|
||||||
start=mgos_uptime();
|
mgos_mcp9808_getStats(s_mcp9808, &stats_before);
|
||||||
temperature=mgos_mcp9808_getTemperature(s_mcp9808);
|
temperature=mgos_mcp9808_getTemperature(s_mcp9808);
|
||||||
usecs=1000000*(mgos_uptime()-start);
|
mgos_mcp9808_getStats(s_mcp9808, &stats_after);
|
||||||
|
|
||||||
|
usecs=stats_after.read_success_usecs - stats_before.read_success_usecs;
|
||||||
LOG(LL_INFO, ("MCP9808 sensor=0 temperature=%.2fC usecs=%u", temperature, usecs));
|
LOG(LL_INFO, ("MCP9808 sensor=0 temperature=%.2fC usecs=%u", temperature, usecs));
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
static struct mgos_sht31 *s_sht31;
|
static struct mgos_sht31 *s_sht31;
|
||||||
|
|
||||||
static void sht31_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
static void sht31_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
||||||
|
struct mgos_sht31_stats stats;
|
||||||
|
|
||||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||||
"temperature", "Temperature in Celcius",
|
"temperature", "Temperature in Celcius",
|
||||||
"{sensor=\"0\",type=\"SHT31\"} %f", mgos_sht31_getTemperature(s_sht31));
|
"{sensor=\"0\",type=\"SHT31\"} %f", mgos_sht31_getTemperature(s_sht31));
|
||||||
@ -16,18 +18,39 @@ static void sht31_prometheus_metrics(struct mg_connection *nc, void *user_data)
|
|||||||
"humidity", "Relative humidity percentage",
|
"humidity", "Relative humidity percentage",
|
||||||
"{sensor=\"0\",type=\"SHT31\"} %f", mgos_sht31_getHumidity(s_sht31));
|
"{sensor=\"0\",type=\"SHT31\"} %f", mgos_sht31_getHumidity(s_sht31));
|
||||||
|
|
||||||
|
if (mgos_sht31_getStats(s_sht31, &stats)) {
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_total", "Total reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SHT31\"} %u", stats.read);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_total", "Total successful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SHT31\"} %u", stats.read_success);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_cached_total", "Total successful cached reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SHT31\"} %u", stats.read_success_cached);
|
||||||
|
uint32_t errors = stats.read - stats.read_success - stats.read_success_cached;
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_error_total", "Total unsuccessful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SHT31\"} %u", errors);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_usecs_total", "Total microseconds spent in reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SHT31\"} %f", stats.read_success_usecs);
|
||||||
|
}
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sht31_timer_cb(void *user_data) {
|
static void sht31_timer_cb(void *user_data) {
|
||||||
double start;
|
|
||||||
uint32_t usecs=0;
|
|
||||||
float temperature, humidity;
|
float temperature, humidity;
|
||||||
|
struct mgos_sht31_stats stats_before, stats_after;
|
||||||
|
uint32_t usecs=0;
|
||||||
|
|
||||||
start=mgos_uptime();
|
mgos_sht31_getStats(s_sht31, &stats_before);
|
||||||
temperature=mgos_sht31_getTemperature(s_sht31);
|
temperature=mgos_sht31_getTemperature(s_sht31);
|
||||||
humidity=mgos_sht31_getHumidity(s_sht31);
|
humidity=mgos_sht31_getHumidity(s_sht31);
|
||||||
usecs=1000000*(mgos_uptime()-start);
|
mgos_sht31_getStats(s_sht31, &stats_after);
|
||||||
|
|
||||||
|
usecs=stats_after.read_success_usecs - stats_before.read_success_usecs;
|
||||||
LOG(LL_INFO, ("SHT31 sensor=0 temperature=%.2fC humidity=%.1f%% usecs=%u", temperature, humidity, usecs));
|
LOG(LL_INFO, ("SHT31 sensor=0 temperature=%.2fC humidity=%.1f%% usecs=%u", temperature, humidity, usecs));
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
static struct mgos_si7021 *s_si7021;
|
static struct mgos_si7021 *s_si7021;
|
||||||
|
|
||||||
static void si7021_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
static void si7021_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
||||||
|
struct mgos_si7021_stats stats;
|
||||||
|
|
||||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||||
"temperature", "Temperature in Celcius",
|
"temperature", "Temperature in Celcius",
|
||||||
"{sensor=\"0\",type=\"SI7021\"} %f", mgos_si7021_getTemperature(s_si7021));
|
"{sensor=\"0\",type=\"SI7021\"} %f", mgos_si7021_getTemperature(s_si7021));
|
||||||
@ -16,18 +18,39 @@ static void si7021_prometheus_metrics(struct mg_connection *nc, void *user_data)
|
|||||||
"humidity", "Relative humidity percentage",
|
"humidity", "Relative humidity percentage",
|
||||||
"{sensor=\"0\",type=\"SI7021\"} %f", mgos_si7021_getHumidity(s_si7021));
|
"{sensor=\"0\",type=\"SI7021\"} %f", mgos_si7021_getHumidity(s_si7021));
|
||||||
|
|
||||||
|
if (mgos_si7021_getStats(s_si7021, &stats)) {
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_total", "Total reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SI7021\"} %u", stats.read);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_total", "Total successful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SI7021\"} %u", stats.read_success);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_cached_total", "Total successful cached reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SI7021\"} %u", stats.read_success_cached);
|
||||||
|
uint32_t errors = stats.read - stats.read_success - stats.read_success_cached;
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_error_total", "Total unsuccessful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SI7021\"} %u", errors);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_usecs_total", "Total microseconds spent in reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"SI7021\"} %f", stats.read_success_usecs);
|
||||||
|
}
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void si7021_timer_cb(void *user_data) {
|
static void si7021_timer_cb(void *user_data) {
|
||||||
double start;
|
|
||||||
uint32_t usecs=0;
|
|
||||||
float temperature, humidity;
|
float temperature, humidity;
|
||||||
|
struct mgos_si7021_stats stats_before, stats_after;
|
||||||
|
uint32_t usecs=0;
|
||||||
|
|
||||||
start=mgos_uptime();
|
mgos_si7021_getStats(s_si7021, &stats_before);
|
||||||
temperature=mgos_si7021_getTemperature(s_si7021);
|
temperature=mgos_si7021_getTemperature(s_si7021);
|
||||||
humidity=mgos_si7021_getHumidity(s_si7021);
|
humidity=mgos_si7021_getHumidity(s_si7021);
|
||||||
usecs=1000000*(mgos_uptime()-start);
|
mgos_si7021_getStats(s_si7021, &stats_after);
|
||||||
|
|
||||||
|
usecs=stats_after.read_success_usecs - stats_before.read_success_usecs;
|
||||||
LOG(LL_INFO, ("SI7021 sensor=0 temperature=%.2fC humidity=%.1f%% usecs=%u", temperature, humidity, usecs));
|
LOG(LL_INFO, ("SI7021 sensor=0 temperature=%.2fC humidity=%.1f%% usecs=%u", temperature, humidity, usecs));
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
static struct mgos_veml6075 *s_veml6075;
|
static struct mgos_veml6075 *s_veml6075;
|
||||||
|
|
||||||
static void veml6075_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
static void veml6075_prometheus_metrics(struct mg_connection *nc, void *user_data) {
|
||||||
|
struct mgos_veml6075_stats stats;
|
||||||
|
|
||||||
mgos_prometheus_metrics_printf(nc, GAUGE,
|
mgos_prometheus_metrics_printf(nc, GAUGE,
|
||||||
"UV", "Ultra Violet light intensity, in sensor counts",
|
"UV", "Ultra Violet light intensity, in sensor counts",
|
||||||
"{band=\"UVA\",type=\"VEML6075\", sensor=\"0\"} %f", mgos_veml6075_getUVA(s_veml6075));
|
"{band=\"UVA\",type=\"VEML6075\", sensor=\"0\"} %f", mgos_veml6075_getUVA(s_veml6075));
|
||||||
@ -19,6 +21,25 @@ static void veml6075_prometheus_metrics(struct mg_connection *nc, void *user_dat
|
|||||||
"UVIndex", "2: Low, 5.5 Moderate, 7.5 High, 10.5 Very High, else Extreme",
|
"UVIndex", "2: Low, 5.5 Moderate, 7.5 High, 10.5 Very High, else Extreme",
|
||||||
"{sensor=\"0\",type=\"VEML6075\"} %f", mgos_veml6075_getUVIndex(s_veml6075));
|
"{sensor=\"0\",type=\"VEML6075\"} %f", mgos_veml6075_getUVIndex(s_veml6075));
|
||||||
|
|
||||||
|
if (mgos_veml6075_getStats(s_veml6075, &stats)) {
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_total", "Total reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"VEML6075\"} %u", stats.read);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_total", "Total successful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"VEML6075\"} %u", stats.read_success);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_cached_total", "Total successful cached reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"VEML6075\"} %u", stats.read_success_cached);
|
||||||
|
uint32_t errors = stats.read - stats.read_success - stats.read_success_cached;
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_error_total", "Total unsuccessful reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"VEML6075\"} %u", errors);
|
||||||
|
mgos_prometheus_metrics_printf(nc, COUNTER,
|
||||||
|
"sensor_read_success_usecs_total", "Total microseconds spent in reads from sensor",
|
||||||
|
"{sensor=\"0\",type=\"VEML6075\"} %f", stats.read_success_usecs);
|
||||||
|
}
|
||||||
|
|
||||||
(void) user_data;
|
(void) user_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user