From 3e22d7e1993542f05cd7c80be7a03c955806f58f Mon Sep 17 00:00:00 2001 From: Miquel Ortega Date: Thu, 2 Apr 2020 10:26:01 +0200 Subject: [PATCH] Refactor to use only one function to set metrics --- src/apps/relay/ns_ioalib_engine_impl.c | 22 ++-------- src/apps/relay/prom_server.c | 60 +++++++------------------- src/apps/relay/prom_server.h | 23 ++++++---- 3 files changed, 33 insertions(+), 72 deletions(-) diff --git a/src/apps/relay/ns_ioalib_engine_impl.c b/src/apps/relay/ns_ioalib_engine_impl.c index 9ee51b60..f6a951b8 100644 --- a/src/apps/relay/ns_ioalib_engine_impl.c +++ b/src/apps/relay/ns_ioalib_engine_impl.c @@ -3620,25 +3620,11 @@ void turn_report_session_usage(void *session, int force_invalid) } #endif if(ss->realm_options.name[0]){ - prom_set_rcvp(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->received_packets)); - prom_set_rcvb(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->received_bytes)); - prom_set_sentp(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->sent_packets)); - prom_set_sentb(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->sent_bytes)); - - prom_set_peer_rcvp(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_received_packets)); - prom_set_peer_rcvb(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_received_bytes)); - prom_set_peer_sentp(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_sent_packets)); - prom_set_peer_sentb(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_sent_bytes)); + prom_set_traffic(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->received_packets), (unsigned long)(ss->received_bytes), (unsigned long)(ss->sent_packets), (unsigned long)(ss->sent_bytes), false); + prom_set_traffic(ss->realm_options.name, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_received_packets), (unsigned long)(ss->peer_received_bytes), (unsigned long)(ss->peer_sent_packets), (unsigned long)(ss->peer_sent_bytes), true); } else { - prom_set_rcvp(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->received_packets)); - prom_set_rcvb(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->received_bytes)); - prom_set_sentp(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->sent_packets)); - prom_set_sentb(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->sent_bytes)); - - prom_set_peer_rcvp(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_received_packets)); - prom_set_peer_rcvb(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_received_bytes)); - prom_set_peer_sentp(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_sent_packets)); - prom_set_peer_sentb(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_sent_bytes)); + prom_set_traffic(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->received_packets), (unsigned long)(ss->received_bytes), (unsigned long)(ss->sent_packets), (unsigned long)(ss->sent_bytes), false); + prom_set_traffic(NULL, (const char *)ss->username, (unsigned long long)(ss->id), (unsigned long)(ss->peer_received_packets), (unsigned long)(ss->peer_received_bytes), (unsigned long)(ss->peer_sent_packets), (unsigned long)(ss->peer_sent_bytes), true); } ss->t_received_packets += ss->received_packets; diff --git a/src/apps/relay/prom_server.c b/src/apps/relay/prom_server.c index fccb676c..8cad6b61 100644 --- a/src/apps/relay/prom_server.c +++ b/src/apps/relay/prom_server.c @@ -3,14 +3,17 @@ int start_prometheus_server(void){ prom_collector_registry_default_init(); turn_status = prom_collector_registry_must_register_metric(prom_gauge_new("turn_status", "Represents status", 5, (const char *[]) {"realm", "user", "allocation", "status", "lifetime" })); + turn_traffic_rcvp = prom_collector_registry_must_register_metric(prom_gauge_new("turn_traffic_rcvp", "Represents received packets", 3, (const char *[]) {"realm", "user", "allocation" })); turn_traffic_rcvb = prom_collector_registry_must_register_metric(prom_gauge_new("turn_traffic_rcvb", "Represents received bytes", 3, (const char *[]) {"realm", "user", "allocation" })); turn_traffic_sentp = prom_collector_registry_must_register_metric(prom_gauge_new("turn_traffic_sentp", "Represents sent packets", 3, (const char *[]) {"realm", "user", "allocation" })); turn_traffic_sentb = prom_collector_registry_must_register_metric(prom_gauge_new("turn_traffic_sentb", "Represents received bytes", 3, (const char *[]) {"realm", "user", "allocation" })); + turn_traffic_peer_rcvp = prom_collector_registry_must_register_metric(prom_gauge_new("turn_traffic_peer_rcvp", "Represents peer received packets", 3, (const char *[]) {"realm", "user", "allocation" })); turn_traffic_peer_rcvb = prom_collector_registry_must_register_metric(prom_gauge_new("turn_traffic_peer_rcvb", "Represents peer received bytes", 3, (const char *[]) {"realm", "user", "allocation" })); turn_traffic_peer_sentp = prom_collector_registry_must_register_metric(prom_gauge_new("turn_traffic_peer_sentp", "Represents peer sent packets", 3, (const char *[]) {"realm", "user", "allocation" })); turn_traffic_peer_sentb = prom_collector_registry_must_register_metric(prom_gauge_new("turn_traffic_peer_sentb", "Represents peer received bytes", 3, (const char *[]) {"realm", "user", "allocation" })); + promhttp_set_active_collector_registry(NULL); @@ -39,53 +42,20 @@ void prom_del_status(const char* realm, const char* user, unsigned long long all prom_gauge_add(turn_status, 1, (const char *[]) { realm , user, allocation_chars, status, NULL }); } - -void prom_set_rcvp(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvp){ +void prom_set_traffic(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvp, unsigned long rsvb, unsigned long sentp, unsigned long sentb, bool peer){ char allocation_chars[1024]; snprintf(allocation_chars, sizeof(allocation_chars), "%018llu", allocation); - prom_gauge_set(turn_traffic_rcvp, rsvp, (const char *[]) { realm , user, allocation_chars }); -} -void prom_set_rcvb(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvb){ - char allocation_chars[1024]; - snprintf(allocation_chars, sizeof(allocation_chars), "%018llu", allocation); - - prom_gauge_set(turn_traffic_rcvb, rsvb, (const char *[]) { realm , user, allocation_chars }); -} -void prom_set_sentp(const char* realm, const char* user, unsigned long long allocation, unsigned long sentp){ - char allocation_chars[1024]; - snprintf(allocation_chars, sizeof(allocation_chars), "%018llu", allocation); - - prom_gauge_set(turn_traffic_sentp, sentp, (const char *[]) { realm , user, allocation_chars }); -} -void prom_set_sentb(const char* realm, const char* user, unsigned long long allocation, unsigned long sentb){ - char allocation_chars[1024]; - snprintf(allocation_chars, sizeof(allocation_chars), "%018llu", allocation); - - prom_gauge_set(turn_traffic_sentb, sentb, (const char *[]) { realm , user, allocation_chars }); + if (peer){ + prom_gauge_set(turn_traffic_peer_rcvp, rsvp, (const char *[]) { realm , user, allocation_chars }); + prom_gauge_set(turn_traffic_peer_rcvb, rsvb, (const char *[]) { realm , user, allocation_chars }); + prom_gauge_set(turn_traffic_peer_sentp, sentp, (const char *[]) { realm , user, allocation_chars }); + prom_gauge_set(turn_traffic_peer_sentb, sentb, (const char *[]) { realm , user, allocation_chars }); + } else { + prom_gauge_set(turn_traffic_rcvp, rsvp, (const char *[]) { realm , user, allocation_chars }); + prom_gauge_set(turn_traffic_rcvb, rsvb, (const char *[]) { realm , user, allocation_chars }); + prom_gauge_set(turn_traffic_sentp, sentp, (const char *[]) { realm , user, allocation_chars }); + prom_gauge_set(turn_traffic_sentb, sentb, (const char *[]) { realm , user, allocation_chars }); + } } -void prom_set_peer_rcvp(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvp){ - char allocation_chars[1024]; - snprintf(allocation_chars, sizeof(allocation_chars), "%018llu", allocation); - - prom_gauge_set(turn_traffic_peer_rcvp, rsvp, (const char *[]) { realm , user, allocation_chars }); -} -void prom_set_peer_rcvb(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvb){ - char allocation_chars[1024]; - snprintf(allocation_chars, sizeof(allocation_chars), "%018llu", allocation); - - prom_gauge_set(turn_traffic_peer_rcvb, rsvb, (const char *[]) { realm , user, allocation_chars }); -} -void prom_set_peer_sentp(const char* realm, const char* user, unsigned long long allocation, unsigned long sentp){ - char allocation_chars[1024]; - snprintf(allocation_chars, sizeof(allocation_chars), "%018llu", allocation); - - prom_gauge_set(turn_traffic_peer_sentp, sentp, (const char *[]) { realm , user, allocation_chars }); -} -void prom_set_peer_sentb(const char* realm, const char* user, unsigned long long allocation, unsigned long sentb){ - char allocation_chars[1024]; - snprintf(allocation_chars, sizeof(allocation_chars), "%018llu", allocation); - - prom_gauge_set(turn_traffic_peer_sentb, sentb, (const char *[]) { realm , user, allocation_chars }); -} diff --git a/src/apps/relay/prom_server.h b/src/apps/relay/prom_server.h index bfe3a288..0ab1f23a 100644 --- a/src/apps/relay/prom_server.h +++ b/src/apps/relay/prom_server.h @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -14,15 +15,27 @@ #define DEFAULT_PROM_SERVER_PORT (9121) prom_gauge_t *turn_status; + prom_gauge_t *turn_traffic_rcvp; prom_gauge_t *turn_traffic_rcvb; prom_gauge_t *turn_traffic_sentp; prom_gauge_t *turn_traffic_sentb; + +prom_gauge_t *turn_total_traffic_rcvp; +prom_gauge_t *turn_total_traffic_rcvb; +prom_gauge_t *turn_total_traffic_sentp; +prom_gauge_t *turn_total_traffic_sentb; + prom_gauge_t *turn_traffic_peer_rcvp; prom_gauge_t *turn_traffic_peer_rcvb; prom_gauge_t *turn_traffic_peer_sentp; prom_gauge_t *turn_traffic_peer_sentb; +prom_gauge_t *turn_total_traffic_peer_rcvp; +prom_gauge_t *turn_total_traffic_peer_rcvb; +prom_gauge_t *turn_total_traffic_peer_sentp; +prom_gauge_t *turn_total_traffic_peer_sentb; + #ifdef __cplusplus extern "C" { #endif @@ -31,15 +44,7 @@ int start_prometheus_server(void); void prom_set_status(const char* realm, const char* user, unsigned long long allocation, const char* status, unsigned long lifetime); void prom_del_status(const char* realm, const char* user, unsigned long long allocation, const char* status); -void prom_set_rcvp(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvp); -void prom_set_rcvb(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvb); -void prom_set_sentp(const char* realm, const char* user, unsigned long long allocation, unsigned long sentp); -void prom_set_sentb(const char* realm, const char* user, unsigned long long allocation, unsigned long sentb); -void prom_set_peer_rcvp(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvp); -void prom_set_peer_rcvb(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvb); -void prom_set_peer_sentp(const char* realm, const char* user, unsigned long long allocation, unsigned long sentp); -void prom_set_peer_sentb(const char* realm, const char* user, unsigned long long allocation, unsigned long sentb); - +void prom_set_traffic(const char* realm, const char* user, unsigned long long allocation, unsigned long rsvp, unsigned long rsvb, unsigned long sentp, unsigned long sentb, bool peer); #ifdef __cplusplus