PDF

NetCrunch で Telegraf を介して MQTT Telemetry を使用する

このトピックでは、MQTT を介して公開されたシステムメトリックを収集し、Telegraf を使用して処理した後、JSON ベースのテレメトリデータとして NetCrunch Telemetry Node エンドポイントに転送する方法について説明します。

概要

MQTT は、IoT や分散システムで一般的に使用される軽量なパブリッシュ/サブスクライブ型メッセージングプロトコルです。Telegraf は MQTT トピックをサブスクライブし、受信した JSON メッセージを解析して、HTTP output plugin を介して NetCrunch Telemetry Node に転送できます。

NetCrunch による MQTT Telemetry のサポート

NetCrunch は Telemetry Nodes を介して MQTT ベースのテレメトリを受信します。Telemetry Nodes は JSON 形式のデータを受け入れ、受信したメトリックまたはステータス値を紐付けます。Telemetry Nodes ではネットワーク検出は必要なく、分散システムや分離されたシステムからデータを受信できます。

エンドポイント、その URL 形式、および認証方法については、 Monitoring with Telegraf で説明しています。以下では、Telemetry Node がすでに存在することを前提とします — テレメトリノード を参照してください。

データフロー

  1. メトリックの生成 - システムは、スクリプト、アプリケーション、または監視エージェントを使用してメトリックを生成します。
  2. MQTT での公開 - メトリックは JSON メッセージとして MQTT ブローカーのトピックに公開されます。
  3. Telegraf のサブスクリプション - Telegraf は指定された MQTT トピックをサブスクライブします。
  4. データの転送 - Telegraf は受信したメッセージを NetCrunch Telemetry Node エンドポイントに送信します。
  5. NetCrunch による処理 - 受信データはカウンターまたはアラートステータスとして保存されます。

Telegraf の設定

主要な設定ファイルは通常、次の場所にあります。

  • Linux: /etc/telegraf/telegraf.conf
  • Windows: C:\Program Files\Telegraf\telegraf.conf

基本設定

Telegraf が MQTT メッセージを正しく解析するには、メッセージが有効な JSON である必要があります。

[agent] interval = "30s" flush_interval = "30s" debug = false quiet = true

[[inputs.mqtt_consumer]] servers = ["tcp://localhost:1883"] topics = [ "linux/kernel/errors", "linux/fd/usage", "linux/systemd/failed", "linux/packages/health", "linux/security/entropy" ] data_format = "json" json_name_key = "measurement_name" tag_keys = ["hostname"]

[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"

設定パラメーター

Agent セクション

  • interval - データを収集する頻度
  • flush_interval - データを転送する頻度
  • debug - 詳細なデバッグ情報を有効にします
  • quiet - エラー以外の出力を抑制します

MQTT Consumer Input

  • servers - MQTT ブローカーのアドレス
  • topics - サブスクライブする MQTT トピック
  • data_format - 想定される形式(json
  • json_name_key - メトリック名として使用する JSON フィールド
  • tag_keys - タグとして抽出するフィールド

HTTP Output

  • url - NetCrunch Telemetry Node エンドポイント
  • method - POST である必要があります
  • data_format - JSON ペイロードの形式
  • headers - HTTP ヘッダー

MQTT メッセージ形式

MQTT トピックに公開するメッセージは、関連するメタデータとメトリックフィールドを含む JSON オブジェクトである必要があります。

必須フィールド

  • timestamp - ISO 8601 タイムスタンプ
  • hostname - システム識別子
  • Metric fields - カウンターまたはステータスを表す数値または文字列の値

メッセージの例

Kernel Errors

{ "timestamp": "2025-10-29T15:09:08+01:00", "hostname": "server01.example.com", "kernel_errors_5min": 0 }

File Descriptor Usage

{ "timestamp": "2025-10-29T15:05:12+01:00", "hostname": "server01.example.com", "total_fd_count": 1471 }

Package Health Status

{ "timestamp": "2025-10-29T15:07:54+01:00", "hostname": "server01.example.com", "upgradable_packages": 1, "broken_packages": 0 }

System Entropy Level

{ "timestamp": "2025-10-29T15:09:08+01:00", "hostname": "server01.example.com", "entropy_available": 256 }

Failed Systemd Units

{ "timestamp": "2025-10-29T15:06:41+01:00", "hostname": "server01.example.com", "failed_units_count": 0 }

ユースケース

IoT デバイスの監視

デバイスは MQTT ブローカーにテレメトリを公開します。Telegraf はメッセージを取得して NetCrunch に送信し、可視化とアラートに利用できるようにします。

分散システムのメトリック

リモートネットワーク上のシステムは、中央の MQTT ブローカーにメトリックを公開します。NetCrunch は直接接続を必要とせずにテレメトリを受信します。

カスタムアプリケーションのテレメトリ

アプリケーションは構造化されたメトリックを MQTT トピックに公開するため、HTTP エンドポイントを実装する必要がありません。

エッジコンピューティング

エッジデバイスは、ローカルの MQTT ブローカーにテレメトリを公開します。Telegraf はそれを集約して NetCrunch に転送します。

マルチテナント監視

トピック構造とタグ抽出を使用すると、テナントまたはサブシステムに基づいて、メトリックを個別の Telemetry Nodes にルーティングできます。

まとめ

MQTT、Telegraf、および NetCrunch を組み合わせることで、拡張性と柔軟性に優れたテレメトリパイプラインを構築できます。パブリッシャーは JSON メトリックを MQTT ブローカーに送信し、Telegraf は関連するトピックをサブスクライブして、REST エンドポイントを使用してテレメトリを NetCrunch に転送します。このモデルは、SNMP や WMI を必要とせずに、IoT、分散アーキテクチャ、およびカスタム監視シナリオをサポートします。

brokeredgeiotjsonmqttmqtt_consumerpublish subscribepushtelegraftelemetry node