2020年6月30日火曜日

PRTGとntopngを連携して監視を拡張しよう


本記事では、Paessler社PRTGとntop社ntopngの連携方法をご紹介したいと思います。

文:ジュピターテクノロジー よしひろ


図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で確認することができます。

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"

上記コマンドを実行し、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側の作業

①テンプレートファイルの作成

テキストエディタで、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"]
      }
    ]
  }
}

JSONレスポンスの中から監視したい項目を、"channel:"と"value:"で指定します。
今回は、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カスタムセンサーの正常動作確認


Paessler PRTG, ntop ntopngの詳細やお問い合わせは、以下のリンクをご確認ください。