モニターOpenTelemetry Collectorインストールして構成することで、Linux ホスト上で実行されるRabbitMQ 。 この包括的なガイドでは、Debian、Ubuntu、RHEL、および CentOS システムのインストール、設定、検証について説明します。
インストレーション手順
セルフホスト型 RabbitMQ インスタンスの監視を設定するには、次の手順に従います。
あなたが始める前に
環境が次の要件を満たしていることを確認してください。
RabbitMQ管理プラグインを有効にする
管理プラグインは、OpenTelemetry Collector がスクレイピングする API を公開します。
$sudo rabbitmq-plugins enable rabbitmq_management動作していることを確認します:
$curl -I -u admin:password http://localhost:15672/api/overview応答にHTTP/1.1 200 OKが表示されます。
OpenTelemetry Collectorをインストールする
すべての Linux ディストリビューションの場合:
OpenTelemetry Collectorリリースから、ホスト OS 用のOpenTelemetry Collector Contrib バイナリをダウンロードしてインストールします。
コレクターを構成する
/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]設定で次の値を更新します。
endpoint: RabbitMQ 管理 API URL (デフォルト:http://localhost:15672)usernamepassword: RabbitMQ の認証情報rabbitmq.deployment.name: このRabbitMQの一意の名前collection_interval: メトリクスをスクレイピングする頻度(デフォルト: 30秒)
環境変数の設定
環境変数の systemd オーバーライド ファイルを作成します。
$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.dNew 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"$EOFYOUR_LICENSE_KEY 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"$EOFYOUR_LICENSE_KEY New Relicライセンスキーに置き換えます。
systemd をリロードし、コレクターを再起動します。
$sudo systemctl daemon-reload$sudo systemctl restart otelcol-contribNew Relicでデータを検証する
サービスステータスを確認します。
$sudo systemctl status otelcol-contrib出力にはactive (running)が表示されます。
最近のログを表示:
$sudo journalctl -u otelcol-contrib -n 50 --no-pagerメトリクス収集が成功したことを示すメッセージを探します。
INFO RabbitmqReceiver Successfully scraped rabbitmq metricsNew Relicでメトリクスを検証する:
データが表示されるまで 2 ~ 3 分待ってから、書き込みビルダーで次のコマンドを実行します。
SELECT count(*)FROM MetricWHERE metricName LIKE 'rabbitmq.%' AND instrumentation.provider = 'opentelemetry' AND rabbitmq.deployment.name = 'my-rabbitmq-server'FACET metricNameSINCE 10 minutes ago次のようなメトリクス名が表示されるはずです。
rabbitmq.queue.count- キューの数rabbitmq.queue.message.count- キュー全体のメッセージの合計rabbitmq.connection.count- アクティブな接続rabbitmq.consumer.count- アクティブな消費者
ヒント
5 分経ってもデータが表示されない場合は、以下のトラブルシューティングのセクションを確認してください。
(オプション) RabbitMQをNew Relicに転送する
Metrix に加えて、 RabbitMQログ アプリケーションをNew Relicに転送して、包括的な観察を行うことができます。 これは、メトリクスとログ全体で問題を相互に関連付けるのに役立ちます。
重要
ログ転送には追加の設定権限とシステム権限が必要です。 続行する前に必要なアクセス権があることを確認してください。
ファイルログ レシーバーを追加するには、 /etc/otelcol-contrib/config.yamlを更新します。
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]コレクターにログの読み取り権限を付与します。1 つの方法を選択してください:
rabbitmq グループに追加:
$sudo usermod -a -G rabbitmq otelcol-contribまたは、ファイルの権限を設定します。
$sudo chmod 644 /var/log/rabbitmq/*.logコレクターを再起動します。
$sudo systemctl restart otelcol-contribNew Relic でログが収集されていることを確認します。
SELECT count(*)FROM LogWHERE service.name = 'rabbitmq' AND rabbitmq.deployment.name = 'my-rabbitmq-server'SINCE 10 minutes agoデータを検索する
数分後、 RabbitMQメトリクスがNew Relicに表示されるはずです。 New Relic UIのさまざまなビューでRabbitMQメトリクスを探索する詳細な手順については、 「データの検索と書き込み」を参照してください。
NRQL を使用してデータをクエリすることもできます。
FROM Metric SELECT * WHERE rabbitmq.deployment.name = 'my-rabbitmq-server'トラブルシューティング
次のステップ
RabbitMQ監視の設定が完了したので、監視機能を強化できます。
データを探索する:
- データを検索して書き込みます- New Relic UIに移動してNRQL書き込みを書き込みます
- RabbitMQ メトリクスの探索- アラート推奨事項を含む完全なメトリクス リファレンス
監視の強化:
- アラートの作成- キューの深さとメッセージのバックログに関するアラートを設定します
- ダッシュボードの構築- RabbitMQ メトリクスを視覚化するカスタムダッシュボードを作成します