Referencia de Métricas de Prometheus
Métricas a nivel de aplicación para monitoreo y alerta de RAN Monitor
Tabla de Contenidos
- Descripción General
- Endpoint de Métricas
- Arquitectura
- Métricas de Cola de InfluxDB
- Métricas de Rendimiento de Escritura de InfluxDB
- Métricas de Escritura por Agente
- Métricas de Filtro de Contadores PM
- Métricas de Procesamiento de Webhook
- Métricas de Estado de Dispositivos Nokia
- Métricas de Estado de BTS
- Métricas de Spool de PM
- Métricas del Sistema
- Ejemplos de Consultas de Prometheus
- Ejemplos de Alertas
Descripción General
RAN Monitor expone métricas de Prometheus para monitorear la salud y el rendimiento del pipeline de recolección de datos. Estas métricas proporcionan visibilidad sobre:
- Ingesta de datos - Profundidad de cola, latencia de escritura y rendimiento hacia InfluxDB
- Conectividad de dispositivos - Estado de registro y sesión para estaciones base Nokia AirScale
- Procesamiento de webhook - Rendimiento del manejo de webhook SOAP entrante
- Uso de recursos - Memoria de la VM de Erlang y conteos de procesos
Métricas vs. Datos de Rendimiento de RAN
Métricas de Prometheus (documentadas aquí) monitorean la aplicación RAN Monitor en sí - profundidades de cola, latencias de escritura, estado de conectividad de dispositivos.
Datos de series temporales de InfluxDB contienen las métricas de rendimiento de RAN reales de las estaciones base Nokia AirScale (contadores PM, alarmas, configuración). Consulte Integración de Grafana para consultar datos de InfluxDB.
Endpoint de Métricas
URL: GET http://<host>:4000/metrics
Formato: Formato de exposición de texto de Prometheus
Autenticación: Ninguna (solo red interna)
Configuración de Scrape
# prometheus.yml
scrape_configs:
- job_name: 'ran_monitor'
static_configs:
- targets: ['ran-monitor.internal:4000']
scrape_interval: 15s
scrape_timeout: 10s
Arquitectura
Mecanismos de Actualización
| Tipo de Métrica | Activador de Actualización | Frecuencia |
|---|---|---|
| Medidores | Polling de MetricsUpdater | Cada 5 segundos |
| Contadores | Al ocurrir un evento | En tiempo real |
| Histogramas | Al ocurrir un evento | En tiempo real |
Métricas de Cola de InfluxDB
Estas métricas rastrean la cola de escritura por lotes que almacena puntos de datos antes de escribir en InfluxDB.
influxdb_queue_depth
Tipo: Medidor
Descripción: Número actual de puntos de datos esperando en la cola de escritura de InfluxDB.
Etiquetas: Ninguna
Uso: Monitorear el acumulamiento en la cola que indica cuellos de botella en la escritura de InfluxDB o problemas de conectividad.
Umbrales:
- Normal: < 5,000 puntos
- Advertencia: > 10,000 puntos
- Crítico: > 40,000 puntos (acercándose a la capacidad máxima)
influxdb_queue_max
Tipo: Medidor
Descripción: Tamaño máximo de la cola antes de que se descarten puntos. Fijo en 50,000 puntos.
Etiquetas: Ninguna
Uso: Valor de referencia para calcular el porcentaje de utilización de la cola.
influxdb_queue_overflow_drops_total
Tipo: Contador
Descripción: Número total de puntos de datos descartados porque la cola excedió la capacidad máxima.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
agent_name | Identificador de la estación base (por ejemplo, 2045_Booker, 2057_Guymon_TOY) |
Uso: Alertar sobre cualquier aumento - los descartes indican pérdida de datos y requieren investigación.
Métricas de Rendimiento de Escritura de InfluxDB
Estas métricas miden el rendimiento de las escrituras por lotes en InfluxDB.
influxdb_write_duration_milliseconds
Tipo: Histograma
Descripción: Duración de las operaciones de escritura por lotes en InfluxDB en milisegundos.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
status | Resultado de la escritura: success o error |
Cubos: 10, 25, 50, 100, 250, 500, 1000, 2500, 5000 ms
Uso: Monitorear la distribución de latencias de escritura. Latencias altas pueden indicar problemas de rendimiento en InfluxDB o problemas de red.
influxdb_points_written_total
Tipo: Contador
Descripción: Número total de puntos de datos escritos con éxito en InfluxDB.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
measurement | Tipo de dato: pm (métricas de rendimiento), config, o alarm |
Uso: Rastrear la tasa de ingestión de datos por categoría. Caídas repentinas indican problemas de recolección.
influxdb_bytes_written_total
Tipo: Contador
Descripción: Total de bytes escritos en InfluxDB a través de todas las escrituras.
Etiquetas: Ninguna
Uso: Monitorear el volumen de datos para la planificación de capacidad y estimación de costos.
influxdb_flush_count_total
Tipo: Contador
Descripción: Número total de operaciones de vaciado por lotes realizadas.
Etiquetas: Ninguna
Uso: Rastrear la frecuencia de escritura. Combinado con points_written, indica el tamaño promedio del lote.
Métricas de Escritura por Agente
Estas métricas proporcionan visibilidad por estación base en la recolección de datos.
influxdb_points_written_by_agent_total
Tipo: Contador
Descripción: Total de puntos de datos escritos en InfluxDB, desglosados por estación base y tipo de medición.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
agent_name | Identificador de la estación base (por ejemplo, 2045_Booker) |
measurement | Tipo de dato: pm, config, o alarm |
Uso: Identificar qué estaciones base están reportando datos activamente y detectar fallas silenciosas.
influxdb_bytes_written_by_agent_total
Tipo: Contador
Descripción: Total de bytes escritos en InfluxDB por estación base.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
agent_name | Identificador de la estación base |
Uso: Identificar estaciones base de alto volumen para la planificación de capacidad.
influxdb_write_duration_by_agent_milliseconds
Tipo: Histograma
Descripción: Duración de las escrituras en InfluxDB por estación base en milisegundos.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
agent_name | Identificador de la estación base |
status | Resultado de la escritura: success o error |
Cubos: 10, 25, 50, 100, 250, 500, 1000, 2500, 5000 ms
Uso: Identificar estaciones base con escrituras consistentemente lentas que pueden estar impactando el rendimiento general.
Métricas de Filtro de Contadores PM
Estas métricas rastrean el filtrado de contadores de Métricas de Rendimiento (PM) para reducir el volumen de almacenamiento.
pm_points_filtered_total
Tipo: Contador
Descripción: Total de puntos de datos PM descartados porque el contador no estaba en la lista blanca.
Etiquetas: Ninguna
Uso: Monitorear la efectividad del filtro. Valores muy altos pueden indicar que la lista blanca necesita expansión.
pm_points_kept_total
Tipo: Contador
Descripción: Total de puntos de datos PM retenidos después del filtrado por lista blanca.
Etiquetas: Ninguna
Uso: Rastrear el volumen real de datos PM que se están almacenando.
pm_filter_allowed_count
Tipo: Medidor
Descripción: Número de contadores PM actualmente en la lista blanca de recolección.
Etiquetas: Ninguna
Uso: Verificar la configuración del filtro. Cambios indican actualizaciones de la lista blanca a través de la interfaz de usuario.
Fuente: Cargado desde priv/pm_counters.csv, gestionado a través de la página de Recolección de Datos PM.
config_points_filtered_total
Tipo: Contador
Descripción: Total de puntos de datos de configuración descartados porque la clave no estaba en la lista blanca.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
agent_name | Identificador de la estación base |
Uso: Monitorear la actividad del filtro de configuración por dispositivo. Valores altos son normales: la mayoría de las claves de configuración son filtradas.
config_filter_allowed_count
Tipo: Medidor
Descripción: Número de claves de configuración actualmente en la lista blanca de recolección.
Etiquetas: Ninguna
Uso: Verificar la configuración del filtro de configuración.
Fuente: Cargado desde priv/config_keys.csv.
Métricas de Procesamiento de Webhook
Estas métricas rastrean el procesamiento de webhooks SOAP entrantes de estaciones base Nokia AirScale.
webhook_processing_duration_milliseconds
Tipo: Histograma
Descripción: Tiempo para procesar cargas útiles de webhook entrantes en milisegundos.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
airscale_name | Identificador de la estación base |
message_type | Tipo de carga útil: PM, Config, Alarm, o Feedback |
Cubos: 10, 50, 100, 250, 500, 1000, 2500, 5000, 10000 ms
Uso: Monitorear el rendimiento del procesamiento de webhook. El procesamiento lento puede indicar problemas de análisis o cuellos de botella aguas abajo.
webhook_processing_total
Tipo: Contador
Descripción: Total de cargas útiles de webhook procesadas.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
airscale_name | Identificador de la estación base |
message_type | Tipo de carga útil: PM, Config, Alarm, o Feedback |
status | Resultado del procesamiento: success o error |
Uso: Rastrear el volumen de webhook y las tasas de error por estación base.
Métricas de Estado de Dispositivos Nokia
Estas métricas rastrean la conectividad y el estado de registro de las estaciones base Nokia AirScale.
nokia_devices_registered
Tipo: Medidor
Descripción: Número de dispositivos Nokia actualmente registrados en RAN Monitor.
Etiquetas: Ninguna
Uso: Verificar el conteo esperado de dispositivos. Caídas indican problemas de registro.
nokia_devices_session_active
Tipo: Medidor
Descripción: Número de dispositivos Nokia con sesiones de gestión activas.
Etiquetas: Ninguna
Uso: Debe coincidir con nokia_devices_registered en operación normal. Discrepancias indican problemas de sesión.
nokia_device_state
Tipo: Medidor
Descripción: Indicador del estado de conectividad por dispositivo.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
device_name | Identificador de la estación base (por ejemplo, 2045_Booker) |
Valores:
| Valor | Estado |
|---|---|
| 1 | Conectado (registrado Y sesión activa) |
| 0 | Desconectado |
Uso: Alertar sobre cualquier dispositivo que caiga a 0. Utilizar filtrado de etiquetas para monitorear dispositivos específicos.
Métricas de Estado de BTS
Estas métricas proporcionan una vista de estado computada que tiene en cuenta el flujo de datos, no solo la conectividad. Se actualiza cada 5 segundos por el MetricsUpdater.
bts_status_total
Tipo: Medidor
Descripción: Número total de sitios BTS configurados.
Etiquetas: Ninguna
bts_status_connected
Tipo: Medidor
Descripción: Sitios BTS con sesión activa y tanto datos de configuración como de PM fluyendo.
Etiquetas: Ninguna
Uso: Este es el conteo "saludable". Debe ser igual al total menos cualquier sitio en estados transicionales.
bts_status_waiting_for_pm
Tipo: Medidor
Descripción: Sitios BTS con sesión activa y datos de configuración recibidos, pero aún sin datos de PM.
Etiquetas: Ninguna
Uso: Los sitios en este estado están esperando el próximo ciclo de recolección de PM de 15 minutos. Si se quedan aquí por más de 30 minutos, investigar la recolección de PM en el eNodeB.
bts_status_pending
Tipo: Medidor
Descripción: Sitios BTS con sesión activa pero sin datos recibidos aún (ni de configuración ni de PM).
Etiquetas: Ninguna
bts_status_registering
Tipo: Medidor
Descripción: Sitios BTS que están registrados pero la sesión aún no está activa.
Etiquetas: Ninguna
bts_status_disconnected
Tipo: Medidor
Descripción: Sitios BTS que no están registrados.
Etiquetas: Ninguna
Uso: Alertar si esto crece inesperadamente.
Métricas de Spool de PM
Estas métricas rastrean el spool de datos PM basado en disco que almacena cargas útiles de PM en bruto en disco para procesamiento secuencial. Esto elimina los descartes por desbordamiento de cola y mantiene el uso de memoria plano.
pm_spool_pending_files
Tipo: Medidor
Descripción: Número de archivos de datos PM esperando ser procesados en el directorio de spool.
Etiquetas: Ninguna
Uso: Monitorear el acumulamiento de trabajo. En operación normal, esto se mantiene cerca de cero. Un conteo creciente indica que el trabajador de spool no puede mantenerse al día con los datos PM entrantes.
Umbrales:
- Normal: < 10 archivos
- Advertencia: > 50 archivos
- Crítico: > 200 archivos
pm_spool_files_processed_total
Tipo: Contador
Descripción: Total de archivos de spool de PM procesados por el trabajador en segundo plano.
Etiquetas: Ninguna
Uso: Rastrear el rendimiento de procesamiento. La tasa debe coincidir con la tasa de archivos entrantes.
pm_spool_points_written_total
Tipo: Contador
Descripción: Total de puntos de datos PM escritos en InfluxDB a través del trabajador de spool.
Etiquetas: Ninguna
Uso: Rastrear el volumen de datos PM que fluye a través de la ruta de spool.
Métricas del Sistema
Estas métricas rastrean el uso de recursos de la VM de Erlang.
vm_memory_bytes
Tipo: Medidor
Descripción: Uso de memoria de la VM de Erlang en bytes.
Etiquetas:
| Etiqueta | Descripción |
|---|---|
type | Categoría de memoria: total, processes, binary, ets |
Uso: Monitorear el crecimiento de la memoria que indica fugas o almacenamiento excesivo.
Umbrales (guía):
total: Alertar si > 80% de la RAM del sistemabinary: Alertar si crece continuamente (puede indicar acumulación de cola de mensajes)ets: Alertar si crece continuamente (puede indicar fuga de tabla)
vm_process_count
Tipo: Medidor
Descripción: Número de procesos Erlang en la VM.
Etiquetas: Ninguna
Uso: La línea base debe ser estable. Un crecimiento significativo puede indicar fugas de procesos o tormentas de conexiones.
Ejemplos de Consultas de Prometheus
Porcentaje de Utilización de Cola
influxdb_queue_depth / influxdb_queue_max * 100
Tasa de Error de Escritura (ventana de 5 minutos)
sum(rate(influxdb_write_duration_milliseconds_count{status="error"}[5m]))
/ sum(rate(influxdb_write_duration_milliseconds_count[5m])) * 100
Puntos Escritos Por Segundo
sum(rate(influxdb_points_written_total[5m]))
Latencia de Escritura Percentil 95
histogram_quantile(0.95, sum(rate(influxdb_write_duration_milliseconds_bucket[5m])) by (le))
Dispositivos Desconectados
count(nokia_device_state == 0)
Tasa de Error de Webhook por Dispositivo
sum by (airscale_name) (
rate(webhook_processing_total{status="error"}[5m])
) / sum by (airscale_name) (
rate(webhook_processing_total[5m])
) * 100
Tasa de Pérdida de Datos (Descartes de Cola)
sum(rate(influxdb_queue_overflow_drops_total[5m]))
Tendencia de Uso de Memoria
vm_memory_bytes{type="total"}
Sitios BTS No Completamente Conectados
bts_status_total - bts_status_connected
Acumulación de Spool de PM
pm_spool_pending_files
Tasa de Procesamiento de Spool de PM
rate(pm_spool_files_processed_total[5m])
Efectividad del Filtro de PM
pm_points_filtered_total / (pm_points_filtered_total + pm_points_kept_total) * 100
Ejemplos de Alertas
Crítico: Pérdida de Datos
alert: InfluxDBQueueDrops
expr: increase(influxdb_queue_overflow_drops_total[5m]) > 0
for: 0m
labels:
severity: critical
annotations:
summary: "Puntos de datos siendo descartados debido a desbordamiento de cola"
description: "{{ $value }} puntos descartados en los últimos 5 minutos para {{ $labels.agent_name }}"
Crítico: Dispositivo Desconectado
alert: NokiaDeviceDisconnected
expr: nokia_device_state == 0
for: 5m
labels:
severity: critical
annotations:
summary: "Dispositivo Nokia {{ $labels.device_name }} desconectado"
description: "El dispositivo ha estado desconectado por más de 5 minutos"
Advertencia: Acumulación en la Cola
alert: InfluxDBQueueHigh
expr: influxdb_queue_depth / influxdb_queue_max * 100 > 50
for: 5m
labels:
severity: warning
annotations:
summary: "Cola de escritura de InfluxDB por encima del 50%"
description: "Cola al {{ $value }}% de capacidad. Verifique la conectividad y el rendimiento de InfluxDB."
Advertencia: Alta Latencia de Escritura
alert: InfluxDBWriteLatencyHigh
expr: histogram_quantile(0.95, sum(rate(influxdb_write_duration_milliseconds_bucket[5m])) by (le)) > 1000
for: 5m
labels:
severity: warning
annotations:
summary: "La latencia de escritura de InfluxDB excede 1 segundo (p95)"
description: "La latencia de escritura del percentil 95 es {{ $value }}ms"
Advertencia: Errores en el Procesamiento de Webhook
alert: WebhookProcessingErrors
expr: sum(rate(webhook_processing_total{status="error"}[5m])) > 0.1
for: 5m
labels:
severity: warning
annotations:
summary: "Errores en el procesamiento de webhook detectados"
description: "{{ $value }} errores por segundo en los últimos 5 minutos"
Advertencia: Acumulación en el Spool de PM
alert: PmSpoolBacklog
expr: pm_spool_pending_files > 50
for: 5m
labels:
severity: warning
annotations:
summary: "Acumulación en el spool de PM creciente"
description: "{{ $value }} archivos pendientes de procesamiento. El trabajador de spool puede estar quedándose atrás."
Advertencia: Sitios Atascados Esperando PM
alert: BtsSitesWaitingForPm
expr: bts_status_waiting_for_pm > 0
for: 30m
labels:
severity: warning
annotations:
summary: "{{ $value }} sitio(s) esperando datos de PM por más de 30 minutos"
description: "Los sitios tienen sesiones activas y configuración pero no datos de PM. Verifique la recolección de PM en el eNodeB."
Información: Alto Uso de Memoria
alert: HighMemoryUsage
expr: vm_memory_bytes{type="total"} > 4e9
for: 10m
labels:
severity: info
annotations:
summary: "Uso de memoria de la VM de Erlang por encima de 4GB"
description: "Uso de memoria actual: {{ $value | humanize1024 }}B"
Documentación Relacionada
- Integración de Grafana - Dashboarding y alertas para datos de rendimiento de RAN
- Recolección de Datos PM - Gestión de qué contadores PM se recopilan
- Solución de Problemas - Problemas comunes y resolución
- Guía de Configuración en Tiempo de Ejecución - Configuración del sistema