twMQTTAgent

Lightweight system monitoring agent for TWSNMP series.

View on GitHub

twMQTTAgent

twMQTTAgent は、Go で書かれた軽量でクロスプラットフォーム対応のシステム監視エージェントです。システムメトリクス(CPU、メモリ、ロードアベレージ、ネットワーク、プロセス数)を収集し、JSON 形式で MQTT ブローカーにパブリッシュします。TWSNMP シリーズのモダンな拡張機能として設計されています。

English


主な機能

設定と使用方法

twMQTTAgent はコマンドラインフラグを使用して設定します。

CLI フラグ

フラグ デフォルト値 説明
-broker tcp://localhost:1883 MQTT ブローカーの URL (例: tcp://192.168.1.1:1883)
-client-id twMQTTAgent MQTT クライアント ID
-topic twMQTTAgent MQTT のベーストピック。ホスト名とデータ種別が自動的に付与されます (例: <topic>/Monitor/<hostname>)
-interval 30 システムメトリクス(Monitor)のパブリッシュ間隔(秒)
-if-interval 0 インターフェース統計(IF)のパブリッシュ間隔(秒)。0 で無効化
-arp-interval 0 ARP テーブル(Arp)のパブリッシュ間隔(秒)。0 で無効化
-user   MQTT 接続用のユーザー名(任意)
-password   MQTT 接続用のパスワード(任意)
-hostname   トピックおよびペイロードで使用されるホスト名。未指定時はシステムのホスト名を使用

実行例

# 60秒間隔でシステムメトリクスを送信する基本実行
./twMQTTAgent -broker tcp://192.168.1.50:1883 -topic myhome/monitor -interval 60

# インターフェース統計と ARP テーブル監視を有効にして実行
./twMQTTAgent -broker tcp://192.168.1.50:1883 -if-interval 300 -arp-interval 600

開発とビルド

本プロジェクトでは、ツールバージョン管理およびタスクランナーとして mise を使用しています。

前提条件

ビルドコマンド

Go ツールチェーンを直接使用する場合:

# ローカルプラットフォーム向けにビルド
go build -o twMQTTAgent

mise を使用する場合:

# テスト用にローカルで実行
mise run run

# 現在のホストアーキテクチャ向けにビルド
mise run build:local

# Windows、Linux 向けにクロスコンパイル
mise run build:all

JSON ペイロード形式

システムメトリクス (トピック: <topic>/Monitor/<hostname>)

{
  "time": "2026-07-02T05:28:08+09:00",
  "host": "my-pc-name",
  "cpu": 12.5,
  "memory": 53.1,
  "load": 1.45,
  "sent": 1024,
  "recv": 2048,
  "tx_speed": 0.15,
  "rx_speed": 0.30,
  "process": 120
}

インターフェース統計情報 (トピック: <topic>/IF/<hostname>)

{
  "time": "2026-07-02T05:28:08+09:00",
  "host": "my-pc-name",
  "interfaces": [
    {
      "index": 1,
      "name": "eth0",
      "mtu": 1500,
      "mac": "00:11:22:33:44:55",
      "status": "up",
      "addrs": ["192.168.1.100/24"],
      "bytes_recv": 2048,
      "bytes_sent": 1024,
      "packets_recv": 20,
      "packets_sent": 15,
      "err_in": 0,
      "err_out": 0,
      "drop_in": 0,
      "drop_out": 0
    }
  ]
}

ARP テーブル (トピック: <topic>/Arp/<hostname>)

{
  "time": "2026-07-02T05:28:08+09:00",
  "host": "my-pc-name",
  "arp": [
    {
      "ip": "192.168.1.1",
      "mac": "00:11:22:33:44:55",
      "interface": "eth0",
      "type": "dynamic"
    }
  ]
}

ライセンス

本プロジェクトは MIT ライセンスのもとで公開されています。詳細は LICENSE ファイルを参照してください。