UNIX / Linuxマシンからのログファイルをどのように分析していますか?数百台のサーバーを実行し、それらはすべて直接またはsyslogを介して独自のログファイルを生成します。これらを集約し、重要なイベントを選択するための適切なソリューションを探しています。この問題は、3つのコンポーネントに分類されます。
1)メッセージ転送
古典的な方法は、syslogを使用してメッセージをリモートホストに記録することです。これは、syslogにログインするアプリケーションでは正常に機能しますが、ローカルファイルに書き込むアプリケーションではあまり役に立ちません。この解決策としては、syslogを使用してメッセージを送信するプログラムに接続されたFIFOにアプリケーションをログインさせるか、ローカルファイルをgrepして中央のsyslogホストに出力を送信するものを書き込むことがあります。ただし、syslogにメッセージを取り込むためのツールを作成する手間がかかった場合、syslogよりも柔軟性と信頼性が高いFacebookのScribeのようなものに全体を置き換える方が良いでしょうか?
2)メッセージの集約
ログエントリは、ホストごととサービスごとの2つのタイプのいずれかに分類されるようです。ホストごとのメッセージは、1台のマシンで発生するメッセージです。ディスク障害または疑わしいログインを考えてください。サービスごとのメッセージは、サービスを実行しているホストのほとんどまたはすべてで発生します。たとえば、ApacheがSSIエラーを検出したときを知りたいが、100台のマシンで同じエラーが発生したくない場合です。いずれの場合も、各タイプのメッセージのうち1つだけを表示する必要があります。同じディスクに障害が発生したことを示す10個のメッセージは必要ありません。
これを解決する1つの方法は、同じタイプの複数のメッセージを各ホストで1つに集約し、メッセージを中央サーバーに送信してから、同じ種類のメッセージを1つの全体的なイベントに集約することです。SERはこれを行うことができますが、使用するのは厄介です。数日いじった後でも、基本的な集計のみが機能し、イベントを相関させるためにSERが使用するロジックを常に検索する必要がありました。それは強力ですが、トリッキーなものです:私は、同僚が最短時間で拾って使用できるものが必要です。SERルールはその要件を満たしていません。
3)アラートの生成
興味深いことが起こったときに、管理者にどのように伝えるのですか?グループ受信ボックスにメールしますか?Nagiosに注入しますか?
それでは、この問題をどのように解決していますか?私は皿に答えを期待していません。詳細を自分で解決することはできますが、確かに一般的な問題が何であるかについてのいくつかの高レベルの議論は素晴らしいでしょう。現時点では、cronジョブ、syslog、およびイベントを見つけるために他に何を知っているのかというミッシュマッシュを使用しています。これは拡張性、保守性、柔軟性に欠けるので、そうすべきではない多くのものを見逃しています。
更新: Nagiosを既に監視に使用しています。これは、検出されたホスト/サービスのテストなどには最適ですが、ログファイルのスクレイピングにはあまり役立ちません。Nagiosのログプラグインがあることは知っていますが、ホストごとのアラートよりもスケーラブルで階層的なものに興味があります。