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 がすでに存在することを前提とします — テレメトリノード を参照してください。
データフロー
- メトリックの生成 - システムは、スクリプト、アプリケーション、または監視エージェントを使用してメトリックを生成します。
- MQTT での公開 - メトリックは JSON メッセージとして MQTT ブローカーのトピックに公開されます。
- Telegraf のサブスクリプション - Telegraf は指定された MQTT トピックをサブスクライブします。
- データの転送 - Telegraf は受信したメッセージを NetCrunch Telemetry Node エンドポイントに送信します。
- 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、分散アーキテクチャ、およびカスタム監視シナリオをサポートします。
- NetCrunchにおけるノードとは?
NetCrunchにおけるノードの定義について説明します。ノードが物理デバイスではなくサービスエンドポイントとして扱われる理由、そしてこの区別が最新のインフラストラクチャにおける監視精度をどのように向上させるかを説明します。
- NetCrunch データ形式について
- Monitoring External Sources
How NetCrunch monitors data originating outside built-in collectors using telemetry, scripts, files, and external APIs.
- NetCrunch Native Data Formats
Native payload formats used by NetCrunch to ingest external monitoring data as counters, statuses, and contextual data objects using JSON, XML, and CSV.
- NetCrunchのテレメトリ
テレメトリを使用すると、システムはポーリングなしでメトリックとログをNetCrunchに送信できます。このトピックでは、テレメトリを使用するタイミングと、NetCrunchがテレメトリノードとOTLPクラウドゲートウェイ経由でどのようにテレメトリをサポートするかについて説明します。
- テレメトリノード
テレメトリノードは、RESTまたは OTLP経由で外部システムからメトリック、ステータス、イベントを受信するためのNetCrunchノードタイプです。クラウド、IoT、カスタムシステムのテレメトリデータをアンカーし、イベント対応設計に置き換えられたノードです。
- Monitoring with Telegraf
Use Telegraf, the open-source metrics agent, to collect from systems NetCrunch does not poll directly and push the results into NetCrunch as ordinary counters and statuses.
- NetCrunch における Telegraf 経由の Linux Sysctl Filesystem 監視
このトピックでは、Telegraf を使用して Linux カーネルのファイルシステムパラメーターを監視し、収集したメトリクスを NetCrunch Telemetry Nodes に送信する方法について説明します。Linux Sysctl Filesystem input plugin は proc sys fs ディレクトリから値を読み取り、HTTP output plugin を使用して NetCrunch に転送します。
- NetCrunch における Telegraf 経由の SQL Server Monitoring
このトピックでは、Telegraf を構成して Microsoft SQL Server のメトリックを収集し、JSON ベースのテレメトリデータを使用して NetCrunch Telemetry Node エンドポイントに転送する方法について説明します。SQL Server のログイン設定、接続文字列、Telegraf の入力構成、およびサポートされるメトリックタイプについて説明します。
- NetCrunch における Telegraf を使用した Azure Resource の監視
このドキュメントでは、Telegraf を構成してさまざまな Azure Resource(Virtual Machines、Storage Accounts、Databases など)からメトリックを収集し、Telemetry Node endpoint を介して NetCrunch に送信する方法について説明します。