もっと KISS(単純)な simple alert を書いてみました

投稿者: | 2019年3月20日

KISS (Keep-It-Simple-Stupid) should be actually KISS!  Wrote my own yet-another KISS simple monitor alert.

IT 管理者が必ず(?)書くツールの一つに、「なんとかモニタ」というものがありますね。例えば、

  • サーバーが落ちたら、オレにメールくれ
  • ウェブサーバーの応答がおかしかったら(以下略)
  • どこそこのウェブコンテンツが更新されたら(略)

ネットで探すと、この手のツールはいろいろ見つかります。例えばこんなのですね。

前者はけっこう便利です。ただし、「ping チェック」以外に応用するのは、ちと面倒くさいです。

後者は洗練されたツールなのかも知れませんが、作者の方が言うように「5分で自分のスクリプトを書ける」とは、ちょっと思えませんでした(私の理解力が足りないだけかも知れませんが)。。。具体的には、

  • 少しずつコードを書いて試すにはどうしたら良いのか、ドキュメントに書かれていない…
  • 自分のスクリプトをデバッグ中に sma.ini を取り込んで環境変数から設定値にアクセスするにはどうしたらいいの?  configparser を別途 import しないといけないの?
  • デバッグ print したいのだけど、sma コマンドが Python のエラーを吐いて止まってしまう。どこをチェックしたら良いの!?
  • 総じてドキュメントが不足しているように思うぞ。

という感じで、あまり KISS の法則に従っているとは思えません。(言いがかりみたいで、ごめんなさい。)

という訳で、こういうツールは結局、みんな自分で書いてしまうのですよね。私も(シェルスクリプトで)いろいろ書き散らしてきたのですが、少しだけ汎用性があるように、かつ今回は Python で書き直してみました。いわゆる

Yet-another(さらにもう一つの)simple mail alert ツール

です。

おそらく読んだ方は、えー、自分で書いたヤツのほうがいいな、と思われるのでしょうけど、せっかく書いたので恥をしのんで公開しちゃいます。今回のお題(目的)は、Elasticsearch に入ってくるデータソース(IoT デバイス)が停まっているときにメールが欲しい、というものです。

check() という関数をカスタマイズしてください。こいつが True を返すとメールが飛びます。ただし、MAIL_INTERVAL(秒)の間は再メールしません。(それこそ、こういう部分が皆さん自分で組みたいところなので、結局自分で書いちゃうんでしょうけどね。)

メールサーバーは Gmail を仮定していて、さらに TLS(SSL)で送ることを前提としています。違う人は、sendmail() という関数を直してください。

えい。

あとは、cron に突っ込むなりして、ご自由に利用ください。(誰も使わないかな。)

後記(2019/6/5)

今度は、DHCP サーバーをチェックするスクリプトを追加してみました。よろしければ。。。