Apache günlük dosyalarını analiz etmek için komut satırı araçları [kapalı]


16

Analiz etmek istediğim bir sürü Apache günlük dosyası var. Fazla kurulum gerektirmeyen bir araç arıyorum; canlı web sunucularımıza bulaşmadan komut satırı üzerinden bir günlük çalıştırabileceğim bir şey.

Herhangi bir tavsiye?


Ve kullanacağınız işletim sistemi ...
Izzy

Linux veya MacOSX ...
mmattax

1
"Analiz" fazla bir şey söylemiyor. Ne yapmaya çalışıyorsun? Bir string mi, crunch numaraları mı arıyorsunuz?
David

Yanıtlar:


7

Yukarıdaki araçların hepsi havalı olsa da, soru soranın ne istediğini biliyorum. Sık sık diğer dosyalarda olduğu gibi bilgileri bir erişim günlüğünden çekemediğim için üzülüyorum.

Aptal erişim günlüğü biçimi nedeniyle:

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"

Neden tarih için [] ve başka şeyler için "" kullandılar? 4. alanda bir tarih olduğunu bilemeyeceğimizi mi düşünüyorlardı? İnanılmaz derecede sinir bozucu.

Bunun için şu anda en iyi araç gawk:

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

yukarıdaki verilerde bu size:

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

Başka bir deyişle, FPAT size apache-log alanlarını, sadece boşlukla ayrılmış varlıklar yerine gerçek alanlarmış gibi çıkarma yeteneği verir. Her zaman istediğim bu. Daha sonra bir boru hattıyla biraz daha ayrıştırabilirim.

FSPAT'ın çalışması burada tanımlanmıştır: http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html

Bu nedenle, apache günlüklerini ayrıştırabilecek bir gawk yapmak için bir takma ad oluşturabilirsiniz:

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

bunu benim için yaptı:

"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"

ve tabii ki hemen hemen her şey mümkün.

Zevk almak!


1
2 açıklama: Tarih gerçekten alan 4'te değil, alan 4 + 5 ^ ^ (GMT'den geçiş olmadan, tarihin çok az değeri vardır). Ve bir access_log çoğu zaman 12 alan formuna sahiptir (aslında, 12'si adında birçok boşluk içerebilen http aracısı olduğundan 12'den fazla alan olabilir. İlk 11 alanın ayrıştırılması kolaydır, ve kalan 12. alan (ve belki daha fazlası) http aracısı olmalıdır). Böylece şunları yapabilirsiniz: awk '($9 == 200) {print $6,$7,$8}'örneğinizle aynı şeyi görüntülemek için. Orada FPAT kullanmaya gerek yok (bu yöntem diğer durumlarda yararlı olsa da)
Olivier Dulac

Bence fazla eleştiriyorsun. Alanın [] ile sınırlı olduğunu düşünüyorsanız, tarih alan 4'te yer alır. Çoğu zaman bir günlük dosyası tek bir saat dilimindedir, bu nedenle bölge gerekli değildir. Örneği göstermenin amacı, bir şeyin sadece bu şekilde mümkün olduğunu göstermek değil, genel hileyi göstermekti.
nic ferrier

1
Çok şaşırdım ... Hiç "eleştirmedim", sadece 2 açıklama sordum (ve kullandığınız yöntemin gerçekten diğer durumlarda yararlı olabileceğini söyledi, ama burada sadece gerekli değil) ...
Olivier Dulac

6

wtop iyidir. Başka araçlar da var. Genellikle günlükleri bash, sed ve awk kullanarak ayrıştıracağım.


wtop ve özel olarak onların log analizörü logrep harika, .conf günlük biçiminize uyarladıktan sonra ihtiyacınız olanı (top url, trafik, vb ..) almak için hızlı bir yol sağlayacaktır
aseques


1

Ne tür çıktılar istiyorsunuz?

Eğer sadece şeyleri saymak için arıyorsanız o zaman bir şey grep logfile.txt | wc -l harika çalışıyor. Güzel grafikler istiyorsanız ... çok fazla değil.


Windows için find komutu bir dereceye kadar grep taklit eder.
Chris Nava

0

Eğer kullanabileceğiniz bir windows iş istasyonunuz varsa logparser tercih edilen araçtır!


0

analog kutunun dışında iyi çalışır ve çok fazla kurulum gerektirmez. logwrangler daha iyi çıktılar üretmek için analog ile çalışan ve aynı zamanda az kurulum gerektiren bir pakettir.


0

Bir komut satırı aracı kullanmak yerine Apache Logs Viewer'ı denemek için öneri verdim. Apache Günlük Dosyasını izleyebilen ve analiz edebilen ücretsiz bir araçtır. Anında oldukça güzel grafikler ve raporlar oluşturabilir.

Http://www.apacheviewer.com adresinden daha fazla bilgi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.