Observability¶
Ella IMS supports four observability pillars: Metrics, Traces, Logs and Profiles.
Metrics¶
Ella IMS exposes Prometheus metrics at GET /api/v1/metrics.
| Metric | Type | Description |
|---|---|---|
ellaims_build_info |
Gauge | Always 1. The version and revision of the running build are in its labels. |
ellaims_registered_subscribers |
Gauge | Subscribers registered now. |
ellaims_registration_attempts_total |
Counter | Registrations and re-registrations, by result: accept, auth_failure, reject. |
ellaims_active_calls |
Gauge | Calls in progress. |
ellaims_calls_total |
Counter | Calls that ended, by outcome: answered, cancelled, busy, rejected, no_answer, unavailable, failed. |
ellaims_sip_responses_total |
Counter | Final responses the P-CSCF sent to phones, by method and status class. |
ellaims_sip_request_duration_seconds |
Histogram | Time from a request of a phone to the final response the P-CSCF sent, by method and status class, the answer of the far end included when the request is forwarded. INVITE is left out: its final response waits for the callee. |
ellaims_diameter_peer_up |
Gauge | 1 if the connection to a Diameter peer is open, by peer and application. |
ellaims_peer_requests_total |
Counter | Requests to the HSS, the policy function, the SMSCs and the MMEs and SMSFs, by interface (cx, rx, n5, sh, s6c, sgd) and result (success, failure, error, timeout). |
ellaims_peer_request_duration_seconds |
Histogram | Duration of requests to the HSS, the policy function, the SMSCs and the MMEs and SMSFs, by interface. |
ellaims_ipsmgw_short_messages_total |
Counter | Short messages the IP-SM-GW carried, by direction (mo, mt), domain (smsc for mo; ims, mme, sgsn, smsf_3gpp, smsf_non_3gpp, none for mt, the last tried) and result (success, failure). |
ellaims_api_request_duration_seconds |
Histogram | Duration of API requests, by method, route (/api/v1/users/{email}) and status code. Requests to /api/v1/pprof/ and to no route are left out. |
ellaims_database_query_duration_seconds |
Histogram | Duration of database calls, by connection pool: write, read. |
ellaims_database_query_errors_total |
Counter | Failed database calls, by connection pool. |
ellaims_database_storage_bytes |
Gauge | Size of the database on disk, by file: main, wal. |
go_* |
Gauge, Counter, Summary | Go runtime: goroutines, heap, garbage-collection pauses. |
process_* |
Gauge, Counter | Process: memory, CPU, open file descriptors, start time. |
Traces¶
Ella IMS exports OpenTelemetry traces when telemetry.enabled is set in the configuration file.
| Property | Value |
|---|---|
| Export | OTLP over gRPC, without TLS |
| Service | ella-ims |
| Sampling | Parent-based, always on for a trace the IMS starts |
| Propagation | W3C Trace Context |
| Error status | HTTP and SIP: a server span from a 5xx response, a client span from a 4xx, except a SIP 401 or 407 challenge. Diameter: a client span from a Result-Code from 3000. |
| SIP trust domain | Trace context is read and sent on SIP only within the trust domain: the IMS's own addresses, and for the I-CSCF, the S-CSCF and the MCPTT AS, sip.trusted_networks. It never reaches a phone. |
Spans¶
| Span | Kind | Description |
|---|---|---|
{method} {route} |
Server | A request to the API, except /api/v1/livez, /api/v1/readyz, /api/v1/metrics and /api/v1/pprof/. Links to the caller's traceparent. |
{method} {url.template} |
Client | A request to the PCF on N5. |
POST /n5/v1/sessions/{id}/{notify,terminate} |
Server | A notification from the PCF on N5. |
Cx/{command}, Sh/{command}, Rx/{command}, S6c/{command}, SGd/{command} |
Server, Client | A Diameter request. |
{method}, such as INVITE |
Server, Client | A SIP transaction, until its final response. A request from a phone starts a trace, linked to the INVITE of its call or the REGISTER it renews. |
registration expiry, media loss, … |
Internal | Work that starts later than its cause, as on a timer or after a settings change: a new trace, linked to its cause. |
Attributes¶
| Attribute | Values |
|---|---|
ella.ims.role |
pcscf, icscf, scscf, mcptt, ipsmgw, or ims for work of the IMS as a whole |
sip.call_id |
The Call-ID of a SIP span |
ella.ims.icid |
The ICID of P-Charging-Vector of a SIP span, which joins it to its call record |
Logs¶
| Field | Description |
|---|---|
trace_id |
Trace ID of the span the event happened in. Absent outside a span. |
span_id |
Span ID of the span the event happened in. Absent outside a span. |
Profiles¶
Ella IMS exposes the net/http/pprof API at /api/v1/pprof/.