複数のHP-UXサーバーに分散された複数のテキストログファイルを監視する簡単な方法が必要です。それらは、いくつかの分散型レガシーシステムからのテキストとXMLログファイルの混合です。現在、サーバーにSSHで接続し、tail -fとgrepを使用していますですが、追跡するログが多い場合はスケーリングされません。
ログはさまざまな形式であり、フォルダー内のファイル(特定のサイズに達すると自動的にローテーションされる)だけなので、リモートで収集し、それぞれを異なる方法で解析する必要があります。
私の最初の考えは、各ファイルタイプのカスタムファイルリーダーを使用して各サーバーで実行できるシンプルなデーモンプロセスを作成し、ソケットを介してネットワーク経由でエクスポートできる一般的な形式に解析することでした。ローカルで実行されている別のビューアプログラムがこれらのソケットに接続し、解析されたログをいくつかの単純なタブ付きGUIに表示するか、コンソールに集約します。
この方法で実装する場合、どのログ形式に変換する必要がありますか?
他にもっと簡単な方法はありますか? Chainsaw で使用するためにログファイルをlog4j形式に変換する必要がありますか、それともリモートソケットに接続できるより優れたログビューアがありますか? 別のログ質問 で提案されているように、 BareTail を使用できますか?これは 大規模分散システム ではなく、すべてのアプリケーションの現在のロギング実装を変更して、UDPブロードキャストを使用したり、JMSキューにメッセージを書き込んだりすることはできません。
オプション:
おそらく、リアルタイムのログ監視のための最も軽量なソリューションは、 Dancer's Shell をtail -fを使用して並行モードで使用することです。
dsh -Mac -- tail -f /var/log/Apache/*.log
以下のような単純なシェルスクリプトを使用します。明らかに、さまざまなファイル名について通知し、どのボックスを検索するかを決定するために多少調整する必要がありますが、基本的なアイデアは得られます。私たちのケースでは、複数のボックスの同じ場所にファイルをテーリングしています。これには、パスワードを入力する代わりに、保存されたキーを介した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でテーリングを削除できないというMike Funkのコメントに関して、私はmultitails.shと呼ばれるファイルに上記を保存し、その末尾に以下を追加しました。これにより、テーリングが完了したときに実行するkill_multitails.shファイルが作成され、それ自体が削除されます。
# 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
Logscape -価格タグのないsplunkのような
私はまさにこの目的のためにvsConsoleを作成しました-ログファイルへの簡単なアクセス-そしてアプリの監視とバージョン追跡を追加しました。あなたがそれについてどう思うか知りたいです。 http://vs-console.appspot.com/
multitail または
" chip は、システム管理者および開発者向けのローカルおよびリモートのログ解析および監視ツールです。
スウォッチ、ティー、テール、grep、ccze、およびメールの機能を、いくつかの追加機能でラップします。 "
例えば。
チップ-f -m0 = 'RUN' -s0 = 'red' -m1 = '。*' -s1 user1 @ remote_ip1: '/ var/log/log1/var/log/log2/var/log/log3 user2 @ remote_ip2 : '/ var/log/log1/var/log/log2/var/log/log3' '| egrep "RUN | ==> /"
これにより、-m0パターンの発生が赤で強調表示され、すべてのログファイルから「RUN | ==> /」パターンが事前にフィルタリングされます。
チェーンソーで使用できるさまざまなレシーバー(ssh、SocketReceiver、UDPReceiver、CustomSQLDBReceiverなどを介してファイルをテールするVFSLogFilePatternReceiver)を使用し、デフォルトのタブ識別子を変更するか、提供することによって「カスタム式ログパネル」を作成することにより、ログを単一のタブに集約できます。さまざまなソースタブのイベントに一致する式。
XpoLog for Java
gltail-複数のサーバーからのRuby、SSH、OpenGLによるサーバートラフィック、イベント、統計のリアルタイム可視化
Awstatsは、複数のApacheログファイルをマージできるPerlスクリプトを提供します。このスクリプトは、メモリフットプリントが非常に小さいため、適切にスケーリングされ、ログファイルがメモリに読み込まれることはありません。私はそれがあなたが必要としているものと正確に同じではないことを知っていますが、おそらくあなたはこのスクリプトから始めて、それをあなたのニーズに適応させることができます。