Monitor UE usage with Event Hubs

Azure Private 5G Core can be configured to integrate with Event Hubs, allowing you to monitor UE usage. Event Hubs is a modern big data streaming platform and event ingestion service that can seamlessly integrate with AP5GC. The service can process millions of events per second with low latency. The data sent to an Event Hubs instance can be transformed and stored by using any real-time analytics providers or batching or storage adapters.

You can monitor UE usage based on the monitoring data generated by Azure Event Hubs, and analyze or alert on this data with Azure Monitor.

Prerequisites

  • You must have an Event Hubs instance with a shared access policy. The shared access policy must have send and receive access configured.
  • You must have a user assigned managed identity that has the Contributor or Owner role for the Event Hubs instance and is assigned to the Packet Core Control Plane for the site.

Tip

A default shared access policy will be created automatically if the Packet Core Control Plane is configured with the required managed identity.

Configure UE usage monitoring

UE usage monitoring can be enabled during site creation or at a later stage by modifying the packet core configuration.

Once Event Hubs is receiving data from your AP5GC deployment, you can write an application using SDKs such as .NET to consume event data and produce metrics.

Tip

If you create the managed identity after enabling UE usage monitoring, you will need to refresh the packet core configuration by making a dummy configuration change. See Modify a packet core instance.

Reported UE usage data

When configured, AP5GC will send data usage reports per QoS flow level for all PDU sessions. The following data is reported:

Data name Data Type Description
Subscriber Identifier (SUPI/IMSI) String The identifier associated with the UE.
IMEI String The International Mobile Equipment Identity associated with the UE.
Serving PLMN ID String The ID of the serving public land mobile network associated with the UE.
Event Timestamp Datetime Timestamp of the UE event.
Total data Volume (Bytes) Integer Total data volume transmitted. Measured in bytes.
Uplink data volume Integer Uplink data volume transmitted. Measured in bytes.
Downlink data volume Integer Downlink data volume transmitted. Measured in bytes.
APN/DNN String The data point or data network name.
Timestamp First usage Datetime Time stamp for the first IP packet to be transmitted and mapped to the current UE data usage event.
Timestamp Last usage Datetime Time stamp for the last IP packet to be transmitted and mapped to the current UE data usage event.
Duration Integer Duration in seconds in which this event data is collected.
RAN Identifier String The radio access network identifier associated with the UE.
RAT Type Integer The radio access technology type.
QCI/5QI Integer The quality of service identifier. See 5G quality of service (QoS) and QoS flows for more information.
PDU Session ID String The identifier for the protocol data unit for the UE event.
IP Address String The UE's IP address.
Packet Core Control Plane ARM ID String The identifier of the packet core control plane ARM associated with the UE.
Packet Core Data Plane ARM ID String The identifier of the packet core data plane ARM associated with the UE.
ARP Object The Allocation and Retention Policy, including the: priority level, preemption capability and preemption vulnerability. See 5G quality of service (QoS) and QoS flows for more information.
- ArpPriorityLevel Int (1-15) See ARP above.
- Preemption Capability String See ARP above.
- Preemption Vulnerability String See ARP above.

Azure Stream Analytics

Azure Stream Analytics allows you to process and analyze streaming data from Event Hubs. See Process data from your Event Hubs using Azure Stream Analytics for more information.

UE usage schema

The following schema is used by Event Hubs to validate the UE usage messages.

{
  "type": "record",
  "name": "UeUsageReport",
  "namespace": "Microsoft.Azure.Pmn.EventHubAgent.Models",
  "doc": "Schema for the UE usage report data. The events will be serialized using this schema.",
    "fields": [{
        "name": "apnDnn",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "arp",
        "type": ["null", {
            "type": "record",
            "name": "Arp",
            "fields": [{
                "name": "preemptCap",
                "type": ["null", "string"],
                "default": null
            }, {
                "name": "preemptVuln",
                "type": ["null", "string"],
                "default": null
            }, {
                "name": "priorityLevel",
                "type": ["null", "int"],
                "default": null
            }]
        }],
        "default": null
    }, {
        "name": "downlinkDataVolumeBytes",
        "type": ["null", "long"],
        "default": null
    }, {
        "name": "durationSeconds",
        "type": ["null", "int"],
        "default": null
    }, {
        "name": "eventTimestamp",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "imei",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "imsi",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "ipAddress",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "pcControlPlaneId",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "pcDataPlaneId",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "pduSessionId",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "qci5QI",
        "type": ["null", "int"],
        "default": null
    }, {
        "name": "ranIdentifier",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "ratType",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "servingPlmnId",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "timestampFirstUsage",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "timestampLastUsage",
        "type": ["null", "string"],
        "default": null
    }, {
        "name": "totalDataVolumeBytes",
        "type": ["null", "long"],
        "default": null
    }, {
        "name": "uplinkDataVolumeBytes",
        "type": ["null", "long"],
        "default": null
    }]
}

Next steps