From cfe21c61da6420fea4147f0256c46bb56f9d00b0 Mon Sep 17 00:00:00 2001 From: Carlos Giraldo Date: Thu, 9 Jun 2022 14:39:03 +0200 Subject: [PATCH] Structure AMF and MME metrics code similar to SMF (#1590) * AMF metrics initial support * MME metrics initial support * set amf/mme metrics.[c|h] similar to smf --- src/amf/metrics.c | 87 +++++++++++++++++++++++++++-------------------- src/amf/metrics.h | 16 +++------ src/mme/metrics.c | 85 +++++++++++++++++++++++++-------------------- src/mme/metrics.h | 17 +++------ 4 files changed, 108 insertions(+), 97 deletions(-) diff --git a/src/amf/metrics.c b/src/amf/metrics.c index 3196f2986..a3181291f 100644 --- a/src/amf/metrics.c +++ b/src/amf/metrics.c @@ -12,34 +12,25 @@ typedef struct amf_metrics_spec_def_s { const char **labels; } amf_metrics_spec_def_t; -ogs_metrics_spec_t *amf_metrics_spec_global[_AMF_METR_GLOB_MAX]; -ogs_metrics_inst_t *amf_metrics_inst_global[_AMF_METR_GLOB_MAX]; -amf_metrics_spec_def_t amf_metrics_spec_def_global[_AMF_METR_GLOB_MAX] = { -[AMF_METR_GLOB_GAUGE_RAN_UE] = { - .type = OGS_METRICS_METRIC_TYPE_GAUGE, - .name = "ran_ue", - .description = "RAN UEs", - .initial_val = 0, - .num_labels = 0, - .labels = NULL, -}, -[AMF_METR_GLOB_GAUGE_AMF_SESS] = { - .type = OGS_METRICS_METRIC_TYPE_GAUGE, - .name = "amf_session", - .description = "AMF Sessions", - .initial_val = 0, - .num_labels = 0, - .labels = NULL, -}, -[AMF_METR_GLOB_GAUGE_GNB] = { - .type = OGS_METRICS_METRIC_TYPE_GAUGE, - .name = "gnb", - .description = "gNodeBs", - .initial_val = 0, - .num_labels = 0, - .labels = NULL, -}, -}; +/* Helper generic functions: */ +static int amf_metrics_init_inst(ogs_metrics_inst_t **inst, ogs_metrics_spec_t **specs, + unsigned int len, unsigned int num_labels, const char **labels) +{ + unsigned int i; + for (i = 0; i < len; i++) + inst[i] = ogs_metrics_inst_new(specs[i], num_labels, labels); + return OGS_OK; +} + +static int amf_metrics_free_inst(ogs_metrics_inst_t **inst, + unsigned int len) +{ + unsigned int i; + for (i = 0; i < len; i++) + ogs_metrics_inst_free(inst[i]); + memset(inst, 0, sizeof(inst[0]) * len); + return OGS_OK; +} static int amf_metrics_init_spec(ogs_metrics_context_t *ctx, ogs_metrics_spec_t **dst, amf_metrics_spec_def_t *src, unsigned int len) @@ -53,13 +44,35 @@ static int amf_metrics_init_spec(ogs_metrics_context_t *ctx, return OGS_OK; } - -static int amf_metrics_init_inst_global(ogs_metrics_inst_t **inst, ogs_metrics_spec_t **specs, unsigned int len) +/* GLOBAL */ +ogs_metrics_spec_t *amf_metrics_spec_global[_AMF_METR_GLOB_MAX]; +ogs_metrics_inst_t *amf_metrics_inst_global[_AMF_METR_GLOB_MAX]; +amf_metrics_spec_def_t amf_metrics_spec_def_global[_AMF_METR_GLOB_MAX] = { +/* Global Gauges: */ +[AMF_METR_GLOB_GAUGE_RAN_UE] = { + .type = OGS_METRICS_METRIC_TYPE_GAUGE, + .name = "ran_ue", + .description = "RAN UEs", +}, +[AMF_METR_GLOB_GAUGE_AMF_SESS] = { + .type = OGS_METRICS_METRIC_TYPE_GAUGE, + .name = "amf_session", + .description = "AMF Sessions", +}, +[AMF_METR_GLOB_GAUGE_GNB] = { + .type = OGS_METRICS_METRIC_TYPE_GAUGE, + .name = "gnb", + .description = "gNodeBs", +}, +}; +static int amf_metrics_init_inst_global(void) { - unsigned int i; - for (i = 0; i < len; i++) - inst[i] = ogs_metrics_inst_new(specs[i], 0, NULL); - return OGS_OK; + return amf_metrics_init_inst(amf_metrics_inst_global, amf_metrics_spec_global, + _AMF_METR_GLOB_MAX, 0, NULL); +} +static int amf_metrics_free_inst_global(void) +{ + return amf_metrics_free_inst(amf_metrics_inst_global, _AMF_METR_GLOB_MAX); } int amf_metrics_open(void) @@ -70,14 +83,14 @@ int amf_metrics_open(void) amf_metrics_init_spec(ctx, amf_metrics_spec_global, amf_metrics_spec_def_global, _AMF_METR_GLOB_MAX); - amf_metrics_init_inst_global(amf_metrics_inst_global, amf_metrics_spec_global, - _AMF_METR_GLOB_MAX); + amf_metrics_init_inst_global(); return 0; } int amf_metrics_close(void) { ogs_metrics_context_t *ctx = ogs_metrics_self(); + amf_metrics_free_inst_global(); ogs_metrics_context_close(ctx); return OGS_OK; -} +} \ No newline at end of file diff --git a/src/amf/metrics.h b/src/amf/metrics.h index 12f3bcc7b..291b65845 100644 --- a/src/amf/metrics.h +++ b/src/amf/metrics.h @@ -16,21 +16,13 @@ typedef enum amf_metric_type_global_s { extern ogs_metrics_inst_t *amf_metrics_inst_global[_AMF_METR_GLOB_MAX]; static inline void amf_metrics_inst_global_set(amf_metric_type_global_t t, int val) -{ - ogs_metrics_inst_set(amf_metrics_inst_global[t], val); -} +{ ogs_metrics_inst_set(amf_metrics_inst_global[t], val); } static inline void amf_metrics_inst_global_add(amf_metric_type_global_t t, int val) -{ - ogs_metrics_inst_add(amf_metrics_inst_global[t], val); -} +{ ogs_metrics_inst_add(amf_metrics_inst_global[t], val); } static inline void amf_metrics_inst_global_inc(amf_metric_type_global_t t) -{ - ogs_metrics_inst_inc(amf_metrics_inst_global[t]); -} +{ ogs_metrics_inst_inc(amf_metrics_inst_global[t]); } static inline void amf_metrics_inst_global_dec(amf_metric_type_global_t t) -{ - ogs_metrics_inst_dec(amf_metrics_inst_global[t]); -} +{ ogs_metrics_inst_dec(amf_metrics_inst_global[t]); } int amf_metrics_open(void); int amf_metrics_close(void); diff --git a/src/mme/metrics.c b/src/mme/metrics.c index d827b2a11..76c336407 100644 --- a/src/mme/metrics.c +++ b/src/mme/metrics.c @@ -12,34 +12,25 @@ typedef struct mme_metrics_spec_def_s { const char **labels; } mme_metrics_spec_def_t; -ogs_metrics_spec_t *mme_metrics_spec_global[_MME_METR_GLOB_MAX]; -ogs_metrics_inst_t *mme_metrics_inst_global[_MME_METR_GLOB_MAX]; -mme_metrics_spec_def_t mme_metrics_spec_def_global[_MME_METR_GLOB_MAX] = { -[MME_METR_GLOB_GAUGE_ENB_UE] = { - .type = OGS_METRICS_METRIC_TYPE_GAUGE, - .name = "enb_ue", - .description = "Number of UEs connected to eNodeBs", - .initial_val = 0, - .num_labels = 0, - .labels = NULL, -}, -[MME_METR_GLOB_GAUGE_MME_SESS] = { - .type = OGS_METRICS_METRIC_TYPE_GAUGE, - .name = "mme_session", - .description = "MME Sessions", - .initial_val = 0, - .num_labels = 0, - .labels = NULL, -}, -[MME_METR_GLOB_GAUGE_ENB] = { - .type = OGS_METRICS_METRIC_TYPE_GAUGE, - .name = "enb", - .description = "eNodeBs", - .initial_val = 0, - .num_labels = 0, - .labels = NULL, -}, -}; +/* Helper generic functions: */ +static int mme_metrics_init_inst(ogs_metrics_inst_t **inst, ogs_metrics_spec_t **specs, + unsigned int len, unsigned int num_labels, const char **labels) +{ + unsigned int i; + for (i = 0; i < len; i++) + inst[i] = ogs_metrics_inst_new(specs[i], num_labels, labels); + return OGS_OK; +} + +static int mme_metrics_free_inst(ogs_metrics_inst_t **inst, + unsigned int len) +{ + unsigned int i; + for (i = 0; i < len; i++) + ogs_metrics_inst_free(inst[i]); + memset(inst, 0, sizeof(inst[0]) * len); + return OGS_OK; +} static int mme_metrics_init_spec(ogs_metrics_context_t *ctx, ogs_metrics_spec_t **dst, mme_metrics_spec_def_t *src, unsigned int len) @@ -53,13 +44,35 @@ static int mme_metrics_init_spec(ogs_metrics_context_t *ctx, return OGS_OK; } - -static int mme_metrics_init_inst_global(ogs_metrics_inst_t **inst, ogs_metrics_spec_t **specs, unsigned int len) +/* GLOBAL */ +ogs_metrics_spec_t *mme_metrics_spec_global[_MME_METR_GLOB_MAX]; +ogs_metrics_inst_t *mme_metrics_inst_global[_MME_METR_GLOB_MAX]; +mme_metrics_spec_def_t mme_metrics_spec_def_global[_MME_METR_GLOB_MAX] = { +/* Global Gauges: */ +[MME_METR_GLOB_GAUGE_ENB_UE] = { + .type = OGS_METRICS_METRIC_TYPE_GAUGE, + .name = "enb_ue", + .description = "Number of UEs connected to eNodeBs", +}, +[MME_METR_GLOB_GAUGE_MME_SESS] = { + .type = OGS_METRICS_METRIC_TYPE_GAUGE, + .name = "mme_session", + .description = "MME Sessions", +}, +[MME_METR_GLOB_GAUGE_ENB] = { + .type = OGS_METRICS_METRIC_TYPE_GAUGE, + .name = "enb", + .description = "eNodeBs", +}, +}; +static int mme_metrics_init_inst_global(void) { - unsigned int i; - for (i = 0; i < len; i++) - inst[i] = ogs_metrics_inst_new(specs[i], 0, NULL); - return OGS_OK; + return mme_metrics_init_inst(mme_metrics_inst_global, mme_metrics_spec_global, + _MME_METR_GLOB_MAX, 0, NULL); +} +static int mme_metrics_free_inst_global(void) +{ + return mme_metrics_free_inst(mme_metrics_inst_global, _MME_METR_GLOB_MAX); } int mme_metrics_open(void) @@ -70,14 +83,14 @@ int mme_metrics_open(void) mme_metrics_init_spec(ctx, mme_metrics_spec_global, mme_metrics_spec_def_global, _MME_METR_GLOB_MAX); - mme_metrics_init_inst_global(mme_metrics_inst_global, mme_metrics_spec_global, - _MME_METR_GLOB_MAX); + mme_metrics_init_inst_global(); return 0; } int mme_metrics_close(void) { ogs_metrics_context_t *ctx = ogs_metrics_self(); + mme_metrics_free_inst_global(); ogs_metrics_context_close(ctx); return OGS_OK; } diff --git a/src/mme/metrics.h b/src/mme/metrics.h index 60b5d58af..3fdcaa1e3 100644 --- a/src/mme/metrics.h +++ b/src/mme/metrics.h @@ -7,6 +7,7 @@ extern "C" { #endif +/* GLOBAL */ typedef enum mme_metric_type_global_s { MME_METR_GLOB_GAUGE_ENB_UE, MME_METR_GLOB_GAUGE_MME_SESS, @@ -16,21 +17,13 @@ typedef enum mme_metric_type_global_s { extern ogs_metrics_inst_t *mme_metrics_inst_global[_MME_METR_GLOB_MAX]; static inline void mme_metrics_inst_global_set(mme_metric_type_global_t t, int val) -{ - ogs_metrics_inst_set(mme_metrics_inst_global[t], val); -} +{ ogs_metrics_inst_set(mme_metrics_inst_global[t], val); } static inline void mme_metrics_inst_global_add(mme_metric_type_global_t t, int val) -{ - ogs_metrics_inst_add(mme_metrics_inst_global[t], val); -} +{ ogs_metrics_inst_add(mme_metrics_inst_global[t], val); } static inline void mme_metrics_inst_global_inc(mme_metric_type_global_t t) -{ - ogs_metrics_inst_inc(mme_metrics_inst_global[t]); -} +{ ogs_metrics_inst_inc(mme_metrics_inst_global[t]); } static inline void mme_metrics_inst_global_dec(mme_metric_type_global_t t) -{ - ogs_metrics_inst_dec(mme_metrics_inst_global[t]); -} +{ ogs_metrics_inst_dec(mme_metrics_inst_global[t]); } int mme_metrics_open(void); int mme_metrics_close(void);