8

ログ ファイルのトラブルシューティング、分析、およびフィルタリングは、最も骨の折れる日常業務の 1 つです。私の問題は、サイズが 4 ギガをはるかに超える可能性があるログ ファイルを検索することです。ファイルをロードするだけで最大 15 分かかります。8 ギガのメモリを搭載したかなり高速なプロセッサを実行しています。ファイルがロードされた後、文字通り、grep や control+F を使ってファイルをスキャンするしかありません。これは、複数のシステムから、それぞれが 1 ギガを超えるファイルを検索しようとすると、さらに悪化します。タイムスタンプに基づいてファイルを分離してファイルを小さくしようとしましたが、本当に喜びはありません.

トラブルシューティングの時間を短縮するために使用できるツールまたはプロセスはありますか (通常の「最初にバグを修正するだけ」とは別に)。

コメントをお待ちしております。

4

4 に答える 4

8

何を載せているのですか?4 GB はかなり大きなファイルですが、メモリにロードするのにそれほど時間はかかりません。

ファイルが大きい場合は、grep を直接使用することをお勧めします。grep が自動的に実行しない場合は、SED と AWK が役に立ちます。リアルタイムで実行する場合は、これらのツールをパイプおよび と組み合わせて使用​​する方法を学んでくださいtail -f

はい、わかっています。SED は最初は非常に威圧的です。それも恐るべき威力です。学べ。

Windows を使用している場合は、同情します。UNIX シェルをお勧めできますか?

コマンド ライン ツールが苦手な場合は、Perl または Python の学習を検討してください。どちらも、このような大きなファイルでノイズから信号を分類するのに非常に優れています。

于 2010-10-28T02:56:38.823 に答える
1

Baretail is a good tool to have. Give it a try. I haven't used it for 4 gigs files but my log files are also quite big and it works just fine. http://www.baremetalsoft.com/baretail/index.php

edit: I did not see that someone has already suggested baretail.

于 2010-10-28T03:15:51.340 に答える
1

If you want to exclude lines of things you don't want to see, you can grep -v 'I dont wanna see this' > logWithExcludedLines.log. You can use regex as well grep -vE 'asdf|fdsa' > logWithNoASDForFDSA.log

This method works very well with apache access logs grep -v 'HTTP/1.1 200' > no200s.log (or something like that, don't remember the exact string).

于 2010-10-28T03:20:48.673 に答える
0

私は現在、UNIXコマンドラインツール(f)grep、awk、cut、joinなどを使用してそのようなことを行っています。これらは、cygwinまたはUnxUtilsなどを備えたウィンドウでも利用できます。また、より多くのことのためにいくつかのScalaスクリプトを使用しています複雑。複数のファイルのログファイル エントリにまたがる検索を実行するスクリプトを作成できます。しかし、それよりも優れたものがあるかどうかも疑問に思っています-おそらくそれらをデータベースにインポートします(どちらもSOの質問です)?

ところで、ハードディスクを SSD ドライブに交換してください。これらはずっと速いです!また、ログを検索するときにディスクがボトルネックになるため、ログをディスクに gzip 圧縮したままにしておくことにも費用がかかります。たとえば、ログファイルで正規表現を検索していて、出現ごとに 100 行のコンテキストが必要な場合は、次のようにします。

zcat *.log.gz | grep -100 '{regexp}' > {outputfile}

出力ファイルをお気に入りのテキストファイル ビューアにロードします。固定文字列を検索する場合は、 (追加オプション とfgrep同じ) を使用します。これははるかに高速です。grep-F

于 2010-12-08T17:31:38.073 に答える