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を試していただけます。
トークン発行
APIコマンドを送信する際はユーザ認証のためのアクセストークンが必須となります。APIガイド上ではページ上部の「Authorize」ボタン、または各メソッドの右側にある南京錠マークをクリックすると認証情報を入力するポップアップが表示されます。
認証が成功すると、下図のように南京錠マークが閉じ、コマンドが実行できるようになります。
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日間)が発行されました。
解析の実行
次のコマンドでは、Monitoring Centerの統計情報解析を実行します。
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が返されます。
解析結果の確認は次のコマンドで行います。
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)が確認できます。
Web GUIを用いて同じ解析を行った場合と見比べてみましょう。CLIでの解析と同じ結果が得られていることがわかりますが、バイト数の値が若干異なっているのはCLIではバイト単位、GUIではメビバイト(MiB、2の20乗バイト)単位で表示しているためです。
トラフィック量の出力
次のコマンドでは、トラフィック量を取得することができます。
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つ出力されています。
Web GUI上では、トラフィックグラフ上で同じ値を確認できます。
まとめ
本コラムではFlowmonのREST APIについてご紹介しましたが、ここでお見せしたコマンドはほんの一部です。ほかにもたくさんの機能があり、トラフィック状況に応じたネットワーク機器との外部連携やデータ出力のカスタマイズ、設定の自動化などアイデア次第で多様な活用方法が考えられます。Flowmonをもっと便利に使いたい!という際は、ぜひFlowmon REST APIをご活用ください。
◆Flowmonについて、より詳しく知りたい方は、下記の資料をぜひご覧ください。
細かく相談されたい方は、こちらよりお気軽にお問い合わせください。
担当営業が直接Web会議ツールなどで製品のご案内をすることも可能ですので、お気軽にお申し付けください。
- お見積依頼、お問い合わせはこちらからどうぞ
- 03-6205-6082
- 平日AM9:00~17:30(土日、祝祭日、年末年始、および弊社が定める定休日を除く)