MackerelでEC2のログ監視をやってみた

ご機嫌いかがでしょうか、豊崎です。

本日はMackerelのログ監視について書いていきたいと思います。

前提

  • EC2(Amazon Linux2)にmackerel-agentをインストールして監視を行っていること
  • secureログでsudoの利用を監視する

利用AMI:amzn2-ami-hvm-2.0.20191217.0-x86_64-gp2 (ami-011facbea5ec0363b)

やってみた

Mackerelを利用してログ監視を行う場合、公式チェックプラグイン集を利用します。

まずは対象のEC2にログインし公式チェックプラグイン集をyumでインストールします。

#yum install mackerel-check-plugins

※ちなみにdebian系のパッケージ管理でインストールする場合は以下となります

#apt-get install mackerel-check-plugins

次にEC2にログインして「/etc/mackerel-agent/mackerel-agent.conf」内に以下を追記、保存をしました。

・
・
[plugin.checks.securelog]
command = ["check-log", "--file", "/var/log/secure", "--pattern", "sudo:session", "--return"]

内容についての説明

  • 監視のルール名はsecurelogとしました → [plugin.checks.securelog]
  • プラグインの"check-log"を使ってログ監視を行うため、2行目の先頭で"check-log"と宣言
  • 対象のファイル名を、--fileオプションを利用して"/var/log/secure"と指定
  • 検知したい文言を、--patternオプションを利用して"sudo:session"と指定
  • "--return"オプションを付与することで件知行がMackerelのコンソールに表示されます

設定ファイルの修正が完了したので、Mackerel-Agentの再起動を行います。


# systemctl restart mackerel-agent.service

再起動後に実際に「sudo」コマンドを実行してみたさいのMackerelコンソールが以下となります。

無事、検知できていますね!

さいごに

非常にシンプルな設定でログを監視することができました。他のオプションを利用することでより柔軟に条件の指定を行うことができますので、興味があればお試しいただければと思います。この記事が誰かのお役にたてば幸いです。

参考

補足:オプション

  • --file
    • 監視対象のファイルを指定
    • glob形式(ワイルドカード)での指定も可能
  • --pattern
    • 検知したいエラー文言を指定
    • 複数指定する場合はAND条件
    • 日本語(マルチバイト文字)の指定も可能※confファイルの文字コードがUTF-8である必要あり
  • --file-pattern
    • --fileの代わりに--file-patternオプションを使用することで、正規表現を使って対象ファイル名を指定可能
  • --check-first
    • 初回ログチェック時にファイルの内容全てをチェックする場合に指定
    • ※デフォルトでは初回チェック時、設定後に出力された差分に対してのみ実行されます
  • --return
    • エラー行がMackerelに送信され、コンソールから確認ができる
    • 個人情報などがエラー行に含まれる場合、オプションは利用しない方が吉
  • -w/--warning-over
    • 設定値より多くエラーが検出されたらwarning
  • -c/--critical-over
    • 設定値より多くエラーが検出されたらcritical
  • --exclude
    • 除外パターンを指定することが可能