40

多数の HP-UX サーバーに分散された複数のテキスト ログ ファイルを簡単に監視する方法が必要です。これらは、いくつかの分散型レガシー システムからのテキストおよび XML ログ ファイルの混合です。現在、サーバーに ssh してtail -fgrepを使用するだけですが、追跡するログが多数ある場合はスケーリングしません。

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

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

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

他の簡単な方法はありますか?Chainsawで使用するためにログ ファイルを log4j 形式に変換する必要がありますか?それとも、リモート ソケットに接続できるより優れたログ ビューアーがありますか? 別のログの質問で提案されているように、BareTailを使用できますか? これは大規模な分散システムではなく、すべてのアプリケーションの現在のロギング実装を変更して、UDP ブロードキャストを使用したり、メッセージを JMS キューに入れたりすることはできません。

4

10 に答える 10

23

おそらく、リアルタイムのログ監視の最も軽量なソリューションは、tail -f を使用してDancer のシェルを並行モードで使用することです。

dsh -Mac -- tail -f /var/log/apache/*.log
  • -a は、 ~/.dsh/machines.list で定義したすべてのマシン名用です
  • -c は、テールの同時実行用です
  • -M は、出力のすべての行にホスト名を追加します。
于 2010-08-13T17:36:32.480 に答える
14

以下のような単純なシェル スクリプトを使用します。明らかに、さまざまなファイル名について通知し、どのボックスを探すかを決定するために多少調整する必要がありますが、基本的な考え方は理解できます。私たちの場合、複数のボックスの同じ場所にあるファイルをテーリングしています。これには、パスワードを入力する代わりに、保存されたキーによる 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
于 2008-10-02T19:02:31.307 に答える
5

Logscape - 値札のない splunk のようなもの

于 2012-10-12T12:26:16.520 に答える
2

マルチテール または

" chipは、システム管理者および開発者向けのローカルおよびリモートのログ解析および監視ツールです
。swatch、tee、tail、grep、ccze、および mail の機能を 1 つにラップし、いくつかの追加機能を備えています"

例えば。

chip -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 |==> /」パターンが事前にフィルター処理されます。

于 2012-04-09T16:29:16.380 に答える
2

私はまさにこの目的のために vsConsole を作成し、ログ ファイルに簡単にアクセスできるようにし、アプリの監視とバージョンの追跡を追加しました。あなたがそれについてどう思うか知りたいです。http://vs-console.appspot.com/

于 2013-02-14T09:37:04.677 に答える
2

オプション:

  1. SocketAppender を使用して、すべてのログを 1 つのサーバーに直接送信します。(これにより、サーバーのパフォーマンスが低下し、単一障害点が追加される可能性があります。)
  2. スクリプトを使用してデータを集計します。scp、ssh、および認証キーを使用して、スクリプトがログイン プロンプトなしですべてのサーバーからデータを取得できるようにします。
于 2008-09-18T12:41:50.423 に答える
1

gltail - 複数のサーバーからの Ruby、SSH、および OpenGL を使用したサーバートラフィック、イベント、および統計のリアルタイムの視覚化

于 2010-06-25T07:47:25.167 に答える
1

Awstats は、いくつかの apache ログ ファイルを一緒にマージできる perl スクリプトを提供します。このスクリプトは、メモリ フットプリントが非常に小さく、ログ ファイルがメモリに読み込まれないため、適切にスケーリングされます。あなたが必要としているものではないことはわかっていますが、おそらくこのスクリプトから始めて、ニーズに合わせて調整することができます。

于 2008-09-17T15:00:15.840 に答える
1

Java用XpoLog

于 2012-02-15T13:52:15.667 に答える
1

Chainsaw で利用可能なさまざまなレシーバー (ssh、SocketReceiver、UDPReceiver、CustomSQLDBReceiver などでファイルを追跡するための VFSLogFilePatternReceiver) を使用してから、デフォルトのタブ識別子を変更するか、「カスタム式ログパネル」を作成してログを 1 つのタブに集約できます。さまざまなソース タブのイベントに一致する式。

于 2010-01-15T05:58:43.633 に答える