くりにっき

フルスタックキュアエンジニアです

zatsu_monitorという雑な監視ツールを作った

社内LT大会ネタで作ったやつ(第1弾)

モチベーション

  • 社内外で公開してる個人アプリをURL監視したかった
    • 社内だとOpenStack、社外だとHerokuに計10個くらい?
    • HerokuにもRollBar *1 はあるんだけど、たまにDyno(インスタンス)の起動でこけるのは検知できない *2
  • Mackerelだと社内ツール*3 が監視できない

無いなら作ろう

github.com

使い方

雑にyamlを書いて

# zatsu_monitor.yml
google:
  type: slack
  check_url: "https://www.google.com/"
  api_token: "AAAAAAAA"
  channel: "#general"
  user_name: "zatsu_monitor"
github:
  type: chatwork
  check_url: "https://github.com/"
  api_token: "AAAAAAAA"
  room_id: "111111"

雑に実行

/path/to/zatsu_monitor -config /path/to/zatsu_monitor.yml -data /path/to/data_dir
  • -config : 設定ファイルの場所
  • -data : 直前のhttpステータスを保存するキャッシュディレクト

ステータスが変わった時だけ投稿

f:id:sue445:20160625204655p:plain

  • ホストが解決できなかった時とかは便宜上ステータス0です

仕様

yamlなので値を継承できるのが嬉しい

トークンなどを1ヶ所に定義して、監視したいサイトで継承することができます

slack: &common
  type: slack
  channel: "#general"
  api_token: "xoxp-0000000000-0000000000-0000000000-000000"

github:
  # inherit common values
  <<: *common

  # override common values
  check_url: "https://github.com/"
  chennel: "#github"

google:
  <<: *common
  check_url: "https://www.google.com/"
  chennel: "#google"

*1:アプリ内のエラーを監視するプラグイン https://rollbar.com/

*2:ログ見ても「app crashed」しか出てないので原因不明

*3:社内からしかアクセスできないアプリ