LoginSignup
2
2

More than 5 years have passed since last update.

Sensu Filter実践例

Last updated at Posted at 2015-10-16

先日のSensu Deep Talks #2では「Filter・Mutator・Aggregateの使いドコロ」を発表しました.
今回は補足として,実際に最所研究室で使用しているFilterの設定を紹介します.

アラート通知数の削減

実験等で継続的にサーバに負荷を掛けている場合,アラートが大量に通知されることがあります.
それを防ぐために,以下の2つの条件でフィルタリングしています.

  • Checkの終了ステータスが2(CRITICAL)以上の場合
  • 最初のアラート(Occurrencesが1)の場合

本番環境では使い辛いかもしれませんが,PagerDutyからの電話が鳴り続けるのは防げると思います.

/etc/sensu/conf.d/filter-recurrence.json
{
  "filters": {
    "recurrence": {
      "attributes": {
        "check": {
          "status": "eval: value > 1"
        },
        "occurrences": 1
      }
    }
  }
}

サーバーメンテナンス中の通知無効

研究室では金曜日の20〜21時にサーバの定期メンテナンスを行っています.
(全サーバのaptの更新と,必要に応じて再起動.)
パッケージ更新で負荷が上がったり,一度に行うのでハイパーバイザが悲鳴を上げたりします.

そこで,強引ですがメンテナンス中のアラートは無条件で通知しないことにしました.
メンテナンスの時間で,Checkの実行時刻(Executed)をフィルタリングしています.
注目して欲しいのは,"negate": trueで条件を逆転させている点です.
これで「メンテナンスの時間以外」はフィルタリングされません.

/etc/sensu/conf.d/filter-maintenance.json
{
  "filters": {
    "maintenance": {
      "attributes": {
        "check": {
          "executed": "eval: Time.at(value).wday == 5 && Time.at(value).hour == 20"
        }
      },
      "negate": true
    }
  }
}

おまけ

最近,研究室で利用するチャットをSlackに乗り換えました.
それに合わせて,SensuからSlackにIncoming Webhooksを使って通知するHandlerをGo言語で書きました.
(以前はhubot-sensuを使ってアラートをTypetalkに通知していました.)

handler-slack.png

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2