Guía de Métricas y Monitoreo de Prometheus
Descripción general
OmniTAS exporta métricas operativas completas en formato Prometheus para monitoreo, alertas y observabilidad. Esta guía cubre todas las métricas disponibles, su uso, solución de problemas y mejores prácticas de monitoreo.
Punto final de métricas
Todas las métricas se exponen en: http://<tas-ip>:8080/metrics
Referencia completa de métricas
Métricas de Diámetro
diameter_response_duration_milliseconds
Tipo: Histograma
Etiquetas: application (ro, sh), command (ccr, cca, etc), result (success, error, timeout)
Buckets: 10, 50, 100, 250, 500, 1000, 2500, 5000, 10000 ms
Descripción: Duración de las solicitudes de Diámetro en milisegundos
Uso:
# Tiempo promedio de respuesta de Diámetro
rate(diameter_response_duration_milliseconds_sum[5m]) /
rate(diameter_response_duration_milliseconds_count[5m])
# Latencia P95 de Diámetro
histogram_quantile(0.95, rate(diameter_response_duration_milliseconds_bucket[5m]))
Alerta cuando:
- P95 > 1000ms - Respuestas de Diámetro lentas
diameter_requests_total
Tipo: Contador
Etiquetas: application (ro, sh), command (ccr, udr, etc)
Descripción: Número total de solicitudes de Diámetro enviadas
Uso:
# Tasa de solicitudes
rate(diameter_requests_total[5m])
diameter_responses_total
Tipo: Contador
Etiquetas: application (ro, sh), command (ccr, udr, etc), result_code (2001, 3002, 5xxx, etc)
Descripción: Número total de respuestas de Diámetro recibidas
Uso:
# Tasa de éxito
rate(diameter_responses_total{result_code="2001"}[5m]) /
rate(diameter_responses_total[5m]) * 100
diameter_peer_state
Tipo: Gauge
Etiquetas: peer_host, peer_realm, application (ro, sh)
Descripción: Estado de los pares de Diámetro (1=up, 0=down)
Intervalo de actualización: Cada 10 segundos
Uso:
# Verificar pares caídos
diameter_peer_state == 0
Alerta cuando:
- Cualquier par caído por > 1 minuto
Métricas de Generación de Dialplan
1. Métricas de Solicitudes HTTP
http_dialplan_request_duration_milliseconds
Tipo: Histograma
Etiquetas: call_type (mt, mo, emergency, unknown)
Descripción: Duración de la solicitud HTTP de extremo a extremo desde que se recibe la solicitud HTTP del dialplan hasta que se envía la respuesta. Esto incluye todo el procesamiento: análisis de parámetros, autorización, búsquedas de Diámetro (Sh/Ro), búsquedas de HLR (SS7 MAP) y generación de XML.
Uso:
# Tiempo promedio de solicitud HTTP de extremo a extremo
rate(http_dialplan_request_duration_milliseconds_sum[5m]) /
rate(http_dialplan_request_duration_milliseconds_count[5m])
# P95 por tipo de llamada
histogram_quantile(0.95,
rate(http_dialplan_request_duration_milliseconds_bucket[5m])
) by (call_type)
# Comparar rendimiento MT vs MO
histogram_quantile(0.95,
rate(http_dialplan_request_duration_milliseconds_bucket{call_type="mt"}[5m])
)
vs
histogram_quantile(0.95,
rate(http_dialplan_request_duration_milliseconds_bucket{call_type="mo"}[5m])
)
Alerta cuando:
- P95 > 2000ms - Tiempos de respuesta HTTP lentos
- P95 > 3000ms - Problema crítico de rendimiento
- P99 > 5000ms - Degradación severa del rendimiento
- Cualquier solicitud mostrando
call_type="unknown"- Fallo en la detección del tipo de llamada
Perspectivas:
- Esta es la métrica más importante para entender la latencia del usuario
- Valores típicos: P50: 100-500ms, P95: 500-2000ms, P99: 1000-3000ms
- Incluye todos los tiempos de los componentes (Sh + HLR + OCS + procesamiento)
- Si esto es lento, profundice en las métricas de los componentes (subscriber_data, hlr_data, ocs_authorization)
- Rango esperado: 100ms (llamadas locales rápidas) a 5000ms (lentas con reintentos/tiempos de espera)
Notas importantes:
- Reemplaza la métrica anterior
dialplan_generation_duration_millisecondsque solo medía la generación de XML - Refleja con precisión lo que experimenta FreeSWITCH/SBC
- Úselo para monitoreo SLA y planificación de capacidad
2. Métricas de Datos de Suscriptores
subscriber_data_duration_milliseconds
Tipo: Histograma
Etiquetas: result (success, error)
Descripción: Tiempo tomado para recuperar datos del suscriptor de la interfaz Sh (HSS)
Uso:
# Tiempo promedio de búsqueda de Sh
rate(subscriber_data_duration_milliseconds_sum[5m]) /
rate(subscriber_data_duration_milliseconds_count[5m])
# Tiempo de búsqueda de Sh en el percentil 95
histogram_quantile(0.95,
rate(subscriber_data_duration_milliseconds_bucket[5m])
)
Alerta cuando:
- P95 > 100ms - Respuestas lentas de HSS
- P95 > 500ms - Problema crítico de rendimiento de HSS
subscriber_data_lookups_total
Tipo: Contador
Etiquetas: result (success, error)
Descripción: Número total de búsquedas de datos de suscriptores
Uso:
# Tasa de búsqueda de Sh
rate(subscriber_data_lookups_total[5m])
# Tasa de error de Sh
rate(subscriber_data_lookups_total{result="error"}[5m])
# Porcentaje de tasa de éxito de Sh
(rate(subscriber_data_lookups_total{result="success"}[5m]) /
rate(subscriber_data_lookups_total[5m])) * 100
Alerta cuando:
- Tasa de error > 5% - Problemas de conectividad de HSS
- Tasa de error > 20% - Fallo crítico de HSS
2. Métricas de Datos de HLR
hlr_data_duration_milliseconds
Tipo: Histograma
Etiquetas: result (success, error)
Descripción: Tiempo tomado para recuperar datos de HLR a través de SS7 MAP
Uso:
# Tiempo promedio de búsqueda de HLR
rate(hlr_data_duration_milliseconds_sum[5m]) /
rate(hlr_data_duration_milliseconds_count[5m])
# Tiempo de búsqueda de HLR en el percentil 95
histogram_quantile(0.95,
rate(hlr_data_duration_milliseconds_bucket[5m])
)
Alerta cuando:
- P95 > 500ms - Respuestas lentas de SS7 MAP
- P95 > 2000ms - Problema crítico de SS7 MAP
hlr_lookups_total
Tipo: Contador
Etiquetas: result_type (msrn, forwarding, error, unknown)
Descripción: Total de búsquedas de HLR por tipo de resultado
Uso:
# Tasa de búsqueda de HLR por tipo
rate(hlr_lookups_total[5m])
# Tasa de descubrimiento de MSRN (suscriptores en roaming)
rate(hlr_lookups_total{result_type="msrn"}[5m])
# Tasa de descubrimiento de reenvío de llamadas
rate(hlr_lookups_total{result_type="forwarding"}[5m])
# Tasa de error de HLR
rate(hlr_lookups_total{result_type="error"}[5m])
Alerta cuando:
- Tasa de error > 10% - Problemas de SS7 MAP
- Caída repentina en la tasa de MSRN - Posible problema de roaming
Perspectivas:
- Alta tasa de MSRN indica muchos suscriptores en roaming
- Alta tasa de reenvío indica muchas llamadas reenviadas
- Comparar con el volumen de llamadas para el porcentaje de roaming
3. Métricas de Autorización OCS
ocs_authorization_duration_milliseconds
Tipo: Histograma
Etiquetas: result (success, error)
Descripción: Tiempo tomado para la autorización OCS
Uso:
# Tiempo promedio de autorización OCS
rate(ocs_authorization_duration_milliseconds_sum[5m]) /
rate(ocs_authorization_duration_milliseconds_count[5m])
# Tiempo de autorización OCS en el percentil 95
histogram_quantile(0.95,
rate(ocs_authorization_duration_milliseconds_bucket[5m])
)
Alerta cuando:
- P95 > 1000ms - Respuestas lentas de OCS
- P95 > 5000ms - Problema crítico de rendimiento de OCS
ocs_authorization_attempts_total
Tipo: Contador
Etiquetas: result (success, error), skipped (yes, no)
Descripción: Número total de intentos de autorización OCS
Uso:
# Tasa de autorización OCS
rate(ocs_authorization_attempts_total{skipped="no"}[5m])
# Tasa de error de OCS
rate(ocs_authorization_attempts_total{result="error",skipped="no"}[5m])
# Tasa de omisión de OCS (emergencia, buzón de voz, etc.)
rate(ocs_authorization_attempts_total{skipped="yes"}[5m])
# Porcentaje de tasa de éxito de OCS
(rate(ocs_authorization_attempts_total{result="success",skipped="no"}[5m]) /
rate(ocs_authorization_attempts_total{skipped="no"}[5m])) * 100
Alerta cuando:
- Tasa de error > 5% - Problemas de conectividad de OCS
- Tasa de éxito < 95% - OCS rechazando demasiadas llamadas
Perspectivas:
- Alta tasa de omisión indica muchas llamadas de emergencia/gratuitas
- Picos en la tasa de error indican interrupciones en OCS
- Comparar la tasa de éxito con las expectativas comerciales
4. Métricas de Procesamiento de Llamadas
call_param_errors_total
Tipo: Contador
Etiquetas: error_type (parse_failed, missing_required_params)
Descripción: Errores de análisis de parámetros de llamada
Uso:
# Tasa de errores de parámetros
rate(call_param_errors_total[5m])
# Errores por tipo
rate(call_param_errors_total[5m]) by (error_type)
Alerta cuando:
- Cualquier error > 0 - Indica solicitudes de parámetros de llamada mal formadas
- Errores > 1% del volumen de llamadas - Problema crítico
authorization_decisions_total
Tipo: Contador
Etiquetas: disposition (mt, mo, emergency, unauthorized), result (success, error)
Descripción: Decisiones de autorización por tipo de llamada
Uso:
# Tasa de autorización por disposición
rate(authorization_decisions_total[5m]) by (disposition)
# Tasa de llamadas MT
rate(authorization_decisions_total{disposition="mt"}[5m])
# Tasa de llamadas MO
rate(authorization_decisions_total{disposition="mo"}[5m])
# Tasa de llamadas de emergencia
rate(authorization_decisions_total{disposition="emergency"}[5m])
# Tasa de llamadas no autorizadas
rate(authorization_decisions_total{disposition="unauthorized"}[5m])
Alerta cuando:
- Tasa no autorizada > 1% - Posible ataque o mala configuración
- Aumento repentino en llamadas de emergencia - Posible evento de emergencia
- Cambio inesperado en la relación MT/MO - Posible problema
Perspectivas:
- La relación MT/MO indica patrones de tráfico
- La tasa de llamadas de emergencia indica el uso del servicio
- La tasa no autorizada indica la postura de seguridad
freeswitch_variable_set_duration_milliseconds
Tipo: Histograma
Etiquetas: batch_size (1, 5, 10, 25, 50, 100)
Descripción: Tiempo para establecer variables de Dialplan
Uso:
# Tiempo promedio de establecimiento de variable
rate(freeswitch_variable_set_duration_milliseconds_sum[5m]) /
rate(freeswitch_variable_set_duration_milliseconds_count[5m])
# Tiempo de establecimiento de variable por tamaño de lote
histogram_quantile(0.95,
rate(freeswitch_variable_set_duration_milliseconds_bucket[5m])
) by (batch_size)
Alerta cuando:
- P95 > 100ms - Rendimiento lento en el establecimiento de variables
- Tendencia creciente - Posible problema de rendimiento del sistema
5. Métricas de Procesamiento de Módulos
dialplan_module_duration_milliseconds
Tipo: Histograma
Etiquetas: module (MT, MO, Emergency, CallParams, etc.), call_type
Descripción: Tiempo de procesamiento para cada módulo de dialplan
Uso:
# Tiempo de procesamiento por módulo
histogram_quantile(0.95,
rate(dialplan_module_duration_milliseconds_bucket[5m])
) by (module)
# Tiempo de procesamiento del módulo MT
histogram_quantile(0.95,
rate(dialplan_module_duration_milliseconds_bucket{module="MT"}[5m])
)
Alerta cuando:
- Cualquier módulo P95 > 500ms - Problema de rendimiento
- Tendencia creciente en cualquier módulo - Fuga o problema potencial
Perspectivas:
- Identificar qué módulo es el más lento
- Optimizar primero los módulos más lentos
- Comparar los tiempos de los módulos entre tipos de llamada
6. Métricas de Volumen de Llamadas
call_attempts_total
Tipo: Contador
Etiquetas: call_type (mt, mo, emergency, unauthorized), result (success, rejected)
Descripción: Total de intentos de llamada
Uso:
# Tasa de intentos de llamada
rate(call_attempts_total[5m])
# Tasa de éxito por tipo de llamada
(rate(call_attempts_total{result="success"}[5m]) /
rate(call_attempts_total[5m])) * 100 by (call_type)
# Tasa de llamadas rechazadas
rate(call_attempts_total{result="rejected"}[5m])
Alerta cuando:
- Tasa de rechazados > 5% - Posible problema
- Caída repentina en el volumen de llamadas - Interrupción del servicio
- Aumento repentino en el volumen de llamadas - Posible ataque
active_calls
Tipo: Gauge
Etiquetas: call_type (mt, mo, emergency)
Descripción: Llamadas actualmente activas
Uso:
# Llamadas activas actuales
active_calls
# Llamadas activas por tipo
active_calls by (call_type)
# Picos de llamadas activas (última hora)
max_over_time(active_calls[1h])
Alerta cuando:
- Llamadas activas > capacidad - Sobrecarga
- Llamadas activas = 0 durante un tiempo prolongado - Servicio caído
7. Métricas de Simulación
call_simulations_total
Tipo: Contador
Etiquetas: call_type (mt, mo, emergency, unauthorized), source (web, api)
Descripción: Simulaciones de llamadas realizadas
Uso:
# Tasa de simulación
rate(call_simulations_total[5m])
# Simulaciones por tipo
rate(call_simulations_total[5m]) by (call_type)
Perspectivas:
- Rastrear el uso de herramientas de diagnóstico
- Identificar usuarios frecuentes
- Correlacionar con actividad de solución de problemas
8. Métricas de SS7 MAP
ss7_map_http_duration_milliseconds
Tipo: Histograma
Etiquetas: operation (sri, prn), result (success, error, timeout)
Buckets: 10, 50, 100, 250, 500, 1000, 2500, 5000, 10000 ms
Descripción: Duración de las solicitudes HTTP de SS7 MAP en milisegundos
Uso:
# Tasa de error de SS7 MAP
rate(ss7_map_operations_total{result="error"}[5m]) /
rate(ss7_map_operations_total[5m]) * 100
Alerta cuando:
- P95 > 500ms - Respuestas lentas de SS7 MAP
- Tasa de error > 50% - Problema crítico de SS7 MAP
ss7_map_operations_total
Tipo: Contador
Etiquetas: operation (sri, prn), result (success, error)
Descripción: Número total de operaciones de SS7 MAP
9. Métricas de Carga en Línea
online_charging_events_total
Tipo: Contador
Etiquetas: event_type (authorize, answer, reauth, hangup), result (success, nocredit, error, timeout)
Descripción: Número total de eventos de carga en línea
Uso:
# Fallos de crédito de OCS
rate(online_charging_events_total{result="nocredit"}[5m])
Alerta cuando:
- Alta tasa de fallos de crédito
10. Métricas de Estado del Sistema
tracked_registrations
Tipo: Gauge
Descripción: Número de registros SIP actualmente activos (de la base de datos de registros de FreeSWITCH Sofia)
Intervalo de actualización: Cada 10 segundos
Notas:
- Se decrementa automáticamente cuando los registros expiran (FreeSWITCH gestiona la expiración)
tracked_call_sessions
Tipo: Gauge
Descripción: Número de sesiones de llamada actualmente rastreadas en ETS
Intervalo de actualización: Cada 10 segundos
11. Métricas de Solicitudes HTTP
http_requests_total
Tipo: Contador
Etiquetas: endpoint (dialplan, call_event, directory, voicemail, sms_ccr, metrics), status_code (200, 400, 500, etc)
Descripción: Número total de solicitudes HTTP por endpoint
Uso:
# Tasa de error HTTP
rate(http_requests_total{status_code=~"5.."}[5m]) /
rate(http_requests_total[5m]) * 100
Alerta cuando:
- Tasa de error HTTP 5xx > 10%
12. Métricas de Rechazo de Llamadas
call_rejections_total
Tipo: Contador
Etiquetas: call_type (mo, mt, emergency, unknown), reason (nocredit, unauthorized, parse_failed, missing_params, hlr_error, etc)
Descripción: Número total de rechazos de llamadas por razón
Uso:
# Tasa de rechazo de llamadas por razón
sum by (reason) (rate(call_rejections_total[5m]))
Alerta cuando:
- Tasa de rechazo > 1/sec - Se necesita investigación
13. Métricas de Conexión de Socket de Eventos
event_socket_connected
Tipo: Gauge
Etiquetas: connection_type (main, log_listener)
Descripción: Estado de conexión del Socket de Eventos (1=conectado, 0=desconectado)
Intervalo de actualización: Tiempo real en cambios de estado de conexión
Uso:
# Estado de conexión del Socket de Eventos
event_socket_connected
Alerta cuando:
- Conexión caída por > 30 segundos
event_socket_reconnections_total
Tipo: Contador
Etiquetas: connection_type (main, log_listener), result (attempting, success, failed)
Descripción: Número total de intentos de reconexión del Socket de Eventos
Integración del Panel de Grafana
Las métricas se pueden visualizar en Grafana utilizando la fuente de datos de Prometheus. Paneles recomendados:
Panel 1: Volumen de Llamadas
- Gauge de llamadas activas
- Tasa de intentos de llamadas por tipo (MO/MT/Emergency)
- Tasa de rechazo de llamadas
Panel 2: Rendimiento de Diámetro
- Mapa de calor del tiempo de respuesta
- Tasas de solicitud/respuesta
- Tabla de estado de pares
- Tasa de error por código de resultado
Panel 3: Salud de Carga en Línea
- Tasa de éxito de autorización de crédito
- Tasa de eventos "Sin crédito"
- Tasa de tiempo de espera de OCS
Panel 4: Rendimiento del Sistema
- Latencia de generación de dialplan (P50/P95/P99)
- Tiempos de respuesta de SS7 MAP
- Disponibilidad general del sistema
Diseño Recomendado del Panel de Grafana
Fila 1: Volumen de Llamadas
- Tasa de intentos de llamadas (por tipo)
- Gauge de llamadas activas
- Porcentaje de tasa de éxito
Fila 2: Rendimiento
- Tiempo de solicitud HTTP P95 del dialplan (por tipo de llamada) - MÉTRICA PRINCIPAL
- Tiempo de búsqueda de Sh P95
- Tiempo de búsqueda de HLR P95
- Tiempo de autorización OCS P95
- Tiempo de procesamiento del módulo de dialplan P95 (por módulo)
Fila 3: Tasas de Éxito
- Tasa de éxito de búsqueda de Sh
- Tasa de éxito de búsqueda de HLR
- Tasa de éxito de autorización OCS
- Tasa de éxito de intentos de llamadas
Fila 4: Rendimiento del Módulo
- Tiempo de procesamiento P95 por módulo
- Conteos de llamadas por módulo
Fila 5: Errores
- Errores de parámetros
- Intentos no autorizados
- Errores de Sh
- Errores de HLR
- Errores de OCS
Alertas Críticas
Prioridad 1 (Página inmediatamente):
# Dialplan completamente caído
rate(call_attempts_total[5m]) == 0
# HSS completamente caído
rate(subscriber_data_lookups_total{result="error"}[5m]) /
rate(subscriber_data_lookups_total[5m]) > 0.9
# OCS completamente caído
rate(ocs_authorization_attempts_total{result="error"}[5m]) /
rate(ocs_authorization_attempts_total[5m]) > 0.9
Prioridad 2 (Alerta):
# Generación de dialplan lenta
histogram_quantile(0.95,
rate(dialplan_generation_duration_milliseconds_bucket[5m])
) > 1000
# Alta tasa de error de HSS
rate(subscriber_data_lookups_total{result="error"}[5m]) /
rate(subscriber_data_lookups_total[5m]) > 0.2
# Alta tasa de error de OCS
rate(ocs_authorization_attempts_total{result="error"}[5m]) /
rate(ocs_authorization_attempts_total[5m]) > 0.1
Prioridad 3 (Advertencia):
# Latencia elevada de HSS
histogram_quantile(0.95,
rate(subscriber_data_duration_milliseconds_bucket[5m])
) > 100
# Latencia elevada de OCS
histogram_quantile(0.95,
rate(ocs_authorization_duration_milliseconds_bucket[5m])
) > 1000
# Tasa de error moderada
rate(call_attempts_total{result="rejected"}[5m]) /
rate(call_attempts_total[5m]) > 0.05
Ejemplos de Alertas
Par de Diámetro Caído
alert: DiameterPeerDown
expr: diameter_peer_state == 0
for: 1m
annotations:
summary: "El par de Diámetro {{ $labels.peer_host }} está caído"
Alta Latencia de Diámetro
alert: HighDiameterLatency
expr: histogram_quantile(0.95, rate(diameter_response_duration_milliseconds_bucket[5m])) > 1000
for: 5m
annotations:
summary: "Latencia P95 de Diámetro por encima de 1s"
Fallos de Crédito de OCS
alert: HighOCSCreditFailures
expr: rate(online_charging_events_total{result="nocredit"}[5m]) > 0.1
for: 2m
annotations:
summary: "Alta tasa de fallos de crédito de OCS"
Errores de Gateway de SS7 MAP
alert: SS7MapErrors
expr: rate(ss7_map_operations_total{result="error"}[5m]) / rate(ss7_map_operations_total[5m]) > 0.5
for: 3m
annotations:
summary: "Tasa de error de SS7 MAP por encima del 50%"
Socket de Eventos Desconectado
alert: EventSocketDown
expr: event_socket_connected == 0
for: 30s
annotations:
summary: "Socket de Eventos {{ $labels.connection_type }} desconectado"
Alta Tasa de Rechazo de Llamadas
alert: HighCallRejectionRate
expr: rate(call_rejections_total[5m]) > 1
for: 2m
annotations:
summary: "Alta tasa de rechazo de llamadas: {{ $value }} rechazos/seg"
Alta Tasa de Error HTTP
alert: HighHTTPErrorRate
expr: rate(http_requests_total{status_code=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.1
for: 3m
annotations:
summary: "Tasa de error HTTP 5xx por encima del 10%"
Solución de Problemas con Métricas
Problema: Tipo de llamada mostrando como "desconocido"
Síntomas:
- Todas las métricas muestran
call_type="unknown"en lugar demt,mooemergency - No se puede diferenciar el rendimiento entre tipos de llamada
Causa raíz: La extracción del tipo de llamada está fallando o no se está pasando correctamente a través de la tubería de procesamiento.
Investigación:
- Verifique los registros para mensajes de "solicitud HTTP de dialplan" - deberían mostrar el tipo de llamada correcto
- Revise los registros del sistema para errores de procesamiento del tipo de llamada
Resolución: Contacte al soporte si la detección del tipo de llamada sigue fallando.
Problema: Las llamadas son lentas
Investigación:
- Verifique P95 de
http_dialplan_request_duration_milliseconds- COMIENCE AQUÍ - Si es alto, verifique los tiempos de los componentes:
- Verifique
subscriber_data_duration_millisecondspara retrasos de Sh - Verifique
hlr_data_duration_millisecondspara retrasos de HLR - Verifique
ocs_authorization_duration_millisecondspara retrasos de OCS - Verifique
dialplan_module_duration_millisecondspara retrasos específicos de módulos
- Verifique
- Verifique si
call_type="unknown"- indica falla en la detección del tipo de llamada - Compare los tiempos de procesamiento de MT vs MO vs Emergency
- Correlacione con los registros del sistema para mensajes de error detallados
Resolución: Optimice el componente más lento
Problema: Las llamadas están fallando
Investigación:
- Verifique la tasa de
call_attempts_total{result="rejected"} - Verifique
subscriber_data_lookups_total{result="error"}para problemas de Sh - Verifique
hlr_lookups_total{result_type="error"}para problemas de HLR - Verifique
ocs_authorization_attempts_total{result="error"}para problemas de OCS - Verifique
authorization_decisions_total{disposition="unauthorized"}para problemas de autorización
Resolución: Arregle el componente que está fallando
Problema: Carga alta
Investigación:
- Verifique el valor actual de
active_calls - Verifique la tasa de
call_attempts_total - Verifique si la tasa coincide con el tráfico esperado
- Compare la relación MT vs MO
- Verifique patrones inusuales (picos, crecimiento constante)
Resolución: Escale o investigue el tráfico inusual
Problema: Problemas de roaming
Investigación:
- Verifique la tasa de
hlr_lookups_total{result_type="msrn"} - Verifique
hlr_data_duration_millisecondspara retrasos - Use la herramienta de búsqueda de HLR para suscriptores específicos
- Verifique si MSRN se está recuperando correctamente
Resolución: Arregle la conectividad o configuración de HLR
Líneas base de rendimiento
Valores típicos (sistema bien ajustado)
- Solicitud HTTP de dialplan (de extremo a extremo): P50: 100-500ms, P95: 500-2000ms, P99: 1000-3000ms
- Tiempo de búsqueda de Sh: P50: 15ms, P95: 50ms, P99: 100ms
- Tiempo de búsqueda de HLR: P50: 100ms, P95: 300ms, P99: 800ms
- Tiempo de autorización OCS: P50: 150ms, P95: 500ms, P99: 1500ms
- Procesamiento del módulo de dialplan: P50: 1-5ms, P95: 10-25ms, P99: 50ms
- Tasa de éxito de Sh: > 99%
- Tasa de éxito de HLR: > 95% (menor es normal debido a suscriptores fuera de línea)
- Tasa de éxito de OCS: > 98%
- Tasa de éxito de llamadas: > 99%
Nota: El tiempo de solicitud HTTP del dialplan es la suma de todos los tiempos de los componentes más la sobrecarga. Debería ser aproximadamente igual a: búsqueda de Sh + búsqueda de HLR + autorización de OCS + procesamiento del módulo de dialplan + sobrecarga de red/análisis. El tiempo mínimo esperado es de ~100ms (cuando solo se necesita la búsqueda de Sh), el tiempo máximo típico es de ~2000ms (con todas las búsquedas y reintentos).
Planificación de capacidad
Monitoree estas tendencias:
- Crecimiento en la tasa de
call_attempts_total - Crecimiento en el pico de
active_calls - Latencias P95 estables o en mejora
- Tasas de éxito estables o en mejora
Planifique el escalado cuando:
- Las llamadas activas se acerquen al 80% de la capacidad
- Las latencias P95 crezcan a pesar de una carga estable
- Las tasas de éxito disminuyan a pesar de sistemas externos estables
Integración con registros
Correlacione métricas con registros:
- Alta tasa de error en métricas → Busque registros para mensajes de ERROR
- Tiempos de respuesta lentos → Busque registros para mensajes de ADVERTENCIA sobre tiempos de espera
- Problemas de llamadas específicas → Busque registros por ID de llamada o número de teléfono
- Use la herramienta de simulación para reproducir y depurar
Mejores prácticas
- Configure paneles antes de que ocurran problemas
- Defina umbrales de alerta basados en su línea base
- Pruebe alertas utilizando el Simulador de Llamadas
- Revise métricas semanalmente para identificar tendencias
- Correlacione métricas con eventos comerciales (campañas, interrupciones, etc.)
- Utilice métricas para justificar inversiones en infraestructura
- Comparta paneles con el equipo de operaciones
- Documente sus procedimientos de respuesta a alertas
Configuración
La recopilación de métricas se habilita automáticamente cuando se inicia la aplicación. El punto final de métricas se expone en el mismo puerto que la API (predeterminado: 8080).
Para configurar Prometheus para raspar métricas, agregue este trabajo a su prometheus.yml:
scrape_configs:
- job_name: 'omnitas'
static_configs:
- targets: ['<tas-ip>:8080']
metrics_path: '/metrics'
scrape_interval: 10s
Cardinalidad de métricas
Las métricas están diseñadas con cardinalidad controlada para evitar abrumar a Prometheus:
- Etiquetas de pares: Limitadas solo a pares configurados
- Tipos de llamada: Conjunto fijo (mo, mt, emergency, unauthorized)
- Códigos de resultado: Limitados a los códigos de resultado de Diámetro/OCS realmente recibidos
- Operaciones: Conjunto fijo por interfaz (sri/prn para MAP, ccr/cca para Diámetro)
Total estimado de series temporales: ~200-500 dependiendo del número de pares configurados y códigos de resultado activos.
Retención de métricas
Períodos de retención recomendados:
- Métricas en bruto: 30 días (alta resolución)
- Agregados de 5 minutos: 90 días
- Agregados de 1 hora: 1 año
- Agregados diarios: 5 años
Esto soporta:
- Solución de problemas en tiempo real (métricas en bruto)
- Análisis semanal/mensual (agregados de 5 min/1 hora)
- Planificación de capacidad (agregados diarios)
- Comparación histórica (agregados anuales)