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 repositoryxcore_nfcm_*_api_*— configuration management operations, per resourcexcore_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.
Related pages⚓︎
- Metric Labels and Conventions — the label pattern these metrics follow
- xCore Alerts — the default alerts built on these metrics
- xControl Metrics — the central platform's own metrics
- Infrastructure Metrics — hosts, containers and Kubernetes