本記事では、Paessler社PRTGとntop社ntopngの連携方法をご紹介したいと思います。
文:ジュピターテクノロジー よしひろ
現在、現在、RESTFul APIにはバージョンv0とv1が存在しntopng4.2以降はv1、それより前のバージョンはv0となります。
2020年6月時点でのntopng安定版はv4.0となりますので、利用するRESTFul APIはv0となります。
v0のAPIドキュメントは、こちらをご参照ください。
そして、Paessler社のPRTGには、RESTカスタムセンサーがあります。これを使えばntopngとPRTGを連携することができます。
PRTGのチャネル定義は、時系列データを値として収集することを想定しているので、ntopngとの相性は抜群なのです。
例えば、ntopngが監視するルーターのインターフェイスに流れるフロー数、IP数、デバイス数、アラート数、トラフィック量、アプリケーション数、トップ5ホストが利用しているトラフィック量..etc..といったデータを定期的に収集してPRTGで確認することができます。
ntopng側の作業
上記コマンドを実行し、JSON形式のレスポンスが標準出力に表示されれば成功です。
“ifid=XX”はインターフェース番号で、ntopngのシステム画面で確認することができます。
レスポンスは、以下の形式となります。
ntopngからのJSONレスポンス例
{
“remote2local”: 10558514594,
“speed”: 1000,
“throughput_pps”: 4168.6645507812,
“remote_bps”: 0,
“epoch”: 1593061437,
“profiles”: [],
“ts_alerts”: [],
“flow_export_count”: 267259,
“num_devices”: 53,
“macs_pctg”: 1,
~省略~
}
JSONレスポンスが返されない場合は、リファレンスにあるリターンコードを確認して、エラー原因を特定してください。
PRTG側の作業
①テンプレートファイルの作成
“prtg”: {
“description” : {
“device”: “ntopng”,
“query”: “:3000/lua/rest/get/interface/data.lua?ifid=6”,
“comment”: “Interrface”
},
“result”: [
{
“channel”: “flow_export_count”,
“value”: $[“flow_export_count”]
},
{
“channel”: “num_devices”,
“value”: $[“num_devices”]
},
{
“channel”: “num_hosts”,
“value”: $[“num_hosts”]
}
]
}
}
JSONレスポンスの中から監視したい項目を、”channel:”と”value:”で指定します。
今回は、flow_export_count(監視対象ネットワーク機器がエクスポートしたフロー数累計)、num_devices(監視対象ネットワーク機器で確認できるデバイス数)、num_hosts(監視対象ネットワーク機器で確認できるホスト数(IPアドレス数=IPv4 + IPv6))をPRTGのセンサーのチャネルとして登録します。
②テンプレートファイルの配置
③RESTカスタムセンサーの登録
以上で準備は完了です。
構文間違いがなければ、正常ステータスで作成したセンサーが認識されます。