Flowmon REST API講座

2025年2月3日



 REST APIはアプリケーション間のデータ交換手段として広く利用されており、現代のWebサービスやアプリケーション開発を支える重要な基盤といえるでしょう。REST(REpresentational State Transfer)とはソフトウェアのアーキテクチャスタイルの一つであり、6つの基本原理(クライアント-サーバ、ステートレス、キャッシュ、統一インターフェース、階層型システム、コードオンデマンド)により定義されます。この設計理念に基づいたREST APIは、シンプルかつスケーラブルものとなります。
 ”RESTful”なAPIは、その柔軟性や拡張性の高さから第三者による二次利用のハードルを下げ、効率的なアプリケーション開発を実現します。現在では、多くの企業が自社サービスのAPIを公開しています。開発者はこれら既存のサービスを構成する「機能」を個別に「再利用」することで開発の手間を省き、様々なシステムを統合して新たなサービスを作り出すことも容易にできるのです。
 本コラムでは、Flowmonが公開しているREST APIの一部をご紹介いたします。Flowmonをより便利に利用するシステムづくりのヒントになれば幸いです。

Flowmon REST APIガイド

 FlowmonのWeb GUIから、公開されているREST APIガイドを確認することができます。ADSやFPIなどのプラグインモジュールも含めると300個以上のメソッドが公開されており、ブラウザ上からコマンドを送信することもできるためCLI操作に慣れていない方でも手軽にAPIを試していただけます。

図1:Flowmon REST APIガイド画面

図1:Flowmon REST APIガイド画面

トークン発行

 APIコマンドを送信する際はユーザ認証のためのアクセストークンが必須となります。APIガイド上ではページ上部の「Authorize」ボタン、または各メソッドの右側にある南京錠マークをクリックすると認証情報を入力するポップアップが表示されます。

図2:認証手順(Web GUI)

図2:認証手順(Web GUI)

認証が成功すると、下図のように南京錠マークが閉じ、コマンドが実行できるようになります。

図3:認証完了後の南京錠マーク

図3:認証完了後の南京錠マーク

 CLIで実行する場合は、下記のコマンドを使用してトークンを発行します。他のコマンドを送信する際に、取得したアクセストークンをcurlのヘッダーオプションとして付加します。なお、Flowmon OSでは自己証明書を用いており、そのまま実行しようとするとcurlのSSLエラーではじかれてしまうので、-kオプションを付ける必要があります。

curl -X 'POST' -k 'https://<flowmon_address>/resources/oauth/token' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=password&client_id=invea-tech&username=<username>&password=<password>' | jq

画像はコマンドの実行例です。有効期限86400秒(24時間)のアクセストークンと、リフレッシュトークン(有効期限はデフォルトで2日間)が発行されました。

図4:トークン発行(CLI)

図4:トークン発行(CLI)

解析の実行

 次のコマンドでは、Monitoring Centerの統計情報解析を実行します。に統計基準、に並べ替え基準、に集約といった形で、Web GUIでの解析と同様の条件指定をすれば問題ありません。

curl -X 'POST' -k 'https://<flowmon_address>/rest/fmc/analysis/statistics' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <access_token>' \
  -d '{
    "search": {
      "from": "<start_time>",
      "to": "<end_time>",
      "profile": "<profile_id>",
      "channels": [
        "<channel_id#1>", "<channel_id#2>", ...
      ],
      "statistics": {
        "statistics": "<statistics>",
        "orderBy": "<order_by>"
      },
      "specific": {
        "aggregateBy": [
          "<aggregate_by#1>", "<aggregate_by#2>", ...
        ]
      },
      "filter": "<filter>"
    },
    "showonly": <number_of_displays>
  }' | jq

画像の実行例では、プロファイルに「All Sources(CLI上の表記はlive)」、統計基準に「IP通信(record)」を選び、「送信元IPアドレス(srcip)」及び「宛先IPアドレス(dstip)」で集約しています。このコマンドを送信すると、出力として解析結果のIDが返されます。

図5:統計情報解析の実行(CLI)

図5:統計情報解析の実行(CLI)

 解析結果の確認は次のコマンドで行います。に前述のIDを入力することで、解析結果が出力されます。

curl -X 'GET' -k 'https://<flowmon_address>/rest/fmc/analysis/results/<result_id>' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <access_token>' | jq

実行例では、通信の開始時間(ts)と期間(td)、送信元IP(srcip)、宛先IP(dstip)、パケット数(pkt)、バイト数(byt)、フロー数(fl)が確認できます。

図6:統計情報解析結果の出力(CLI)

図6:統計情報解析結果の出力(CLI)

 Web GUIを用いて同じ解析を行った場合と見比べてみましょう。CLIでの解析と同じ結果が得られていることがわかりますが、バイト数の値が若干異なっているのはCLIではバイト単位、GUIではメビバイト(MiB、2の20乗バイト)単位で表示しているためです。

図7:統計情報解析(Web GUI)

図7:統計情報解析(Web GUI)

トラフィック量の出力

 次のコマンドでは、トラフィック量を取得することができます。には出力したいトラフィック値として「traffic」や「packets」、「flows」が指定できます。また、は数字のID(0:すべて、1:ICMP、4:IPv4、6:TCP、等)で指定します。

curl -X 'POST' -k 'https://<flowmon_address>/rest/fmc/analysis/chart' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <access_token>' \
  -d '{
    "search": {
      "from": "<start_time>",
      "to": "<end_time>",
      "profile": "<profile_id>",
      "channels": [
        "<channel_id#1>", "<channel_id#2>", ...
      ],
      "chart": {
        "measure": "<measure_value>",
        "protocol": <protocol_id>
      }
    }
  }' | jq

出力結果はプロファイルの粒度単位でのトラフィック量となり、実行例では5分粒度プロファイルで10分間を指定したため、5分ごとの値が2つ出力されています。

図8:トラフィック量の出力(CLI)

図8:トラフィック量の出力(CLI)

 Web GUI上では、トラフィックグラフ上で同じ値を確認できます。

図9:トラフィック量の確認(Web GUI)

図9:トラフィック量の確認(Web GUI)

まとめ

 本コラムではFlowmonのREST APIについてご紹介しましたが、ここでお見せしたコマンドはほんの一部です。ほかにもたくさんの機能があり、トラフィック状況に応じたネットワーク機器との外部連携やデータ出力のカスタマイズ、設定の自動化などアイデア次第で多様な活用方法が考えられます。Flowmonをもっと便利に使いたい!という際は、ぜひFlowmon REST APIをご活用ください。


◆Flowmonについて、より詳しく知りたい方は、下記の資料をぜひご覧ください。


細かく相談されたい方は、こちらよりお気軽にお問い合わせください。
担当営業が直接Web会議ツールなどで製品のご案内をすることも可能ですので、お気軽にお申し付けください。

Flowmon製品に関する
お問い合わせはこちらからどうぞ

  • お見積依頼、お問い合わせはこちらからどうぞ
  • 03-6205-6082
  • 平日AM9:00~17:30(土日、祝祭日、年末年始、および弊社が定める定休日を除く)