読者です 読者をやめる 読者になる 読者になる

vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

Mackerel事始め check-plugin ログ監視(基本設定)

check-plugin を使ってログ監視を試してみます。公式に詳しい説明があります。

check-log.conf

必須オプションは対象ファイルと検索文字列です。

[plugin.checks.test-log]
command = "/usr/local/bin/check-log --file /var/log/messages --pattern error"

複数行で記載する場合は、コマンドをシングルクォート3つで囲みます。

[plugin.checks.test-log]
command = '''
  /usr/local/bin/check-log              \
    --file /var/log/messages            \
    --pattern 'error'                   \
    --warning-over 3 --critical-over 10 \
    --return
'''

オプション

組み合わせる事で様々な要件に対応できます。
filefile-pattern は併用可能なので、1コマンドで複数ファイルを対象とするような使い方も可能なようです。 尚、複数 file 指定は後勝ちなので、単一ファイル2つというような使い方は不可です。

オプション ロングオプション 必須 説明
-f --file 監視対象ログファイルパス
-F --file-pattern 複数ファイル指定
-p --pattern 検索文字列
-E --exclude 除外文字列
-w --warning-over WARNING閾値(件数/分)
-c --critical-over CRITICAL閾値(件数/分)
--warning-level
--critical-level
-r --return エラー行通知
-i --icase 大文字小文字を区別しない
-s --state-dir ステートファイル保存場所(デフォルト:/var/mackerel-cache/check-log)
--no-state ステートファイル未使用(ログファイル全体を読む)

仕様

公式記載の内容に沿って確認します。

間隔

ログのチェックは1分ごとにおこなわれ、前回チェックした行はスキップされます。

  • ステートファイルにログファイルのバイト数を保持し、以降の行をチェック

return オプション

--return オプションを付加することで、エラー行が出力され、その内容がMackerelに送信されます。
送信内容のサイズが大きい場合、表示が切り詰められることがあります。

  • マルチバイト(日本語)対応
  • サイズ制限は約 1,000 bytes?
    • 行数にも関係がある模様 (3行検知時:約2,000 bytes / 21行検知時:約1,000 bytes を確認)
  • 複数行検知された場合、検知順にサイズ制限まで複数行通知

return 無し

f:id:htnosm:20160424080017p:plain

return 有り

f:id:htnosm:20160424080106p:plain

サイズ制限による切り捨て

f:id:htnosm:20160424081310p:plain

warning-over | critical-over オプション

設定値より多くエラー行が検出された場合にwarning
設定値より多くエラー行が検出された場合にcritical

  • 設定値より多く
    • warning-over 5 の場合、6行検知すると通知

Warning例

f:id:htnosm:20160424080505p:plain

一つのログに対して複数のチェック監視を設定

--state-dir を指定して、別の場所にステートファイルを保存するようにして下さい。

  • conf例
    • plugin.checks. 部分を変える必要有り
[plugin.checks.test-log]
command = "/usr/local/bin/check-log --file /var/log/messages --pattern error"

[plugin.checks.test-log2]
command = "/usr/local/bin/check-log --file /var/log/messages --pattern fatal" --state-dir /var/mackerel-cache/check-log2
  • 上記例の場合、ステートファイルが以下のように格納される
    • /var/mackerel-cache/check-log/var/log/messages
    • /var/mackerel-cache/check-log2/var/log/messages

復旧通知について

必ず復旧通知がされてしまうようなのですが、復旧通知を無効にする設定箇所が見つけられていません。
通知グループを設定する際の監視ルールとしては表示されますが、監視ルールの設定ページには追加されていません。 そもそも復旧通知の有無が設定できないようなので仕様なのでしょうか。