文:ジュピターテクノロジー よしひろ
図1 PRTGとntopngの連携
ntopngはRESTFul APIを実装しているので、収集した情報を他システムから利用することが可能です。
現在、現在、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で確認することができます。
上記コマンドを実行し、JSON形式のレスポンスが標準出力に表示されれば成功です。
"ifid=XX"はインターフェース番号で、ntopngのシステム画面で確認することができます。
レスポンスは、以下の形式となります。
"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レスポンスが返されない場合は、リファレンスにあるリターンコードを確認して、エラー原因を特定してください。
JSONレスポンスの中から監視したい項目を、"channel:"と"value:"で指定します。
今回は、flow_export_count(監視対象ネットワーク機器がエクスポートしたフロー数累計)、num_devices(監視対象ネットワーク機器で確認できるデバイス数)、num_hosts(監視対象ネットワーク機器で確認できるホスト数(IPアドレス数=IPv4 + IPv6))をPRTGのセンサーのチャネルとして登録します。
以上で準備は完了です。
構文間違いがなければ、正常ステータスで作成したセンサーが認識されます。
現在、現在、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側の作業
事前にAPIを叩いてデータを収集できるかを確認するだけです。
今回は、例として監視対象のインターフェイスデータをAPI経由で取得してみます。
API経由で取得できるデータは、こちらのページをご参照ください。
$ curl -s --cookie "user=admin; password=XXXX" "http://192.168.XX.XX:3000/lua/rest/get/interface/data.lua?ifid=XX"
"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側の作業
①テンプレートファイルの作成
テキストエディタで、ntopng-interface.template(拡張子が、.templateであればファイル名は任意)を作成し、以下の内容コピーしてください。
{
"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"]
}
]
}
}
"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"]
}
]
}
}
今回は、flow_export_count(監視対象ネットワーク機器がエクスポートしたフロー数累計)、num_devices(監視対象ネットワーク機器で確認できるデバイス数)、num_hosts(監視対象ネットワーク機器で確認できるホスト数(IPアドレス数=IPv4 + IPv6))をPRTGのセンサーのチャネルとして登録します。
②テンプレートファイルの配置
パスC:\Program Files(x86)\PRTG Network Monitor\Custom Sensors\restに保存してください。
図2 カスタムセンサーRESTディレクトリ
③RESTカスタムセンサーの登録
PRTGのセンサー追加手順に従います。
デバイスでntopngがインストールされたホストを選択します。
画面右にあるセンサーの追加ボタンを押します。
図3 ntopngホスト
検索ボックスに「REST」と入力して、RESTカスタムセンサーをクリックしてください。
図4 RESTカスタムセンサーの追加
認証方法に、基本認証を選択して、ntopngのユーザーとパスワードを入力してください。
次に、RESTクエリに「:3000/lua/rest/get/interface/data.lua?ifid=XX」を入力してください。
REST構成のプルダウンメニューで、ntopng-interface.templateを選択してください。
図5 RESTカスタムセンサーの設定
以上で準備は完了です。
構文間違いがなければ、正常ステータスで作成したセンサーが認識されます。
図6 RESTカスタムセンサーの正常動作確認