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?
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?
Yanıtlar:
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!
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)
apachetop oldukça havalı; canlı istatistikler yazdırır. Onunla koş
apachetop -f /var/log/apache2/www.mysite.com.access.log
Debian / Ubuntu'ya kurmak için:
apt-get install apachetop
veya kaynaktan: https://github.com/JeremyJones/Apachetop
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.
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