見出し画像

TWSNMP FCのポーリング辞典:HTTP(S)サーバーの監視

Webブラウザーでサイトを閲覧するために作られたHTTPプロトコルは、今ではあらゆるコンピューター間の通信に使用されています。この記事ではTWSNMP FCでHTTP(S)サーバーの監視を行う方法について説明します。

動画のダイジェスト

HTTPとHTTPSについて

非常にポピュラーなプロトコルなので知らない人はいないと思いますが、復習したい場合は、

とかを見てください。

TWSNMP FCのWebサーバー監視のポーリングの種類にはHTTPとHTTPSのモードがあります。基本的には暗号通信の有無の違いですが、HTTPモードでも暗号通信(HTTPS)のポーリングができます。この場合サーバーが提示する証明書の検証を行わないで応答だけで判断するポーリングになります。HTTPSモードの場合は、サーバーの証明書を検証するので安全でないサーバーはエラーと判断します。
HTTPモードではサーバーとの通信の安全性は確認しないがHTTPSモードでは安全性がない場合は通信しないという違いです。

HTTPポーリング設定

TWSNMP FCでhttpモードのポーリングを行う場合は、

のように設定します。
パラメータにアクセスするURLを指定します。

種別:
HTTPを選択します。

モード:
空欄の場合は、httpモードです。httpsモードを指定するとサーバー証明書を検証します。

パラメーター:

アクセス先のURLを指定します。
https:/www.twise.co.jp/index.htmlなど

抽出パターン:
応答の文字列から特定の値を検索して取得するための抽出パターン名を指定します。空欄の場合は、データを抽出しません。

判定スクリプト:
HTTPの応答コード、応答時間、検索抽出フィルターで取得した値をJavaSctriptのプログラムで判断して障害判定します。空欄の場合は、
応答の有無で判断します。

抽出パターン

抽出パターンは、「システム設定」ー「抽出パターン」で登録したものから選択します。

抽出の方法はgrok

を利用しています。自分で編集して登録できます。

の時に作ったhttps://openweathermap.orgの応答から気象情報を取得する抽出パターンをサンプルで組み込んであります。

のような定義です。

{"coord":{"lon":139.5577,"lat":35.8578},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],"base":"stations","main":{"temp":6.49,"feels_like":4.14,"temp_min":2.8,"temp_max":9.41,"pressure":1015,"humidity":84,"sea_level":1015,"grnd_level":1014},"visibility":10000,"wind":{"speed":3.23,"deg":347,"gust":7.78},"clouds":{"all":25},"dt":1677266133,"sys":{"type":2,"id":2044139,"country":"JP","sunrise":1677273497,"sunset":1677313919},"timezone":32400,"id":6940394,"name":"Fujimi","cod":200}%

のような応答から気温などを抽出できます。
これを使ったポーリングの設定は

のようになります。これで、気温が35以上になるとノードが赤くなります。

判定スクリプト

検索抽出フィルターを使用しない場合は、判定条件のJavaScriptで次の変数が使用できます。

code
HTTPの応答コード
status
HTTPの応答ステータス文字列
rtt
応答時間

検索抽出フィルターを使用すれば、抽出した変数を利用することができます。先程の気象情報の例だとtempです。

ポーリング結果

単純なWebサーバー監視の場合は、

のようなポーリングのログになります。応答時間をグラフ表示すると

のようになります。
検索抽出フィルターを使った気象情報の場合は、

のように、気温や湿度を取得できます。
2023/2/18-2/24の体感気温のグラフは

のように表示できます。温かい日と寒い日がよくわかります。
AI分析もできます。

応答時間だけでなく気温や湿度なども含めて分析していますが、何を異常と言っているかわかりません。(詳しくみていないという意味です。)

テンプレート

この記事で紹介したポーリングのテンプレートは、

です。
定義は、

  {
    "Name": "HTTP接続",
    "Type": "http",
    "Mode": "",
    "Params": "URLを指定",
    "Level": "low",
    "Descr": "HTTP接続監視",
    "AutoMode": "80,443,2181,8080,8888"
  },
  {
    "Name": "HTTPS接続",
    "Type": "http",
    "Mode": "https",
    "Params": "URLを指定",
    "Level": "low",
    "Descr": "HTTPS接続監視",
    "AutoMode": "443,2181,8080,8888"
  },
  {
    "Name": "気象情報",
    "Type": "http",
    "Mode": "https",
    "Params": "https://api.openweathermap.org/data/2.5/weather?q=地域,jp&units=metric&APPID=取得したAPIキー",
    "Extractor": "OPENWEATHER",
    "Script": "temp > 35.0",
    "Level": "off",
    "Descr": "気象情報の取得のサンプル",
    "AutoMode": "disable"
  },

気象情報のポーリングに関しては、地域とAPIキーを変更する必要があります。

気象情報のAPIキーの取得は、

を参照してください。


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。