pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-msc/+/40633?usp=email )
Change subject: ran_peer: Introduce stats msc.ran_peers.{total,active}
......................................................................
ran_peer: Introduce stats msc.ran_peers.{total,active}
Change-Id: I36e40510c9a95f0c9cf5f32d2a7baab840aa8660
---
M include/osmocom/msc/gsm_data.h
M src/libmsc/ran_peer.c
2 files changed, 34 insertions(+), 2 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h
index 119f093..36149e1 100644
--- a/include/osmocom/msc/gsm_data.h
+++ b/include/osmocom/msc/gsm_data.h
@@ -109,6 +109,8 @@
enum {
MSC_STAT_ACTIVE_CALLS,
MSC_STAT_ACTIVE_NC_SS,
+ MSC_STAT_RAN_PEERS_TOTAL,
+ MSC_STAT_RAN_PEERS_ACTIVE,
};
static const struct rate_ctr_group_desc msc_ctrg_desc = {
@@ -120,8 +122,10 @@
};
static const struct osmo_stat_item_desc msc_stat_item_description[] = {
- [MSC_STAT_ACTIVE_CALLS] = { "msc.active_calls", "Currently active calls
" , OSMO_STAT_ITEM_NO_UNIT, 4, 0},
- [MSC_STAT_ACTIVE_NC_SS] = { "msc.active_nc_ss", "Currently active
SS/USSD sessions", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
+ [MSC_STAT_ACTIVE_CALLS] = { "msc.active_calls", "Currently active calls
", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
+ [MSC_STAT_ACTIVE_NC_SS] = { "msc.active_nc_ss", "Currently active
SS/USSD sessions", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
+ [MSC_STAT_RAN_PEERS_TOTAL] = { "msc.ran_peers.total", "Total RAN peers
(BSC, RNC) seen since startup", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
+ [MSC_STAT_RAN_PEERS_ACTIVE] = { "msc.ran_peers.active", "Currently active
RAN peers (BSSAP/RANAP ready)", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
};
static const struct osmo_stat_item_group_desc msc_statg_desc = {
diff --git a/src/libmsc/ran_peer.c b/src/libmsc/ran_peer.c
index 26cd7cd..1e9b4b6 100644
--- a/src/libmsc/ran_peer.c
+++ b/src/libmsc/ran_peer.c
@@ -23,6 +23,7 @@
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/logging.h>
#include <osmocom/core/fsm.h>
+#include <osmocom/core/stat_item.h>
#include <osmocom/sigtran/sccp_helpers.h>
#include <osmocom/msc/ran_peer.h>
@@ -45,6 +46,7 @@
/* Allocate a RAN peer with FSM instance. To deallocate, call
osmo_fsm_inst_term(ran_peer->fi). */
static struct ran_peer *ran_peer_alloc(struct sccp_ran_inst *sri, const struct
osmo_sccp_addr *peer_addr)
{
+ struct gsm_network *net = sri->user_data;
struct ran_peer *rp;
struct osmo_fsm_inst *fi;
char *sccp_addr;
@@ -75,6 +77,7 @@
fi->priv = rp;
llist_add(&rp->entry, &sri->ran_peers);
+ osmo_stat_item_inc(osmo_stat_item_group_get_item(net->statg,
MSC_STAT_RAN_PEERS_TOTAL), 1);
return rp;
}
@@ -392,6 +395,14 @@
return msc_i->ran_conn;
}
+static void ran_peer_st_ready_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct ran_peer *rp = fi->priv;
+ struct gsm_network *net = rp->sri->user_data;
+ if (prev_state != RAN_PEER_ST_READY)
+ osmo_stat_item_inc(osmo_stat_item_group_get_item(net->statg,
MSC_STAT_RAN_PEERS_ACTIVE), 1);
+}
+
static void ran_peer_st_ready(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
struct ran_peer *rp = fi->priv;
@@ -489,6 +500,14 @@
}
}
+static void ran_peer_st_ready_onleave(struct osmo_fsm_inst *fi, uint32_t next_state)
+{
+ struct ran_peer *rp = fi->priv;
+ struct gsm_network *net = rp->sri->user_data;
+ if (next_state != RAN_PEER_ST_READY)
+ osmo_stat_item_dec(osmo_stat_item_group_get_item(net->statg,
MSC_STAT_RAN_PEERS_ACTIVE), 1);
+}
+
static int ran_peer_fsm_timer_cb(struct osmo_fsm_inst *fi)
{
struct ran_peer *rp = fi->priv;
@@ -499,7 +518,14 @@
static void ran_peer_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause
cause)
{
struct ran_peer *rp = fi->priv;
+ struct gsm_network *net = rp->sri->user_data;
+
ran_peer_discard_all_conns(rp);
+
+ if (rp->fi->state == RAN_PEER_ST_READY)
+ osmo_stat_item_dec(osmo_stat_item_group_get_item(net->statg,
MSC_STAT_RAN_PEERS_ACTIVE), 1);
+ osmo_stat_item_dec(osmo_stat_item_group_get_item(net->statg,
MSC_STAT_RAN_PEERS_TOTAL), 1);
+
llist_del(&rp->entry);
}
@@ -558,6 +584,8 @@
[RAN_PEER_ST_READY] = {
.name = "READY",
.action = ran_peer_st_ready,
+ .onenter = ran_peer_st_ready_onenter,
+ .onleave = ran_peer_st_ready_onleave,
.in_event_mask = 0
| S(RAN_PEER_EV_RX_RESET)
| S(RAN_PEER_EV_MSG_UP_CO_INITIAL)
--
To view, visit
https://gerrit.osmocom.org/c/osmo-msc/+/40633?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I36e40510c9a95f0c9cf5f32d2a7baab840aa8660
Gerrit-Change-Number: 40633
Gerrit-PatchSet: 6
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>