2008-09-17 6 views
40

複数のHP-UXサーバに分散された複数のテキストログファイルを簡単に監視する必要があります。それらは、いくつかの分散レガシーシステムからのテキストとXMLログファイルの組み合わせです。現在のところ、サーバにsshを接続し、tail -fgrepを使用していますが、追跡するログが多数ある場合は縮尺されません。複数のログファイルを複数のサーバから集約する最も良い方法

ログはさまざまな形式であり、フォルダ内のファイル(特定のサイズに達すると自動的にローテーションされるため)をリモートで収集し、それぞれを別々に解析する必要があります。

最初の考えでは、各ファイルタイプごとにカスタムファイルリーダーを使用して各サーバー上で実行できるシンプルなデーモンプロセスを作成して、ソケット経由でネットワーク経由でエクスポートできる共通形式に解析しました。ローカルで実行されている別のビューアプログラムは、これらのソケットに接続し、解析されたログを簡単なタブ付きGUIに表示するか、コンソールに集約します。

このように実装する場合、どのログ形式に変換する必要がありますか?

他にも簡単な方法がありますか? Chainsawと一緒に使用するログファイルをlog4j形式に変換するか、リモートソケットに接続できるログビューアが優れているかどうかを確認してください。 another log questionに示唆されているようにBareTailを使用できますか?これはmassivly distributed systemではなく、すべてのアプリケーションでUDPブロードキャストを使用するか、JMSキューにメッセージを入れるように現在のログ実装を変更することはオプションではありません。

+0

私は現在、ログの興味深い部分(例外、サーバーの負荷とユーザーの統計情報)を共有し、管理者の内部ステータスページに表示することでこの問題を解決しました。ノイズの多いログファイルをフォローするよりもうまく動作します。 –

+1

http://serverfault.com/questions/180392/how-to-collect-and-aggregate-logs-from-multiple-machines-in-amazon-aws-environme – ripper234

+2

[logstash](https: //docs.google.com/present/view?id=dcmwwd94_16dfdxgpw8&pli=1)?これは、入力、出力、およびフィルタオプションの負荷があります。 – Varun

答えて

2

オプション:

  1. 直接1つのサーバにすべてのログを送信するためにSocketAppenderを使用してください。これにより、パフォーマンスが阻害され、単一障害点が追加される可能性があります。
  2. データを集約するためにスクリプトを使用します。 scp、ssh、および認証キーを使用して、ログインプロンプトなしですべてのサーバからデータを取得できるようにします。
1

Awstatsには、いくつかのApacheログファイルを併合できるperlスクリプトが用意されています。メモリフットプリントが非常に小さいため、ログファイルがメモリにロードされないため、このスクリプトはうまくスケーリングされます。 私はそれがあなたが必要とするものではないことを知っていますが、おそらくあなたはこのスクリプトから始めて、あなたのニーズに合わせてそれを適応させることができます。

12

以下のような単純なシェルスクリプトを使用します。あなたは明らかに、異なるファイル名についてそれを伝え、どちらのボックスを探すかを決めるために幾分それを調整しなければならないでしょうが、あなたは基本的なアイデアを得ます。私たちの場合、複数のボックスの同じ場所にあるファイルをテールしています。これには、パスワードを入力するのではなく、ストアド・キーによるssh認証が必要です。 にできないというマイク・ファンクさんのコメントについて

#!/bin/bash 
FILE=$1 
for box in box1.foo.com box2.foo.com box3.foo.com box4.foo.com; do 
    ssh $box tail -f $FILE & 
done 

は^ Cでテーリング殺す、私は multitails.shというファイルに上記を保存し、それの最後に以下を追加しました。これにより、tailingが完了したときに実行するkill_multitails.shファイル が作成され、それ自体が削除されます。あなたは(SSH経由でテールファイル、SocketReceiver、UDPReceiver、CustomSQLDBReceiverなどにVFSLogFilePatternReceiver)チェーンソーで使用できるさまざまな受信機を使用して、デフォルトのタブの識別子を変更したり、作成することによって、単一のタブにログを集約することができます

# create a bash script to kill off 
# all the tails when you're done 
# run kill_multitails.sh when you're finished 

echo '#!/bin/sh' > kill_multitails.sh 
chmod 755 kill_multitails.sh 
echo "$(ps -awx | grep $FILE)" > kill_multitails_ids 
perl -pi -e 's/^(\d+).*/kill -9 $1/g' kill_multitails_ids 
cat kill_multitails_ids >> kill_multitails.sh 
echo "echo 'running ps for it'" >> kill_multitails.sh 
echo "ps -awx | grep $FILE" >> kill_multitails.sh 
echo "rm kill_multitails.sh" >> kill_multitails.sh 
rm kill_multitails_ids 


wait 
1

さまざまなソースタブのイベントに一致する式を指定することで、 'カスタム式のlogpanel'を作成できます。

1

gltail - サーバトラフィックのリアルタイム可視化、複数のサーバ

+0

glTailはクールですが、ログファイルを検索してフィルタリングするための簡単で効率的な方法のほうがはるかです。 –

19

からルビー、SSHおよびOpenGLとイベントと統計おそらく、リアルタイムのログウォッチングのための最軽量のソリューションをと並行モードでDancer's shellを使用することですテール-f:

dsh -Mac -- tail -f /var/log/apache/*.log 
  • -aを使用すると、-cは尾
  • 01の同時実行のためにある〜/ .dsh/machines.list
  • で定義されたすべてのマシン名です
  • -Mは、すべての出力行にホスト名を付加します。
+0

コンピュータ – coderatchet

+0

によってスポンサーされましたこれはすばらしいおかげです! dshは 'dsh.conf'で' remoteshell = ssh'が指定された場合、または '-r ssh'のように引数として渡された場合、'〜/ .ssh/config'を使用することができます。グループ定義を作成することもできます(少なくとも〜/ .dsh/group/prod.webなどのホームフォルダにインストールされているBREWバージョン)。コマンドを少し変更してください: 'dsh -Mc -g prod.web'。 –

2

multitail または

chipは、システム管理者や開発者のためのローカルおよびリモートログ解析およびモニタリングツールです。
それは見本の機能をラップし、ティー、尾、grep、ccze、mailを1つにして、いくつかのエキストラを追加しました。 "

例: '*'

チップ-f -m0 = 'RUN' -s0 = '赤' -M1 = -s1 USER1 @ remote_ip1: "は/ var/log/LOG1は/ var/log/LOG2は/ var//ログインlog3 user2 @ remote_ip2: '/ var/log/log1/var/log/log2/var/log/log3' '

これは、すべてのログファイルから 'RUN | ==> /'パターンを事前にフィルタリングする-m0パターンの出現を赤で強調表示します。

5

Logscapeは - ログファイルに簡単にアクセスできます - - 値札

2

なしSplunkのように私は、まさにこの目的のためにvsConsoleを書いた後、アプリケーションの監視とバージョンの追跡を追加しました。あなたが何を考えているか知りたいですか? http://vs-console.appspot.com/

関連する問題