見出し画像

TWSNMPポーリング辞典:HTTP(S)サーバーをモニタする

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

HTTPとHTTPSについて

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

とかを見てください。

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

ポーリング設定

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

画像1

のように、種別にHTTPまたはHTTPSを選択します。
定義欄の書式は、

URL|検索抽出フィルター|判定条件

のように指定できます。

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

検索抽出フィルター:
応答の文字列から特定の値を検索して取得するためのフィルター名を指定します。省略可能です。

判定条件:
HTTPの応答コード、応答時間、検索抽出フィルターで取得した値をJavaSctriptのプログラムで判断して障害判定します。省略可能です。

検索抽出フィルター

検索抽出フィルターは、grok

を利用した設定ファイルをマップ設定

で読み込むようにしておく必要があります。この設定ファイルの説明を書かなかればと思っていますが。まだ書いていませんでした。すみません。
簡単に書いておくと、

パターン名|`grokの抽出文`
パターン名|`grokの抽出文`

という書式のファイルです。

で作ったhttps://openweathermap.orgの応答から気象情報を取得する場合は、

OPENWEATHER|`"weather":.+"main":\s*"%{WORD:weather}".+"main":.+"temp":\s*%{BASE10NUM:temp}.+"feels_like":\s*%{BASE10NUM:feels_like}.+"temp_min":\s*%{BASE10NUM:temp_min}.+"temp_max":\s*%{BASE10NUM:temp_max}.+"pressure":\s*%{BASE10NUM:pressure}.+"humidity":\s*%{BASE10NUM:humidity}.+"wind":\s*{"speed":\s*%{BASE10NUM:wind}`

のような書式です。これは組み込んであるので、OPENWEATHERという名前で利用できます。ポーリングの定義に、

https://api.openweathermap.org/data/2.5/weather?q=地域,jp&units=metric&APPID=取得したキー|OPENWEATHER|temp < 35.0

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

判定条件

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

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

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

ポーリング結果

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

画像2

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

画像3

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

画像4

のように、基本や湿度を取得できます。
11月の体感気温のグラフは

画像7

のように表示できます。AI分析もできます。

画像6

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

サンプルテンプレート

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

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

画像7

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

を参照してください。



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