Apacheログファイルを分析するコマンドラインツール[終了]


16

分析したいApacheログファイルがたくさんあります。あまりセットアップを必要としないツールを探しています。ライブWebサーバーをいじることなく、コマンドラインからログを実行できるもの。

推奨事項はありますか?


そして、あなたが使用しようとしているOSは
...-Izzy

LinuxまたはMacOSX
...-mmattax

1
「分析」はあまり語りません。あなたは何をしようとしているのですか?文字列、クランチ番号を探しますか?
デビッド

goaccess.prosoftcorp.com自由で素晴らしいが、ここでそれを見つけた:webmasters.stackexchange.com/questions/4852/...
jitbit

回答:


7

上記のツールはすべてクールですが、質問者が何を求めていたかは知っていると思います。他のファイルでできるようにアクセスログから情報を引き出すことができないのはしばしば苦痛です。

それは、アクセスログ形式が愚かだからです:

127.0.0.1 - - [16/Aug/2014:20:47:29 +0100] "GET /manual/elisp/index.html HTTP/1.1" 200 37230 "http://testlocalhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"

なぜ日付に[]を使用し、他のものに ""を使用したのですか?彼らは、日付がフィールド4にあることを知らないと思いましたか?とてもイライラします。

現在、これに最適なツールはgawkです。

gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'

上記のデータでは、次のようになります。

"GET /manual/elisp/index.html HTTP/1.1"

つまり、FPATを使用すると、単なるスペースで区切られたエンティティではなく、実際のフィールドであるかのようにapache-logのフィールドを引き出すことができます。これは常に私が欲しいものです。その後、パイプラインでもう少し解析できます。

FSPATを機能させる方法は、http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.htmlで定義されています

したがって、Apacheログを解析できるgawkを作成するエイリアスを設定できます。

alias apacheawk="gawk -vFPAT='([^ ]+)|(\"[^\"]+\")|(\\\\[[^\\\\]]+\\\\])' " apacheawk '$6 ~ /200/ { print $5 } | sort | uniq

私のためにこれを作りました:

"GET / HTTP/1.1"
"GET /manual/elisp/index.html HTTP/1.1"
"GET /manual/elisp/Index.html HTTP/1.1"
"GET /scripts/app.js HTTP/1.1"
"GET /style.css HTTP/1.1"

そしてもちろん、今ではほとんど何でも可能です。

楽しい!


1
2備考:日付は実際にはフィールド4ではなく、フィールド4 + 5 ^^にあります(GMTからのシフトがない場合、日付にはほとんど値がありません)。また、access_logにはほとんどの場合、12フィールドの形式があります(実際、12番目は名前に多くのスペースを含むことができるhttpエージェントであるため、実際には12フィールド以上あります。最初の11フィールドは解析が容易です。残りの12番目のフィールド(およびそれ以上)は、httpエージェントである必要があります)。したがって、次のことができawk '($9 == 200) {print $6,$7,$8}'ます。例と同じものを表示します。FPATを使用する必要はありません(この方法は他の場合に便利ですが)
オリビエデュラック

あなたは批判しすぎていると思います。フィールドが[]で区切られていると考える場合、日付はフィールド4にあります。ほとんどの場合、ログファイルは1つのタイムゾーンにあるため、そのゾーンは必要ありません。この例を示す目的は、この方法で何かが排他的に可能であることを示すことではなく、一般的なトリックを示すことでした。
ニックフェリー

1
私は...非常に驚いた...私はすべての「批判」しませんでしたよ、ちょうど2人の発言を指摘(そして実際に使用した方法は、他のケースで役に立つことができると言ったが、ここだけは必要ありません)
オリヴィエデュラック

6

wtopはクールです。他のユーティリティもあります。多くの場合、bash、sed、awkを使用してログを解析します。


wtop、特にログアナライザーのlogrepは優れています。.confをログ形式に適応させると、必要なもの(トップURL、トラフィックなど)を
すばやく取得でき

6

apachetopはかなりクールです。ライブ統計を出力します。あなたはそれを実行します

apachetop -f /var/log/apache2/www.mysite.com.access.log

Debian / Ubuntuにインストールするには:

apt-get install apachetop

またはソースから:https : //github.com/JeremyJones/Apachetop


1

どのような出力が必要ですか?

数を数えたいだけなら、logfile.txtをgrepしてください。wc -lはうまく機能します。きれいなグラフが必要な場合は...それほどではありません。


Windowsの場合、findコマンドはgrepをある程度模倣します。
クリス・ナバ

0

使用できるWindowsワークステーションがある場合は、logparserが最適なツールです!


0

analogはすぐに使えて、多くのセットアップを必要としません。logwranglerは、analogと連携してより良い出力を生成するパッケージであり、セットアップもほとんど必要ありません。


0

コマンドラインツールを使用する代わりに、Apache Logs Viewerを試してみるといいでしょう。これは、Apacheログファイルを監視および分析できる無料のツールです。かなりクールなグラフとレポートをその場で生成できます。

http://www.apacheviewer.comからの詳細情報

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.