REST APIを「PRTG」で監視する方法 ~GUIでかんたん設定~

この記事では、ネットワーク監視ソフト「PRTG Network Monitor」(以下、PRTG)を使い、さまざまなサービス、機器をREST API経由で監視する方法を紹介します。
REST APIを持つサービスや機器の状態、リソース、さまざまな値をPRTGで監視できるようになります。

文:ジュピターテクノロジー やすだ

※本記事に掲載されている商品名・サービス名などは、各社の商標または登録商標です。

はじめに

昨今では、SaaSをはじめとして、さまざまなサービスや機器がREST APIで値を返すようになっています。PRTGは、これらのREST APIのエンドポイントに対して、リクエストを送信し、そのレスポンス(JSONまたはXML)を監視することができます。
監視した値にしきい値を設定してアラートを送信したり、長期間の履歴をグラフやテーブルで確認したりできます。

PRTGでREST API監視をするメリット

GUI操作でかんたん・安心設定

PRTGなら、GUIから設定するだけでかんたんにREST API監視をすることができます。パスワードやトークンなどの認証情報はマスク表示されるため、安心して設定・管理できます。

SNMPやその他の監視方法と併用できる

PRTGは、Ping、SNMPやその他の監視プロトコルにも対応しています。REST API監視と併用し、さまざまなサービス、機器を一元的に監視することができます。

PRTGの監視画面の例

PRTGはセンサーという定義済みの監視テンプレートを用いて監視を行います。
ここでは、「REST カスタム v2」というセンサーを使用します。
センサーの設定画面にAPIエンドポイントや認証情報などを入力するだけで、REST API監視を開始できます。

※PRTGには、FortiGateなど一部製品向けにREST API監視の専用センサーも用意されています。本記事では、REST API監視の基本を紹介するため、「REST カスタム v2」センサーを使用します。

FortiGateのCPU使用率を監視

FortiGateのCPU使用率を、「REST カスタム v2」センサーで監視しています。

CPU使用率を監視する「REST カスタム v2」センサー


ここでは、以下のJSON(抜粋)の太字部分の値から、現在のCPU使用率を監視しています。

{
  "results": {
    "cpu": [{
      "current": 1,
      "historical": {
        "1-min": {
          "values": [
            [1783657895000, 1],
            ...
      


値は365日(デフォルト)分保存され、グラフやテーブルで確認することができます。
しきい値を設定して、アラートを発報することもできます。

1ヵ月グラフ
しきい値を設定し、90%を超えたらアラート

FortiGateをREST APIで監視する場合は、専用センサーを利用することもできます。設定方法については、以下の記事をご覧ください。

FortiGateのセッション数・CPU・メモリ・VPNを「PRTG」でまとめて監視する

ステータス文字列を監視

レスポンスJSON内のステータス文字列を監視するセンサーです。REST APIでは文字列が返される場合もあります。この例では「Yes」を正常、「No」を異常としてアラートを発報します。

文字列を監視する「REST カスタム v2」センサー


【事前準備】APIエンドポイントとレスポンス、認証方法の確認

PRTGでREST APIを監視する前に、監視対象のAPIについて、以下を確認します。

  • APIエンドポイントとレスポンス
  • 認証方法

これらの情報を事前に確認しておくことで、「REST カスタム v2」センサーの設定をスムーズに行えます。

APIエンドポイントとレスポンス

各ベンダーのマニュアルやAPIリファレンスなどで、REST APIのエンドポイント(URL)とレスポンス形式を確認します。
詳細なAPI仕様については、各ベンダーへお問い合わせください。
監視したい項目を取得できるAPIエンドポイントが存在するか、また、そのレスポンスがPRTGで取得可能なJSONまたはXML形式で提供されているかを確認します。

例えば、FortiGateでは、CPUなどのシステムリソース情報を取得するAPIが用意されています。

このAPIエンドポイントにHTTP GETメソッドでリクエストを送信すると、JSON形式でレスポンスが返ってきます。レスポンスには、CPU使用率やメモリ使用率などの値が含まれています。

FortiGateのREST APIリクエスト例:

GET https://<FortiGate-IP>/api/v2/monitor/system/resource/usage

レスポンス例(一部抜粋):

{
  "results": {
    "cpu": [{
      "current": 1,
      "historical": {
        "1-min": {
          "values": [
            [1783657895000, 1],
            ...
          ]
        }
      }
    }],
    "mem": [{
      "current": 49,
      "historical": {
        "1-min": {
          "values": [
            [1783657895000, 49],
            ...
          ]
        }
      }
    }]
  }
}

認証方法

同様に、APIの認証方法も確認します。「REST カスタム v2」センサーは、以下の認証方式に対応しています。

  • ベーシック認証
  • ベアラー認証
  • セッションベース認証

また、API側の仕様によっては、URLのクエリパラメーターとして認証情報を指定することもできます。
FortiGateでは、ベアラー認証、URLのクエリパラメーターによるAPIキー認証、およびセッションベース認証に対応しています。
本記事では、ベアラー認証と、URLのクエリパラメーターとしてAPIキーを指定する方法を紹介します。

※OAuth 2.0など、事前の認証処理や動的な認証情報の生成が必要な認証方式には、REST カスタム v2センサー単体では対応できません。スクリプトなどを使用したカスタムセンサーの作成が必要です。
※AzureやAWSなど、主要なクラウドサービスについては、PRTGに専用センサーが用意されています。

【事前準備】監視対象機器側の設定

REST APIで監視するには、監視対象機器側でAPIアクセス用の設定が必要です。
一般的には、以下の設定を行います。

  • REST API機能の有効化
  • APIアクセス用ユーザーやアカウントの作成
  • API認証情報(APIキー、トークン、ユーザー名・パスワードなど)の発行
  • APIアクセス権限の設定
  • PRTGからのアクセスを許可する設定

必要な設定項目や手順は製品によって異なるため、各ベンダーのマニュアルを確認してください。
本記事では、例としてFortiGateでAPIキー(APIトークン)を設定する方法を説明します。

FortiGate側でAPIキーを作成

FortiGateをREST APIで監視するには、APIキーを作成します。FortiGateのGUIで以下の手順を実行します。

  • システム > 管理者 > 新規作成 > REST API管理者 に進み、新しいREST APIユーザーを作成
  • 「ユーザー名」、「管理者プロファイル」を設定(項目「設定」が「読取り」である必要あり)
  • 「PKIグループ」が不要なら無効化
  • 「信頼されるホスト」にPRTGのIPアドレスが含まれるように設定
  • 作成後に表示される「新規APIキー」を保管
    ※詳しい手順は、FortiGateのマニュアルや以下のメーカーブログをご参照ください。
    Monitoring FortiGate Firewalls with Paessler PRTG

APIリクエストとレスポンスを確認

センサーで監視をする前に、機器に対してAPIリクエストを送信し、レスポンスを確認します。
このリクエストとレスポンスを基に、「REST カスタム v2」センサーを設定します。
ここではFortiGateを例として、ベアラー認証と、URLのクエリパラメーターとしてAPIキーを指定する方法をそれぞれ紹介します。

ベアラー認証を使用したリクエスト

ベアラー認証では、HTTPリクエストヘッダーの「Authorization」にAPIキー(Bearerトークン)を指定します。
curlでリクエストを送信する場合は、以下のようになります。

curl -k -H "Authorization: Bearer <APIキー>" "https://<FortiGateのIP>/api/v2/monitor/system/resource/usage"

URLのクエリパラメーターとして認証情報(APIキー)を指定

FortiGateでは、ベアラー認証を使用せず、URLのクエリパラメーターとして認証情報(APIキー)を指定して認証することもできます。
その場合のリクエスト例は以下のとおりです。

https://<FortiGateのIP>/api/v2/monitor/system/resource/usage?access_token=<APIキー>

レスポンス

JSONでレスポンスが返ってきます。一部を抜粋して掲載します。
JSONパス「$.results.cpu[0].current」には現在のCPU使用率が、「$.results.mem[0].current」には現在のメモリ使用率が格納されています。
また、「$.results.cpu[0].historical[“1-min”].values」のように過去のCPU使用率も格納されていますが、PRTGでは現在値を定期的に取得し、履歴はPRTG側で管理できます。
そのため、本記事では「$.results.cpu[0].current」を監視します。

{
  "results": {
    "cpu": [{
      "current": 1,
      "historical": {
        "1-min": {
          "values": [
            [1783657895000, 1],
            ...
          ]
        }
      }
    }],
    "mem": [{
      "current": 49,
      "historical": {
        "1-min": {
          "values": [
            [1783657895000, 49],
            ...
          ]
        }
      }
    }]
  }
}

PRTGで「REST カスタム v2」センサーを追加

ここからはPRTGのウェブGUIで操作していきます。

監視対象機器を「デバイス」として登録

PRTGは監視対象機器を「デバイス」として追加して監視を行います。本記事では、FortiGateファイアウォールの管理IPアドレスをPRTGのデバイスとして追加します。

  • 「+」アイコン|「デバイスの追加」をクリック
  • デバイスを登録する場所を選択して「OK」をクリック
  • 「新規デバイスの追加」画面で以下を入力して「OK」をクリック
  • デバイス名:<任意のデバイス名>
  • IPv4 アドレス/DNS 名:<監視対象機器のIPアドレス>
  • 「保存」をクリック
「デバイスの追加」からデバイスを新規追加
デバイス名とIPアドレス(またはDNS名)を設定

これで監視対象機器を「デバイス」として登録できました。

デバイスに「REST API の資格情報」を設定

PRTGで登録した「デバイス」の「REST API の資格情報」を、APIの認証方法に合わせて設定します。
本記事では、ベアラー認証と、URLのクエリパラメーターにAPIキーを指定する方法をそれぞれ説明します。
使用する認証方法に合わせて、いずれかを設定してください。

ベアラー認証のトークンを設定

次の手順でベアラー認証のトークンを設定します。

  • 設定するデバイスをクリック
  • デバイスの「設定」タブをクリック
  • 「REST API の資格情報」の「引継ぎ元」のチェックボックスからチェックを外す
  • 「認証方法」で「ベアラー認証」をチェック
  • 「ベアラートークン」にAPIキーを入力
  • 「保存」をクリック
「ベアラートークン」にAPIキーを入力

クエリパラメーターで使用するAPIキーを設定

URLのクエリパラメーターにAPIキーを指定する場合は、APIキーをあらかじめプレースホルダーとして保存します。
センサーでURLを設定する際に、プレースホルダー経由でAPIキーを指定します。

  • 設定するデバイスをクリック
  • デバイスの「設定」タブをクリック
  • 「REST API の資格情報」の「引継ぎ元」のチェックボックスのチェックを外す
  • 「認証方法」で「なし(デフォルト)」をチェック
  • 「プレースホルダー 1」にFortiGateのAPIキーを入力
  • 「プレースホルダー 1 の説明」に説明文を入力(任意)
    ここでは「APIキー」と入力
  • 「保存」をクリック
「プレースホルダー 1」にAPIキーを入力

センサーを設定

デバイスにセンサーを追加します。

  • デバイスの「センサー追加」をクリック
  • 「センサーの追加」画面で、「検索」フィールドに「REST」と入力
  • 「REST カスタム v2」をクリック
「センサー追加」をクリック
「REST」で検索し、「REST カスタム v2」センサーをクリック
センサー設定を入力していく

リクエストを送信するURLを、使用する認証方法にあわせて「固有のセンサー設定」の「要求 URL」に入力します。

「要求 URL」の設定:ベアラー認証の場合

ベアラー認証を使用したリクエストは以下でした:

curl -k -H "Authorization: Bearer <APIキー>" "https://<FortiGateのIP>/api/v2/monitor/system/resource/usage"

このうち、ヘッダーに追加した「”Authorization: Bearer “」はすでに「REST API の資格情報」に設定しています。
ここでは「固有のセンサー設定」の「要求 URL」に以下を入力します。

https://<FortiGateのIP>/api/v2/monitor/system/resource/usage

※「<FortiGateのIP>」部分にはプレースホルダー「%host」を使用することもできます。
 「%host」はデバイスに設定したIPアドレスまたはDNS名に置換されます。

また、HTTP GETメソッドでリクエストを送信し、JSONでレスポンスがあるので、その他の設定はデフォルト値のまま「保存」をクリックします。

使用する認証方法(ベアラー認証)に合わせて、「要求URL」を入力

「要求 URL」の設定:クエリパラメーターで認証情報を指定する場合

クエリパラメーターとして認証情報を指定したリクエストは以下でした:

https://<FortiGateのIP>/api/v2/monitor/system/resource/usage?access_token=<APIキー>

このうち、「access_token=」パラメーターで指定するAPIキーは「プレースホルダー 1」に設定しています。

ここでは「固有のセンサー設定」の「要求 URL」に以下を入力します。「%restplaceholder1」を使用して、プレースホルダーでAPIキーを指定しています。

https://<FortiGateのIP>/api/v2/monitor/system/resource/usage?access_token=%restplaceholder1

また、HTTP GETメソッドでリクエストを送信し、JSONでレスポンスがあるので、その他の設定はデフォルト値のまま「保存」をクリックします。

使用する認証方法(クエリパラメーターで認証情報を指定)に合わせて、「要求URL」を入力

「チャネル設定」でJSONパスを指定

ここからは、「ベアラー認証」、「クエリパラメーターとして認証情報を指定」どちらの認証方法を使用する場合でも共通です。
「チャネル設定」でJSONパスを指定し、センサーのチャネルで監視する値を指定します。

以下のJSONレスポンスより、現在のCPU使用率のJSONパスは「$.results.cpu[0].current」です。

{
  "results": {
    "cpu": [{
      "current": 1,
      "historical": {
        "1-min": {
          "values": [
            [1783657895000, 1],
            ...
          ]
        }
      }
    }],
    "mem": [{
      "current": 49,
      "historical": {
        "1-min": {
          "values": [
            [1783657895000, 49],
            ...
          ]
        }
      }
    }]
  }
}

次のように設定項目を入力します。

  • チャネル #1 JSONPath/XPath:$.results.cpu[0].current
  • チャネル #1 名前:センサーのチャネルで表示する名称
    ここでは「CPU current」と設定
  • チャネル #1 値の種類:絶対(整数)
  • チャネル #1 単位:パーセント(CPU)
    ※値の種類、単位はJSONレスポンスの値に合わせます。

「作成」をクリックして、センサーを作成します。

「チャネル設定」の各項目を入力

ヒント:1つのREST カスタム v2センサーでは複数のチャネルを定義できます。例えば、「チャネル #2」を有効にして、メモリ使用率のJSONパス「$.results.mem[0].current」を追加すると、CPU使用率とメモリ使用率を1つのセンサーで監視できます。

文字列を返す場合の監視方法

ここまでは、整数値を返すAPIの監視について紹介しました。
APIによっては、レスポンスとして文字列が返される場合があります。
例えば、次のPRTGのREST APIのJSONレスポンスでは、「$.sensordata.lastvalue」の値として「Yes」または「No」の文字列が返されます。

{
"prtgversion": "26.2.120.1477+",
"sensordata": {
"name": "DNS v2",
"sensortype": "paessler.DNS.dns_v2.49",
"interval": "60",
"lastvalue": "Yes",
"lastmessage": "OK: A=142.251.12.100, 142.251.12.101, 142.251.12.102, 142.251.12.113, 142.251.12.138, 142.251.12.139",
}
}

文字列に応じてセンサーのステータスを変化させることができます。
センサーの「チャネル設定」で次のように設定します。

  • チャネル #1 JSONPath/XPath:$.sensordata.lastvalue
  • チャネル #1 値の種類:ステータス(文字列)
  • 「アップ」ステータスにマッピングされているチャネル #1 文字列:Yes
  • 「ダウン」ステータスにマッピングされているチャネル #1 文字列:No
  • チャネル #1 不明な文字列の処理:「警告(前兆あり)」ステータス
「チャネル設定」で「ステータス(文字列)」を設定

これで、「Yes」の場合はセンサーがアップ(緑)、「No」の場合はダウン(赤)、それ以外の文字列の場合は警告(黄)となります。

まとめ

本記事では、PRTGの「REST カスタム v2」センサーを使って、REST APIを監視する方法を紹介しました。APIエンドポイントや認証方法を確認し、JSONPathやXPathを設定することで、JSONやXMLから必要な値を取得して監視できます。

数値だけでなく、文字列を監視してセンサーのステータスを変更することもできるため、APIで取得できるさまざまな情報を柔軟に監視できます。

APIを提供するサービスや機器であれば、多くの場合、同様の手順で監視できます。標準センサーでは対応していない監視項目についても、REST APIを活用することで監視対象を広げることができます。

こんな記事も読まれています

最新記事

おすすめ記事

  1. 【第1回】EDRをすり抜ける攻撃に備える。暗号化を防ぐ「最後の砦」REP Xの真価とは

  2. 【CheckmkKB】ユーザーテストを自動実行!アプリの体感をそのまま見える化

  3. WinSyslog 使い方ガイド#4 処理の必要がないログを絞り込んで「破棄」する

製品カテゴリー

その他の情報

TOP