• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Monitorer RabbitMQ auto-hébergé avec OpenTelemetry

Monitorez RabbitMQ s'exécutant sur des hôtes Linux en installant et en configurant le collecteur OpenTelemetry. Ce guide complet vous accompagne dans l'installation, la configuration et la vérification des systèmes Debian, Ubuntu, RHEL et CentOS.

Étapes d'installation

Suivez ces étapes pour configurer le monitoring de votre instance RabbitMQ auto-hébergée.

Avant de commencer

Assurez-vous que votre environnement respecte ces prérequis :

Activer le plugin de gestion RabbitMQ

Le plugin de gestion expose l'API que l'OpenTelemetry Collector scrape :

bash
$
sudo rabbitmq-plugins enable rabbitmq_management

Vérifier que cela fonctionne :

bash
$
curl -I -u admin:password http://localhost:15672/api/overview

Vous devriez voir HTTP/1.1 200 OK dans la réponse.

Configurer le collecteur

Créer ou remplacer /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]

Mettez à jour ces valeurs dans la configuration :

  • endpoint: Votre URL d'API de gestion RabbitMQ (par défaut : http://localhost:15672)
  • username et password: Vos identifiants RabbitMQ
  • rabbitmq.deployment.name: Un nom unique pour cette instance RabbitMQ
  • collection_interval: Fréquence de collecte des métriques (par défaut : 30 secondes)

Définir les variables d'environnement

Créer un fichier de surcharge systemd pour les variables d'environnement :

bash
$
sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.d

Choisissez votre région New Relic :

bash
$
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"
$
EOF

Remplacez YOUR_LICENSE_KEY par votre clé de licence New Relic.

bash
$
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"
$
EOF

Remplacez YOUR_LICENSE_KEY par votre clé de licence New Relic.

Rechargez systemd et redémarrez le collecteur :

bash
$
sudo systemctl daemon-reload
$
sudo systemctl restart otelcol-contrib

Vérifiez vos données dans New Relic

Vérifiez l'état du service :

bash
$
sudo systemctl status otelcol-contrib

Vous devriez voir active (running) dans la sortie.

Voir les logs récents :

bash
$
sudo journalctl -u otelcol-contrib -n 50 --no-pager

Recherchez des messages indiquant une collecte de métriques réussie :

INFO RabbitmqReceiver Successfully scraped rabbitmq metrics

Vérifier les métriques dans New Relic :

Attendez 2 à 3 minutes que les données apparaissent, puis exécutez cette requête dans le générateur de requêtes:

SELECT count(*)
FROM Metric
WHERE metricName LIKE 'rabbitmq.%'
AND instrumentation.provider = 'opentelemetry'
AND rabbitmq.deployment.name = 'my-rabbitmq-server'
FACET metricName
SINCE 10 minutes ago

Vous devriez voir des noms de métriques tels que :

  • rabbitmq.queue.count - Nombre de files d'attente
  • rabbitmq.queue.message.count - Total des messages dans les files d'attente
  • rabbitmq.connection.count - Connexions actives
  • rabbitmq.consumer.count - Consommateurs actifs

Conseil

Si vous ne voyez pas de données après 5 minutes, consultez la section de dépannage ci-dessous.

(Facultatif) Transférer les logs RabbitMQ vers New Relic

En plus des métriques, vous pouvez transférer les logs d'application RabbitMQ vers New Relic pour une observabilité complète. Cela permet de corréler les problèmes entre les métriques et les logs.

Important

Le transfert de logs nécessite une configuration supplémentaire et des permissions système. Assurez-vous de disposer des accès nécessaires avant de continuer.

Mettez à jour /etc/otelcol-contrib/config.yaml pour ajouter le récepteur 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]

Accordez au collecteur l'autorisation de lire les logs. Choisissez une méthode :

Ajouter au groupe rabbitmq :

bash
$
sudo usermod -a -G rabbitmq otelcol-contrib

Ou définissez les permissions de fichier :

bash
$
sudo chmod 644 /var/log/rabbitmq/*.log

Redémarrez le collecteur :

bash
$
sudo systemctl restart otelcol-contrib

Vérifiez que les logs sont collectés dans New Relic :

SELECT count(*)
FROM Log
WHERE service.name = 'rabbitmq'
AND rabbitmq.deployment.name = 'my-rabbitmq-server'
SINCE 10 minutes ago

Trouvez vos données

Après quelques minutes, vos métriques RabbitMQ devraient apparaître dans New Relic. Consultez Trouver et interroger vos données pour obtenir des instructions détaillées sur l'exploration de vos métriques RabbitMQ dans les différentes vues de l'interface utilisateur New Relic.

Vous pouvez également interroger vos données avec NRQL :

FROM Metric SELECT * WHERE rabbitmq.deployment.name = 'my-rabbitmq-server'

Dépannage

Prochaines étapes

Maintenant que vous avez configuré le monitoring de RabbitMQ, vous pouvez améliorer votre observabilité :

Explorez vos données :

Améliorer le monitoring :

  • Créer des alertes - Configurer des alertes pour les profondeurs de file d'attente et les arriérés de messages
  • Créer des dashboards - Créez des dashboards personnalisés pour visualiser vos métriques RabbitMQ
Droits d'auteur © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.