生産性向上ブログ

継続的な生産性向上を目指すエンジニアのためのブログ

sensuのログで"warning: event filtering in sensu-plugin is deprecated"という警告が表示される → 0.26で導入されたoccurrences filterについて

最近、sensuの構築を行っていると、/var/log/sensu/sensu-server.logを見たら↓のような警告が表示されていた。

{"timestamp":"2016-09-23T00:00:00.001137+0900","level":"info","message":"handler output","handler":{"type":"pipe","command":"handler-mailer.rb","severities":["warning","critical","unknown"],"name":"mail"},"output":["warning: event filtering in sensu-plugin is deprecated, see http://bit.ly/sensu-plugin\nwarning: occurrence filtering in sensu-plugin is deprecated, see http://bit.ly/sensu-plugin\nonly handling every 30 occurrences: sensu/check-disk-usage\n"]}

これについて調べていたら、0.26で"occurrences"というfilterが導入されたことが分かったので、それについてまとめる。

環境

今回の記事は、以下の環境で確認。

  • OS: Ubuntu 16.04
  • Sensu: 0.26.3

警告の背景

sensuapp.org

↑の記事で、これまではsensu-pluginのhandlerライブラリに含まれていたイベント発生を制御する仕組みが、0.26でcoreに移ったことが書かれている。

github.com

↑がcoreに含まれるようになったoccurrences extension。

理由としては、handler側で処理しているとリソースの無駄が多く、明確でなく、トラブルも多いためとのこと。

警告の消し方

まず、ログに表示されている警告を消すには、checkの定義に"enable_deprecated_filtering": falseを記述するとsensu-plugin上での制御の仕組みが実行されないようになる。おそらくこれは移行時の一時的なもので、将来的には必要なくなると思われる。

{
  "checks": {
    "check-disk-usage": {
      "command": "check-disk-usage.rb -w 80 -c 90",
      "subscribers": [
        "common"
      ],
      "interval": 60,
      "enable_deprecated_filtering": false
    }
  }
}

occurrences filterの使い方

handlerのfilterにoccurrencesを指定すると、coreに含まれているイベント制御の仕組みを有効にできる。

{
  "handlers": {
    "default": {
      "type": "pipe",
      "command": "handler-mailer.rb",
      "severities": ["warning", "critical", "unknown"],
      "filter": "occurrences"
    }
  }
}

制御の詳細はcheck側のパラメータで変更できる。

  • occurrences: このパラメータで指定された回数イベントが発生したらhandlerを実行する(default: 1)
  • refresh: このパラメータで指定された秒数が経過するまで同じイベントはhandlerを実行しない(default: 1800)

↓の設定だと、2回チェックに引っかかるまで通知は飛ばないし、1回通知が飛んだら1時間(3600秒)経つまで同じ通知は飛ばない。1回の誤検知で通知が飛ぶのを防いだり、問題発生時に短い間隔で通知が無限に飛び続けるのを防ぐために使える。

{
  "checks": {
    "check-disk-usage": {
      "command": "check-disk-usage.rb -w 80 -c 90",
      "subscribers": [
        "common"
      ],
      "interval": 60,
      "enable_deprecated_filtering": false,
      "occurrences": 2,
      "refresh": 3600
    }
  }
}

まとめ

sensuの0.26からイベント発生を制御する仕組みがsensu-pluginから、occurrencesというfilterに変わった。ログに表示される警告の消し方と、occurrences filterの使い方について記述した。

少なくとも警告については移行期の一時的なもののようなので、もう少ししたら必要なくなると思われる。occurrences filterの設定方法についてもひょっとしたら変わる可能性はある。