Saya memiliki banyak file log Apache yang ingin saya analisis. Saya mencari alat yang tidak memerlukan banyak pengaturan; sesuatu yang bisa saya jalankan log melalui baris perintah, tanpa main-main di server web langsung kami.
Ada rekomendasi?
Saya memiliki banyak file log Apache yang ingin saya analisis. Saya mencari alat yang tidak memerlukan banyak pengaturan; sesuatu yang bisa saya jalankan log melalui baris perintah, tanpa main-main di server web langsung kami.
Ada rekomendasi?
Jawaban:
Sementara alat-alat di atas semuanya keren, saya rasa saya tahu apa yang ditanyakan oleh si penanya. Seringkali menyakitkan saya bahwa saya tidak dapat menarik informasi dari akses-log dengan cara yang saya bisa dengan file lain.
Itu karena format log akses yang bodoh:
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"
Mengapa mereka menggunakan [] untuk tanggal dan "" untuk hal lain? apakah mereka pikir kita tidak akan tahu kencan di bidang 4? Ini sangat membuat frustrasi.
Alat terbaik saat ini untuk ini adalah gawk:
gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'
pada data di atas ini akan memberi Anda:
"GET /manual/elisp/index.html HTTP/1.1"
Dengan kata lain, FPAT memberi Anda kemampuan untuk mengeluarkan bidang-bidang dari apache-log seolah-olah itu adalah bidang aktual, bukan hanya entitas yang dipisahkan ruang. Ini selalu yang saya inginkan. Saya kemudian dapat menguraikannya sedikit lebih dengan pipa.
Membuat pekerjaan FSPAT didefinisikan di sini: http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html
Karena itu Anda dapat mengatur alias untuk membuat gawk yang dapat mengurai log apache:
alias apacheawk="gawk -vFPAT='([^ ]+)|(\"[^\"]+\")|(\\\\[[^\\\\]]+\\\\])' "
apacheawk '$6 ~ /200/ { print $5 } | sort | uniq
membuat ini untukku:
"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"
dan tentu saja hampir semua hal lain sekarang mungkin.
Nikmati!
awk '($9 == 200) {print $6,$7,$8}'
untuk menampilkan hal yang sama seperti pada contoh Anda. Tidak perlu menggunakan FPAT di sana (meskipun metode ini dapat berguna dalam kasus lain)
wtop itu keren. Ada utilitas lain juga. Seringkali, saya akan mengurai log menggunakan bash, sed, dan awk.
apachetop sangat keren; itu mencetak statistik langsung. Anda menjalankannya dengan
apachetop -f /var/log/apache2/www.mysite.com.access.log
Untuk menginstalnya di Debian / Ubuntu:
apt-get install apachetop
atau dari sumber: https://github.com/JeremyJones/Apachetop
Output seperti apa yang Anda inginkan?
Jika Anda hanya ingin menghitung sesuatu, maka ambil sesuatu logfile.txt | wc -l bekerja dengan baik. Jika Anda ingin grafik yang cantik ... jangan terlalu banyak.
Alih-alih menggunakan alat baris perintah saya akan suggeset untuk mencoba Apache Logs Viewer. Ini adalah alat gratis yang dapat memonitor dan menganalisis File Log Apache. Ini dapat menghasilkan beberapa grafik dan laporan yang keren.
Info lebih lanjut dari http://www.apacheviewer.com