ども、cloudpackかっぱ@inokara)です。

はじめに

Sensu で特定の URL にアクセスして出力された文字列をチェックして文字列の内容によって OK 又は Critical を出力するプラグインが無いかなって思って探していたら check-http-json.rb ってプラグインがあったので触ってみました。


memo

準備

適当な Web サーバーに以下のような JSON が書かれたファイルをドキュメントルートに置いておきましょう。

{"status":"ok"}

アクセスしてみるばい

./check-http-json.rb -u http://xxx.xxx.xxx.xxx:8001/test.html -K status -v ok

尚、プラグインを実行する環境には sensu-plugin を事前にインストールしておきましょう。

アクセスの結果、以下のように出力されます。

CheckJson OK: Valid JSON and key present and correct

例えば、JSON を以下のように status キーが ng の場合(アプリケーションが内部的にエラーになった場合等)…

{"status":"ng"}

以下のように CRITICAL が出力されます。

CheckJson CRITICAL: JSON key check failed

また、対象の path が存在しない場合(ファイルが削除された場合等ですね)には以下のように表示されます。

CheckJson CRITICAL: 404

また、対象の Web サービスが停止している場合(サーバーが落ちている場合等ですね)には以下のように表示されます。

CheckJson CRITICAL: Connection error: Connection refused - connect(2)

ということで

アプリケーションの監視を sensu で行う場合にはアプリケーションのステータスを上記のようなシンプルな JSON で出力するようにアプリケーションエンジニアの方にお願いして、この check-http-json.rb を利用するといいかもですね!

元記事はこちらです。
Sensu Community Plugin の check-http-json.rb を試した