【Hinemos】 HTTP監視を”コマンド監視”ライクに使う
投稿日: / 更新日:
コマンド監視では、任意のコマンドの実行結果を閾値判定して監視を行うことができますが、実は他の監視でもある程度同じような監視を行うことができます。
“HTTP監視“は、任意のURIに対してリクエストを投げ、Webサーバから返却された値に対して、文字列の条件による監視を行うことができます。あらかじめWebサーバ上に、実行させたいコマンドをCGIとして配備しておけば、監視でポーリングを行う都度、WebサーバがCGIを実行してくれる、という寸法です。今回ご紹介する内容は、このように、Webサーバを”コマンド実行プロキシ“として利用するというものです。
それでは、実際の例をご紹介いたします。あまり実用性のない例で恐縮ですが、ここでは、行きつけのガソリンスタンドの”レギュラーガソリンの会員価格”を、インターネット上から取得して監視することにします。価格は今のところ130円台前半ですが、これが135円以上になったら警告、140円以上になったら危険を通知し、他のガソリンスタンドを検討する時期が来たことを知らせます。
まず、ガソリンの最新価格を表示しているインターネット上のWebページから、レギュラーガソリンの会員価格の箇所だけをスクレイピングするスクリプトを作成します。以下はPerlの実装例です(URIは架空のものに変えています)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# fetch_gasprice.pl use 5.14.2; use warnings; use URI; use Web::Scraper; use CGI "header"; my $result = scraper { process '.signBoardPrice img', 'digits[]' => '@alt'; }->scrape( URI->new("http://gas.example.com/price.html") ); say header(-type => "text/plain"), "GASPRICE=", splice($result->{digits}, 16, 4); __END__ |
実装が完了したら、まずはコマンドラインから実行し、期待どおりの値が返却される事を確認します。
次に、このスクリプトをWebサーバ上の所定のディレクトリへ配置します。配置したら、Webブラウザから上記CGIを実行するためのURIへアクセスし、ブラウザの画面上に期待どおりの値が表示されることを確認します。
ここまでが順調にいけば、あとはHinemosへの登録のみです。HinemosのHTTP監視の設定ダイアログを開き、上記のURIや閾値などの情報を登録します。なお、文字列監視での監視となるため、正規表現に工夫が必要です。
監視項目を登録し、Hinemosで実際に監視が行われるかどうかを確認します。
うまくいったようです。なお、監視間隔は長くしたりカレンダで抑制する等して、ガソリン価格を公開しているWebサーバに過剰な負荷をかけないように注意する必要があります。
以上、HTTP監視を”コマンド監視”のように使用する方法についてご紹介しました。なお今回は、インターネット上から欲しい情報をスクレイピングして監視する例でしたが、この他にも様々な活用法が考えられると思いますので、いろいろと考えてみるのも楽しいと思います。