Monitoree RabbitMQ que se ejecuta en hosts Linux instalando y configurando el OpenTelemetry Collector. Esta guía completa lo guía a través de la instalación, configuración y verificación para los sistemas Debian, Ubuntu, RHEL y CentOS.
Pasos de instalación
Siga estos pasos para configurar el monitoreo de su instancia autohospedada de RabbitMQ.
Antes de que empieces
Asegúrese de que su entorno cumpla con estos requisitos:
Habilite el plugin de administración de RabbitMQ
El plugin de gestión expone la API que el OpenTelemetry Collector recopila:
$sudo rabbitmq-plugins enable rabbitmq_managementVerifique que esté funcionando:
$curl -I -u admin:password http://localhost:15672/api/overviewDebería ver HTTP/1.1 200 OK en la respuesta.
Instalar el OpenTelemetry Collector
Para todas las distribuciones de Linux:
Descargue e instale el binario de OpenTelemetry Collector Contrib para el sistema operativo de su host desde las versiones de OpenTelemetry Collector.
Configurar el recolector
Crear o reemplazar /etc/otelcol-contrib/config.yaml:
receivers: rabbitmq: endpoint: http://localhost:15672 username: admin password: password collection_interval: 30s metrics: # Queue Metrics (essential for message flow and backlog) rabbitmq.consumer.count: enabled: true rabbitmq.message.delivered: enabled: true rabbitmq.message.published: enabled: true rabbitmq.message.acknowledged: enabled: true rabbitmq.message.dropped: enabled: true rabbitmq.message.current: enabled: true # Crucial for monitoring queue backlog, includes 'ready' and 'unacknowledged' states
# Node Health Metrics (critical for server resource monitoring) rabbitmq.node.disk_free: enabled: true rabbitmq.node.disk_free_limit: enabled: true rabbitmq.node.disk_free_alarm: enabled: true rabbitmq.node.mem_used: enabled: true rabbitmq.node.mem_limit: enabled: true rabbitmq.node.mem_alarm: enabled: true rabbitmq.node.mem_used_details.rate: enabled: true rabbitmq.node.fd_used: enabled: true rabbitmq.node.fd_total: enabled: true rabbitmq.node.sockets_used: enabled: true rabbitmq.node.sockets_total: enabled: true rabbitmq.node.proc_used: enabled: true rabbitmq.node.proc_total: enabled: true rabbitmq.node.uptime: enabled: true rabbitmq.node.run_queue: enabled: true rabbitmq.node.processors: enabled: true rabbitmq.node.context_switches_details.rate: enabled: true rabbitmq.node.gc_num_details.rate: enabled: true rabbitmq.node.gc_bytes_reclaimed_details.rate: enabled: true
# I/O Metrics (important for understanding disk and network activity) rabbitmq.node.io_read_count_details.rate: enabled: true rabbitmq.node.io_read_bytes_details.rate: enabled: true rabbitmq.node.io_read_avg_time_details.rate: enabled: true rabbitmq.node.io_write_count_details.rate: enabled: true rabbitmq.node.io_write_bytes_details.rate: enabled: true rabbitmq.node.io_write_avg_time_details.rate: enabled: true rabbitmq.node.io_sync_count_details.rate: enabled: true rabbitmq.node.io_sync_avg_time_details.rate: enabled: true rabbitmq.node.io_seek_count_details.rate: enabled: true rabbitmq.node.io_seek_avg_time_details.rate: enabled: true rabbitmq.node.io_reopen_count_details.rate: enabled: true
# Mnesia and Store Metrics (for internal database and message storage) rabbitmq.node.mnesia_ram_tx_count_details.rate: enabled: true rabbitmq.node.mnesia_disk_tx_count_details.rate: enabled: true rabbitmq.node.msg_store_read_count_details.rate: enabled: true rabbitmq.node.msg_store_write_count_details.rate: enabled: true rabbitmq.node.queue_index_write_count_details.rate: enabled: true rabbitmq.node.queue_index_read_count_details.rate: enabled: true
# Connection/Channel/Queue Lifecycle Metrics rabbitmq.node.connection_created_details.rate: enabled: true rabbitmq.node.connection_closed_details.rate: enabled: true rabbitmq.node.channel_created_details.rate: enabled: true rabbitmq.node.channel_closed_details.rate: enabled: true rabbitmq.node.queue_declared_details.rate: enabled: true rabbitmq.node.queue_created_details.rate: enabled: true rabbitmq.node.queue_deleted_details.rate: enabled: true
# processors: Process data before exporting.processors: resourcedetection: detectors: [system] system: resource_attributes: host.name: enabled: true host.id: enabled: true resource: attributes: - key: instrumentation.provider value: opentelemetry action: upsert - key: rabbitmq.deployment.name value: my-rabbitmq-server # Replace with your server name action: upsert batch: send_batch_size: 1024 timeout: 30s
exporters: otlphttp/newrelic: endpoint: ${env:NEWRELIC_OTLP_ENDPOINT} headers: api-key: ${env:NEWRELIC_LICENSE_KEY} compression: gzip
service: pipelines: metrics: receivers: [rabbitmq] processors: [resourcedetection, resource, batch] exporters: [otlphttp/newrelic]Actualice estos valores en la configuración:
endpoint: Su URL de la API de administración de RabbitMQ (predeterminado:http://localhost:15672)usernameypassword: Sus credenciales de RabbitMQrabbitmq.deployment.name: Un nombre único para esta instancia de RabbitMQcollection_interval: Con qué frecuencia recolectar métricas (predeterminado: 30 segundos)
Establecer variables de entorno
Cree un archivo de anulación de systemd para las variables de entorno:
$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.dSelecciona tu región de New Relic:
$cat <<EOF | sudo tee /etc/systemd/system/otelcol-contrib.service.d/environment.conf$[Service]$Environment="NEWRELIC_OTLP_ENDPOINT=https://otlp.nr-data.net:4318"$Environment="NEWRELIC_LICENSE_KEY=YOUR_LICENSE_KEY"$EOFReemplaza YOUR_LICENSE_KEY por tu clave de licencia de New Relic.
$cat <<EOF | sudo tee /etc/systemd/system/otelcol-contrib.service.d/environment.conf$[Service]$Environment="NEWRELIC_OTLP_ENDPOINT=https://otlp.eu01.nr-data.net:4318"$Environment="NEWRELIC_LICENSE_KEY=YOUR_LICENSE_KEY"$EOFReemplaza YOUR_LICENSE_KEY por tu clave de licencia de New Relic.
Recargue systemd y reinicie el recopilador:
$sudo systemctl daemon-reload$sudo systemctl restart otelcol-contribVerifique sus datos en New Relic
Verifique el estado del servicio:
$sudo systemctl status otelcol-contribDebería ver active (running) en la salida.
Ver registros recientes:
$sudo journalctl -u otelcol-contrib -n 50 --no-pagerBusque mensajes que indiquen una recopilación de métricas exitosa:
INFO RabbitmqReceiver Successfully scraped rabbitmq metricsVerificar las métricas en New Relic:
Espere de 2 a 3 minutos para que aparezcan los datos, luego ejecute esta consulta en el generador de consultas:
SELECT count(*)FROM MetricWHERE metricName LIKE 'rabbitmq.%' AND instrumentation.provider = 'opentelemetry' AND rabbitmq.deployment.name = 'my-rabbitmq-server'FACET metricNameSINCE 10 minutes agoDebería ver nombres de métricas como:
rabbitmq.queue.count- Número de colasrabbitmq.queue.message.count- Total de mensajes en las colasrabbitmq.connection.count- Conexiones activasrabbitmq.consumer.count- Consumidores activos
Sugerencia
Si no ve datos después de 5 minutos, consulte la sección de solución de problemas a continuación.
(Opcional) Reenviar logs de RabbitMQ a New Relic
Además de las métricas, puedes enviar los logs de la aplicación RabbitMQ a New Relic para una observabilidad integral. Esto ayuda a correlacionar problemas entre métricas y registros.
Importante
El reenvío de logs requiere configuración adicional y permisos del sistema. Asegúrese de tener el acceso necesario antes de continuar.
Actualice /etc/otelcol-contrib/config.yaml para agregar el receptor filelog:
receivers: rabbitmq: # ... existing rabbitmq config ...
# Add filelog receiver for RabbitMQ logs filelog/rabbitmq: include: - /var/log/rabbitmq/*.log - /var/log/rabbitmq/**/*.log include_file_path: true include_file_name: false operators: - type: regex_parser regex: '^(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) \[(?P<level>\w+)\] <(?P<pid>[^>]+)> (?P<message>.*)$' timestamp: parse_from: attributes.timestamp layout: '%Y-%m-%d %H:%M:%S.%L' severity: parse_from: attributes.severity
processors: # ... existing processors ...
transform/rabbitmq_logs: log_statements: - context: resource statements: - set(attributes["rabbitmq.display.name"], Concat(["server", attributes["rabbitmq.deployment.name"]], ":"))
service: pipelines: metrics: receivers: [rabbitmq] processors: [resourcedetection, resource, batch] exporters: [otlphttp/newrelic]
logs/rabbitmq: receivers: [filelog] processors: [batch, resource, transform/rabbitmq_logs] exporters: [otlphttp/newrelic]Otorgue al recopilador permiso para leer registros. Seleccione un método:
Agregar al grupo rabbitmq:
$sudo usermod -a -G rabbitmq otelcol-contribO configure los permisos de archivo:
$sudo chmod 644 /var/log/rabbitmq/*.logReinicie el colector:
$sudo systemctl restart otelcol-contribVerifique que los logs se estén recopilando en New Relic:
SELECT count(*)FROM LogWHERE service.name = 'rabbitmq' AND rabbitmq.deployment.name = 'my-rabbitmq-server'SINCE 10 minutes agoEncuentra tus datos
Después de unos minutos, sus métricas de RabbitMQ deberían aparecer en New Relic. Consulta Busca y consulta tus datos para obtener instrucciones detalladas sobre cómo explorar tus métricas de RabbitMQ en las diferentes vistas de la UI de New Relic.
También puede consultar sus datos con NRQL:
FROM Metric SELECT * WHERE rabbitmq.deployment.name = 'my-rabbitmq-server'Resolución de problemas
Próximos pasos
Ahora que tiene configurado el monitoreo de RabbitMQ, puede mejorar su observabilidad:
Explore sus datos:
- Busca y consulta tus datos - Navega por la interfaz de usuario de New Relic y escribe consultas NRQL
- Explorar métricas de RabbitMQ - Referencia completa de métricas con recomendaciones de alertas
Mejorar el monitoreo:
- Crear alertas - Configura alertas para la profundidad de las colas y la acumulación de mensajes
- Crear paneles - Cree paneles personalizados para visualizar sus métricas de RabbitMQ