share facebook facebook twitter menu hatena pocket slack

2017.12.27 WED

Sensuプラグインcheck-log.rbをログローテーション対応にする設定

木檜 和明

WRITTEN BY 木檜 和明

Sensuプラグインのcheck-log.rbを使ってログローテーションするログに対応する方法を単一ログの場合と比較して示す。

このプラグイン、監視対象となるログファイル群に圧縮ファイルが含まれている場合、設定ファイルで除外設定しても正常に動作しない。

圧縮されるということはすでに古くなって監視対象から外してもいいと割り切って、ここではプラグインを直接修正して圧縮ファイルを対象外とする。

まずプラグインを一部修正する。

/etc/sensu/plugins/check-log.rb

:
165     file_list.each do |log_file|
166       next if log_file =~ /\.gz$/ <--- 追加(対象ファイルから.gzファイルを除外)
167       begin
168         open_log log_file
169       rescue => e
:

続いて設定ファイルの記述内容を示す。関連するオプション以外の説明については割愛する。

/etc/sensu/conf.d/checks/check_log_app.json
<単一のログの場合>

対象ログを-fで指定

{
  "checks": {
    "check_log_app": {
      "command": "check-log.rb -f /var/log/app.log -c 1 -q '^E' -r",
      "handlers": [
        "slack"
      ],
      "standalone": true,
      "interval": 300,
      "occurrences": 1,
      "refresh": 60
    }
  }
}

<ログローテーションするログの場合>

対象ログを-Fで指定し、ログローテション時のプレフィックスを-lで指定(正規表現可、ただしうまく動作しない表現あり)

{
  "checks": {
    "check_log_app": {
      "command": "check-log.rb -F /var/log/app.log -l '-*' -c 1 -q '^E' -r",
      "handlers": [
        "slack"
      ],
      "standalone": true,
      "interval": 300,
      "occurrences": 1,
      "refresh": 60
    }
  }
}

この指定により、以下のようにローテーションされるタイプのログであっても各ファイルの内容が正しく監視される。

また、プラグインを修正しているので圧縮ファイルは対象外になる。

/var/log/app.log
/var/log/app.log-20171205.gz
/var/log/app.log-20171206.gz
/var/log/app.log-20171207.gz
/var/log/app.log-20171208.gz
/var/log/app.log-20171209

参考サイト

元記事はこちら

Sensuプラグインcheck-log.rbをログローテーション対応にする設定

木檜 和明

木檜 和明

遠くのクラウドと手元のIoTデバイス、両エッジをつないだものづくりがしたいと妄想中。Arduinoのコミュニテイやってます。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。