ฉันมีไฟล์บันทึกของ Apache มากมายที่ฉันต้องการวิเคราะห์ ฉันกำลังมองหาเครื่องมือที่ไม่ต้องการการตั้งค่ามากนัก สิ่งที่ฉันสามารถเรียกใช้บันทึกผ่านบรรทัดคำสั่งโดยไม่ต้องยุ่งเกี่ยวกับเว็บเซิร์ฟเวอร์สดของเรา
คำแนะนำใด ๆ
ฉันมีไฟล์บันทึกของ Apache มากมายที่ฉันต้องการวิเคราะห์ ฉันกำลังมองหาเครื่องมือที่ไม่ต้องการการตั้งค่ามากนัก สิ่งที่ฉันสามารถเรียกใช้บันทึกผ่านบรรทัดคำสั่งโดยไม่ต้องยุ่งเกี่ยวกับเว็บเซิร์ฟเวอร์สดของเรา
คำแนะนำใด ๆ
คำตอบ:
ในขณะที่เครื่องมือต่าง ๆ ข้างต้นนั้นยอดเยี่ยมฉันคิดว่าฉันรู้ว่าผู้ถามถามอะไร บ่อยครั้งที่ฉันไม่สามารถดึงข้อมูลออกจากบันทึกการเข้าถึงในแบบที่ฉันสามารถทำได้กับไฟล์อื่น ๆ
เป็นเพราะรูปแบบบันทึกการเข้าถึงที่เป็นใบ้:
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
คุณสามารถตั้งค่านามแฝงเพื่อสร้าง gawk ที่สามารถวิเคราะห์บันทึก apache:
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"
และแน่นอนเกือบทุกอย่างเป็นไปได้ตอนนี้
สนุก!
awk '($9 == 200) {print $6,$7,$8}'
เพื่อแสดงสิ่งเดียวกับในตัวอย่างของคุณ ไม่จำเป็นต้องใช้ FPAT ที่นั่น (แม้ว่าวิธีนี้สามารถใช้งานได้เต็มในกรณีอื่น ๆ )
wtopนั้นยอดเยี่ยม มีสาธารณูปโภคอื่น ๆ เช่นกัน บ่อยครั้งที่ฉันจะแยกวิเคราะห์บันทึกโดยใช้ bash, sed และ awk
apachetopค่อนข้างเย็น มันพิมพ์สถิติสด คุณรันด้วย
apachetop -f /var/log/apache2/www.mysite.com.access.log
วิธีติดตั้งใน Debian / Ubuntu:
apt-get install apachetop
หรือจากแหล่งที่มา: https://github.com/JeremyJones/Apachetop
เอาท์พุทแบบไหนที่คุณต้องการ?
หากคุณเป็นเพียงแค่มองหาสิ่งที่นับแล้วgrep บางสิ่งบางอย่าง logfile.txt | wc -l ใช้งานได้ดี ถ้าคุณต้องการกราฟสวย ... ไม่มาก
หากคุณมี windows เวิร์กสเตชันที่คุณสามารถใช้งานแล้ว logparser เป็นเครื่องมือที่เลือก!
อะนาล็อกทำงานได้ดีนอกกรอบและไม่ต้องตั้งค่ามากนัก logwrangler เป็นแพคเกจที่ทำงานร่วมกับระบบอนาล็อกเพื่อสร้างเอาต์พุตที่ดีกว่าและยังต้องมีการตั้งค่าเล็กน้อย
แทนที่จะใช้เครื่องมือบรรทัดคำสั่งฉันจะแนะนำให้ลองใช้ Apache Logs Viewer เป็นเครื่องมือฟรีที่สามารถตรวจสอบและวิเคราะห์ Apache Log File มันสามารถสร้างกราฟและรายงานที่น่าสนใจได้
ข้อมูลเพิ่มเติมจากhttp://www.apacheviewer.com