web-dev-qa-db-ja.com

syslogを監視し、イベントに基づいて通知を送信するにはどうすればよいですか?

1つのデバイス/サーバーからUbuntuサーバーにsyslogを送信します。

Ubuntuサーバー(syslogを受信)で、特定のsyslogメッセージが到着したときにスクリプトをトリガーしたい。

これは可能ですか?

1
SofaKng

通知が送信されるのではなく、質問が少し変更され、スクリプトを対象にしているようです。この答えは後で削除するかもしれません。

Rsyslogに渡されたメッセージに基づいてシェルスクリプトのリアルタイムトリガーを設定するのは かなり簡単 のようです。 OPが彼の回答を書き直して、彼が目指していることのより良い絵を含むようにした場合(コメントに既に投稿されているように)、私はここで質の高い回答を提供したいと思っています。

要件が正確にわからないが、私がお勧めできる特定のソフトウェアは logcheck です。これはあなたの状況でも役に立つかもしれません。

その目的は、特定の一致した(興味深い)行にメールダイジェストを送信することです。基本的なメール構成が既に機能している(たとえば、echo bla | mail -s testmail [email protected]が機能している)と想定しています。ログのローテーションを処理し、ログがどこに残っているかを知っているので、スクリプトでもう心配する必要はありません。

このチュートリアル から重要なステップのいくつかを抽出しました:

  1. /etc/logcheck/logcheck.confで基本的な設定を行います:

    REPORTLEVEL="server"          # default reportlevel with pre-configured filters
    SENDMAILTO="[email protected]"
    
  2. チェックインするログファイル/etc/logcheck/logcheck.logfiles

    /var/log/syslog
    /var/log/auth.log
    /var/log/myapp.log
    
  3. ここで、次のような特定の行でトリガーするように指示します

    myapp: Error: Login failed for admin123
    

    このmyappログ​​の場合、これは/etc/logcheck/ignore.d.server/myappで正規表現を作成することで実現できます(以前に使用したserverに対応するREPORTLEVELに注意してください)。

    ^myapp:.*
    

    わかりました、これは最も具体的な正規表現ではありませんが、それがポイントではありません。

  4. メールが届くのを待ちます。例:

    Subject: webserver.domain.tld 2013-01-01 10:17 System Events
    
    Jan 01 09:40:59 webserver myapp: IMAP Error: Login failed for gertvdijk
    
3
gertvdijk