web-dev-qa-db-ja.com

ログにイベントがないことを監視して警告するにはどうすればよいですか?

ログがsyslog-ngにキャプチャされているので、ログを自動的に監視し、[〜#〜] no [〜#〜]ログイベントが表示された場合にアラートを受信できるようにしたいと思います。特定の基準。たとえば、サブスクリプションベースのWebサイトの場合、注文なしで6時間経過すると、この人または人のグループに電子メールまたはテキストを送信します。

それを行うための良い方法は何ですか?

3
Matt V.

http://labs.consol.de/nagios/check_logfiles は、ログファイルを監視するために使用されるNagiosプラグインです。通常、特定のパターン(エラーメッセージ)があるかどうかを確認します。しかし、これを逆にすることは不可能です。たとえば、check_logfiles --logfile /var/log/mybackup.log --criticalpattern '!backup successed'を毎朝実行すると、check_logfilesの最後の実行以降に 'backupsuccessful'メッセージエントリがなかった場合にアラートが表示されます。 。

ゲルハルト

2
user1190666

Zabbixは、Nagiosに似たもう1つの監視ソリューションです。 Zabbixには、さまざまな文字列のファイルを監視し、指定した基準(検出されたか検出されなかったか)に基づいてトリガーされたアラートを開始する機能があります。 Zabbixは、ログ内のさまざまな時点からの「振り返り」もサポートしているため、古いイベントが誤検知になるのを防ぐことができます。アラートは、電子メールまたはSMSを送信するように構成できます。

Zabbix Webサイト: http://www.zabbix.com/

Zabbixのログ監視ドキュメントの一部: http://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/log_items

2
bmurtagh

特定のイベントが少なくとも6時間ごとに発生する必要があるという情報は、ログに書き込むアプリケーションに固有であるため、イベントが発生しない場合は、それ自体を監視してログエントリを書き込むことができれば最善です。ログ情報を書き込むアプリケーションがローカルで開発されている場合は、このソリューションをお勧めします。

それが不可能な場合は、イベントがアプリケーションのできるだけ近くで発生するようにするメカニズムを維持します。おそらく、ログを実行するアプリケーションを開始するのと同じ開始スクリプトから、ウォッチドッグをバックグラウンドで開始できます。アプリケーションが停止すると、スクリプトはウォッチドッグも停止します。

何らかの理由で開始スクリプトを元の状態に保ちたい場合の別のオプションは、ログ監視を実行するcronジョブを作成することです。

どちらの場合にも。ログエントリのレベルが十分に厳しく、ログの監視に使用しているツールを使用してログエントリを確認するように警告されていることを確認してください。特定のログエントリよりも、考えていなかったが監視する必要があるものについては、より優れた、より将来性のある証拠であり、包括的であり、ログレベルをリッスンします。これは、少なくとも警告レベルを意味します。

2
Deleted

Nagiosはこれを簡単に行うことができます。個人的には、コマンドラインで簡単に実行したり、NagiosやCrontabを介して簡単にセットアップしたりできるものが好きです。

[〜#〜] logrobot [〜#〜] OPが要求していることを正確に実行できます... 1つの簡単なコマンドラインエントリで:

./logrobot autonda/prod/apps/mylogfile 60m '送信された注文' '。'1 2 Subscription_orders -ndnotfoundn

太字の文字列ともちろんログファイルのパスを必要に応じて変更するだけです。

基本的に、このコマンドは、ログファイル/ prod/apps/mylogfileに少なくとも1つの「送信された注文」エントリが見つからない場合に警告として警告します。少なくとも2つの「送信された注文」エントリがログに見つからない場合は、クリティカルとして警告します。

1
user2096757

これを処理する最も簡単な方法は、選択した言語で非常に単純なスクリプトを作成することだと思います。特定のメッセージについてsyslogをgrepし、見つからない場合は電子メールを送信する必要があります。いくつかのサニティチェックを含めると、20行を超えることは想像できません。これはcronであり、すべて設定されています。欠点は、この方法を使用すると、ログを読み取るためにcronジョブをrootとして実行する必要があることです。

また、 LogAnalyzer を確認することもできます。残念ながら、メールを送信できるかどうかは覚えていません。それにもかかわらず、MySQLを使用し、ログ情報をそこに保存します。 LogAnalyzerのセットアップでは、ログの2つのコピーが並行して実行されるため、1つはsyslogに、もう1つはDBにあります。このDBの内容を読み取ることができるユーザーがいる場合は、上記のcronジョブの実行を回避できます。それほど良くはないかもしれませんが、別の保護層を追加することができます。

0
grs

Shell/Perlスクリプトを使用してこのタスクを実行できます。シェル/ PerlスクリプトはCronを介して実行できます。

Nagiosがより良い解決策になるでしょう。これはオープンソースツールなので、何も支払う必要はありませんが、構成するためにそれと戦う必要があります。 ;)

商用製品が必要な場合は、ログファイル分析で Splunk が知られています。

0
Invent Sekar

過去N時間以内にウェブサイトで新しい注文を受け取らなかった場合にアラートが表示される、同様のことを行いました。 PushMon URLを「3時間ごと」のスケジュールで作成しました。次に、ありがとうページ(JavaScript)でPushMonURLを呼び出しました。注文がない場合、PushMonは不在着信に気づき、アラートを送信します。

PushMonは、発生しないイベントについて警告するのに適しています。

0

私が過去にこれに取り組んだ方法は、syslogトラフィックをデータベースに転送し、特定のホスト名から最後に受信したログメッセージとそのタイムスタンプをデータベースに照会することです。

これは、データベースにログを記録することによるプラスのメリットの1つにすぎません。

0
Sirex