Skip to content

xCore Metrics⚓︎

This page is the reference for the metrics an xCore site reports. They are grouped by the network function that produces them, because that is how you will troubleshoot: something is wrong with attach, or with the user plane, or with subscriber data, and you want the counters for that part of the system.

Every metric here carries the site and customer identity labels described in Metric Labels and Conventions, and protocol counters carry the direction, message, type and cause labels specified there. That page is the one to read first — it explains the label pattern this page relies on, and without it the tables below look like far more metrics than they really are.

xRouter reports these same metric families for the network functions it runs, through the same Expeto Agent and under the same job name — so everything here applies to an xRouter site too, for the functions present there.

Note

Counter metrics end in _total and only ever increase. Query them with rate() or increase() over a window; the raw value is the count since the process started and is rarely what you want. Metrics without that suffix are gauges — a current value, meaningful as-is.

Mobility management (MME)⚓︎

The MME handles attach, tracking-area update, paging and handover for 4G subscribers.

Protocol counters⚓︎

Metric Interface
xcore_mme_s1ap_total S1AP, to the eNodeBs
xcore_mme_nas_total NAS, to the devices
xcore_mme_diameter_total S6a, to the HSS
xcore_mme_gtpv2_total GTP-C v2, to the SGW/PGW and peer MMEs
xcore_mme_gtpv1_total GTP-C v1, for legacy interworking
xcore_mme_sbcap_total SBc-AP, for public warning messages
xcore_mme_dns_total DNS lookups for node selection
xcore_mme_eir_total S13, to the equipment identity register
xcore_mme_sgh_total SGs, to the MSC for circuit-switched fallback and SMS

Supporting counters: xcore_mme_diameter_peer_connection_down and xcore_mme_diameter_timer_expiry (labelled by timer) report Diameter peer health directly, rather than requiring you to infer it from message rates.

Current state⚓︎

These gauges describe what the MME is holding right now, and are the fastest way to size a site or confirm that load has actually moved:

Metric Meaning
xcore_mme_resource_imsi_attached Subscribers currently attached
xcore_mme_resource_imsi_active Subscribers with an active connection
xcore_mme_resource_imsi_visited_attached Attached subscribers from a visited network
xcore_mme_resource_imsi_neutralhost_attached Attached subscribers in a neutral-host configuration
xcore_mme_resource_sessions Active sessions
xcore_mme_resource_bearers Active bearers
xcore_mme_resource_bearers_gbr Active guaranteed-bit-rate bearers
xcore_mme_resource_enodeb_connected Radios with an established S1 connection
xcore_mme_resource_paging_ongoing Paging procedures in progress
xcore_mme_resource_warning_received Public warning messages received

Procedures and failures⚓︎

xcore_mme_procedure_* counts individual procedures — handovers of each kind, operator-initiated resets, bearer modifications, dropped packets — and xcore_mme_failure_* counts the corresponding failure cases. They are the detail behind a raised failure rate seen in the NAS or S1AP counters.

SMS and circuit-switched fallback over SGs have their own counters: xcore_mme_sgh_mo_sms_received_total, xcore_mme_sgh_mt_sms_received_total, the matching _dropped_ variants, and xcore_mme_sgh_combined_attach_total with xcore_mme_sgh_successful_combined_attach_total.

Emergency and closed-subscriber-group handling: xcore_mme_emergency_call_total, xcore_mme_emergency_sessions_with_imei_total, xcore_mme_emergency_sessions_witout_auth_total, xcore_mme_csg_calls_with_subscription_expired_total and xcore_mme_csg_calls_failed_for_subscription_not_available_total.

Session management (SMF)⚓︎

The SMF establishes and maintains sessions, and controls the user plane over PFCP.

Protocol counters⚓︎

Metric Interface
xcore_smf_pfcp_total N4, to the UPF
xcore_smf_n11_total N11, to the AMF (service-based)
xcore_smf_gtp_2_total GTP-C v2, for 4G session management
xcore_smf_gtp_1_total GTP-C v1, for legacy interworking

Sessions and associations⚓︎

Metric Meaning
xcore_smf_pdusession Current 5G PDU sessions
xcore_smf_pdusession_total PDU session events, by message and type
xcore_smf_pdnsession Current 4G PDN sessions
xcore_smf_pdnsession_total PDN session events, by message and type
xcore_smf_upfsession Sessions per user plane, labelled by upf_ip
xcore_smf_pfcpassociation Current PFCP associations
xcore_smf_gtpassociation GTP peer state
xcore_smf_gtpassociation_total GTP path events, including echo timeouts and path failures

Session counts are the first thing to check against the configured capacity of a site: a session count that has flattened at a round number is a limit, not a traffic pattern.

Identifier and address allocation⚓︎

xcore_smf_idallocated and xcore_smf_idavailable, with xcore_smf_ipallocated and xcore_smf_ipavailable, report the allocators that hand out session identifiers and UE addresses. xcore_smf_idallocator_queue reports pending allocation requests; a queue that is not draining means sessions will start failing shortly, which makes it a useful leading indicator. xcore_smf_idallocator_total and xcore_smf_ipallocator_total count allocation operations.

Tip

Exhausted addresses look like a session-establishment failure at the protocol level. When xcore_smf_pfcp_total{cause="no_resources_available"} rises, check xcore_smf_ipavailable before investigating the user plane.

User plane (UPF)⚓︎

The UPF forwards subscriber traffic and enforces the rules the SMF installs.

Throughput and volume⚓︎

Metric Meaning
xcore_upf_uplink_volume_bytes, xcore_upf_downlink_volume_bytes Bytes forwarded in each direction
xcore_upf_uplink_volume_packets, xcore_upf_downlink_volume_packets Packets forwarded in each direction
xcore_upf_uplink_throughput_rate, xcore_upf_downlink_throughput_rate Current throughput in each direction

Sessions and PFCP⚓︎

xcore_upf_active_pfcp_sessions and xcore_upf_active_pfcp_association report what the UPF is currently holding. Comparing the session count against the SMF's own view is the standard way to detect a user plane that has drifted out of step with the control plane.

PFCP procedures are counted per procedure and outcome — for association setup, and for session create, modification, release and report, each with _total, _success and _failed:

rate(xcore_upf_pfcp_session_create_failed[5m])

On an xCore installed with the operator, every user plane reports its own series: the Agent reads each UPF's statistics from NFCM and labels them with the UPF's nfnode (elm-nfcm-statistics-<user plane>) and with upf, role (sgwu, pgwu, upf, iupf), position (front or anchor), mode and, for an anchor, systemid. Three further series describe each user plane and join on nfnode: xcore_upf_info (value 1, with the labels above plus dnn, n9peers, serviceid, tenantid and site), xcore_upf_dataplanes (its dataplane pods) and xcore_upf_sessions_per_dataplane (the session table of each). Sessions held by the anchors of one System, for example:

sum by (systemid) (xcore_upf_active_pfcp_sessions{position="anchor"})

Path health is reported by xcore_upf_pfcp_peer_down, xcore_upf_pfcp_msg_retrans_timer_expiry, xcore_upf_echo_req_recv, xcore_upf_echo_resp_send, xcore_upf_gtp_error_ind_recv and xcore_upf_gtp_error_ind_send. A rising error-indication count usually means the peer has lost session state that this node still believes exists.

Access and mobility (AMF)⚓︎

The AMF handles registration, connection management and paging for 5G subscribers. Its counters name the procedure and outcome in the metric itself, so they are read directly rather than aggregated by label.

The families follow a predictable shape — xcore_amf_registration_initial_* for initial registration (accept, complete, identity request and response, authentication request and response, and the reject reasons), xcore_amf_registration_periodic_* and xcore_amf_registration_mobility_* for the other registration types, xcore_amf_dereg_* for deregistration, xcore_amf_paging_* for paging, and xcore_amf_nas_connection_established / xcore_amf_nas_connection_terminated for connection state.

Interactions with other network functions are counted per peer and outcome under xcore_amf_*_consumer_stats and the xcore_amf_nas_transport_* families, covering the AUSF, UDM, SMF, NSSF, NRF and UDSF.

Note

Because outcome is part of the metric name here rather than a cause label, a query across all 5G registration failures matches on the name: sum(rate({__name__=~"xcore_amf_registration_.*_reject_.*"}[5m])).

Subscriber data (HSS)⚓︎

The HSS authenticates subscribers and serves their subscription data. Every interface it implements reports through one family, xcore_hss_<interface>_messages_total, labelled by message, type and cause:

Interface Metric Used for
S6a/S6d xcore_hss_s6_messages_total 4G authentication and location management
MAP xcore_hss_map_messages_total 3G and 2G authentication and mobility
SWx xcore_hss_swx_messages_total Non-3GPP access authentication
S6b xcore_hss_s6b_messages_total Non-3GPP session authorization
STa/SWa xcore_hss_staswa_messages_total Trusted and untrusted non-3GPP access
SWm xcore_hss_swm_messages_total ePDG interworking
Cx/Dx xcore_hss_cxdx_messages_total IMS registration and authentication
Sh xcore_hss_sh_messages_total IMS subscriber data
S6c xcore_hss_s6c_messages_total SMS routing
S6t xcore_hss_s6t_messages_total Machine-type communication
S6m/S6n xcore_hss_s6mn_messages_total Device-trigger subscriber information
S13 xcore_hss_s13_messages_total Equipment identity check
SLh xcore_hss_slh_messages_total Location services routing
Zh xcore_hss_zh_messages_total Generic bootstrapping
SIP xcore_hss_sip_messages_total SIP signalling

Because the shape is identical, one query covers any of them:

sum by (site, cause) (
  rate(xcore_hss_s6_messages_total{message="authentication_information", type="response"}[5m])
)

Signalling link state is reported by xcore_hss_link_total — labelled by type (diameter, map, smpp) and status — against xcore_hss_link_count, the number of links expected to be open. A gap between the two is what the connection-down alerts detect. xcore_hss_link_dropped_messages_total counts messages lost on a link.

xcore_hss_3g, xcore_hss_4g, xcore_hss_active and xcore_hss_vlr report subscriber and register counts, and xcore_hss_msrn_get_total counts roaming-number allocations. The xcore_hss_diameter_sum, xcore_hss_map_sum and xcore_hss_sip_sum families carry latency aggregates per protocol.

Supporting functions⚓︎

The network repository, configuration manager and unstructured data store report their API calls per operation and outcome:

  • xcore_nrf_nf_* — network function registration, update, deregistration and discovery, on an xRouter; an xCore runs without a network repository
  • xcore_nfcm_*_api_* — configuration management operations, per resource
  • xcore_udsf_udsf_req_* — record store requests

Each family follows the _total / _success / _failed pattern.

Platform and site-wide metrics⚓︎

These describe the site as a whole rather than a single network function, and most of the default alerts are built on them.

Metric Meaning
xcore_nf_node_up Whether the agent can reach each network function. Labelled by status, and by vendor for the implementation family, with the instance in nfnode/nfnodeip.
xcore_uptime_minutes Time since the site came up. A reset means a restart.
xcore_version Deployed software version, carried in a label
xcore_clients Devices currently connected to the site
xcore_privateradio_count Radios connected to the site
xcore_epc_connections Established core connections
xcore_sgw_count, xcore_pgw_count, xcore_ggsn_count Instance counts per function
xcore_upload_bytes_total, xcore_download_bytes_total Site-wide traffic volume

Provisioning synchronization⚓︎

The agent continuously reconciles what xControl says a site should hold against what the site actually holds, and reports the difference:

Metric Meaning
xcore_sync_correct Records that match
xcore_sync_mismatch Records present but differing
xcore_sync_missing Records that should exist at the site but do not
xcore_sync_extra Records at the site that should not be there
xcore_sync_pending Changes queued but not yet applied

All five are labelled by component, so they cover subscribers, keysets and radios separately. Non-zero mismatch, missing or extra counts drive the synchronization alerts in xCore Alerts.

Charging records⚓︎

xcore_cdr_count and xcore_cdr_buffer report charging records produced and records waiting to be written. A buffer that grows steadily means records are being produced faster than they are being delivered, and will eventually be lost.

Agent internals⚓︎

The agent's own health: xcore_queue_status, xcore_jms_event_time and xcore_jms_delay_time with their _count companions, xcore_threadpool_fast, xcore_threadpool_slow and xcore_threadpool_dedicated with theirs, xcore_unhandledevents_total, and the REST response counters xcore_rest_2xx_responses_total, xcore_rest_3xx_responses_total, xcore_rest_401_UNAUTHORIZED_responses_total, xcore_rest_404_NOT_FOUND_responses_total and xcore_rest_5xx_responses_total.

Growing JMS delay is the signal that the agent is falling behind xControl, which is what AgentJmsMessagesDelayed detects.

SMS centre⚓︎

xcore_smsc_stored_sms_total, xcore_smsc_mo_forward_ok_total and xcore_smsc_map_sent_ok_total count stored and forwarded messages.