ฉันจะดูได้อย่างไรว่าแต่ละ Apache Virtual Host ใช้แบนด์วิดท์เท่าใด


24

ฉันได้ตั้งค่า Apache ให้บริการโฮสต์เสมือนหลายแห่งแล้วและฉันต้องการดูว่าแต่ละแบนด์วิดท์ใช้งานไซต์เท่าใด ฉันเห็นจำนวนเซิร์ฟเวอร์ที่ใช้ทั้งหมด แต่ฉันต้องการรายงานรายละเอียดเพิ่มเติม

สิ่งที่ฉันค้นพบส่วนใหญ่มีการ จำกัด แบนด์วิดท์ให้กับโฮสต์เสมือน แต่ฉันไม่ต้องการทำเช่นนั้น ฉันแค่ต้องการดูว่าไซต์ใดใช้แบนด์วิดท์เท่าใด

สิ่งนี้ไม่ได้มีไว้สำหรับวัตถุประสงค์ในการเรียกเก็บเงิน แต่เป็นเพียงข้อมูล

มีโมดูล apache ที่ฉันควรใช้? หรือมีวิธีอื่นที่จะทำเช่นนี้?

คำตอบ:


23

ข้อมูลที่คุณกำลังหลังคือทั้งหมดในบันทึกดังนั้นคุณควรมองไปที่การวิเคราะห์เข้าสู่ระบบเช่นAWStats ตัวเลือกอื่นคือใช้ Google Analytics

สำหรับการวิเคราะห์บันทึกต่อไปนี้เป็นตัวอย่างคร่าวๆที่คุณสามารถใช้เพื่อบอกจำนวนไฟล์ทราฟฟิกของรายงานไฟล์บันทึกจากบรรทัดคำสั่ง:

cat /var/log/apache/access.log | awk '{SUM+=$10}END{print SUM/1024/1024}'

5
การใช้แมวไร้ประโยชน์: awk '... ' /var/log/apache/access.log ก็ทำงานได้เช่นกัน
marco

วิธีที่แนะนำจะคำนวณปริมาณการใช้งานที่ส่งจากหน้าเว็บบางหน้าไปยังอินเทอร์เน็ต (ปริมาณการใช้งานขาออก) หรือไม่
เลด

2
ใช่. แต่ระวังว่าคุณไม่ต้องสรุปรหัสการตอบกลับโดยบังเอิญ ฉันรู้ว่าการนับของฉันต่ำเกินไปเพราะสำหรับฉัน $ 10 คือรหัสตอบกลับ http สำหรับบันทึกที่กำหนดเอง apache ของฉันฉันต้องใช้ {SUM + = $ 11} แทน
Phil


3

ฉันขอแนะนำให้คุณใช้กลไกการบันทึก apache ที่ยอดเยี่ยมและเป็นที่รู้จักน้อยกว่านั่นคือ% Iและธง% O :

กำหนดรูปแบบ:

LogFormat "% t% a% v% U% q% I% O" IOFormat

ใช้ในhttpd.confหลักของคุณ:

CustomLog /var/log/apache2/all-bw.log IOFormat

ค่าอาจไม่ได้บันทึกข้อมูลส่วนหัวทั้งหมด แต่ค่อนข้างแม่นยำเพื่อให้ทราบถึงปริมาณการใช้งาน VirtualHost ได้อย่างแม่นยำ

สแกนบันทึกด้วยสคริปต์ perl เพื่อรวมต่อโฮสต์เสมือนทุก ๆ นาที (5 ตัวอย่าง) และส่งสิ่งนี้ไปยัง cacti

ธงเหล่านี้ให้บริการโดย mod_logio ซึ่งอาจสร้างขึ้นใน Apache ของคุณ (เช่นเดียวกับ Apache ของ Debian ของฉัน)


2
Hum เช่นเดียวกับที่ยกมาในเอกสาร Apache 2.0: โปรดทราบว่าใน httpd 2.0 ซึ่งแตกต่างจาก 1.3 สตริงการจัดรูปแบบ% b และ% B ไม่ได้แทนจำนวนไบต์ที่ส่งไปยังลูกค้า แต่เพียงขนาดเป็นไบต์ของการตอบสนอง HTTP ( ซึ่งจะแตกต่างกันเช่นหากการเชื่อมต่อถูกยกเลิกหรือหากใช้ SSL) รูปแบบ% O ที่จัดทำโดย mod_logio จะบันทึกจำนวนไบต์ที่แท้จริงที่ส่งผ่านเครือข่าย
วันที่

2

หากคุณตัดสินใจที่จะใช้ awstats กับ Apache ก็จะแสดงแบนด์วิดธ์รวมสำหรับเซิร์ฟเวอร์ทั้งหมดของคุณ

หากต้องการดูแบนด์วิดธ์บนพื้นฐานต่อโฮสต์เสมือนผมแนะนำให้ติดตั้งvlogger

Vlogger จะรวบรวมข้อมูลบันทึกการเข้าถึง Apache สำหรับโฮสต์เสมือนของคุณแต่ละตัวที่คุณตั้งค่าให้ทำในไดเรกทอรี / ไฟล์แยกกัน

ตัวอย่างเช่นหากไฟล์บันทึก Apache ของคุณอยู่ใน / var / log / apache2 การติดตั้ง vlogger ทั่วไปจะสร้างสิ่งนี้สำหรับโฮสต์เสมือนของคุณ (เช่น vhost1.com vhost2.com):

/var/log/apache2/vhost1.com/access.log
/var/log/apache2/vhost2.com/access.log

Vlogger ให้ตัวเลือกในการหมุนบันทึกเหล่านี้ให้คุณมีวิธีเปลี่ยนเทมเพลตการตั้งชื่อของไฟล์บันทึกการเข้าถึง (เช่นเพิ่มวันที่) และอ้างว่ามันจัดการไฟล์บันทึกได้ดีกว่า Apache เป็นจำนวนมาก

ข้อเสียอย่างหนึ่งคือคุณจะไม่มีมุมมองเซิร์ฟเวอร์รวมอีกต่อไป (คุณจะต้องรวมบันทึกแยกกันหรืออาจใช้การตั้งค่า apache เพิ่มเติมหรืออาจเป็นวิธีอื่น)

ฉันจะระมัดระวังไม่ให้ใช้การวิเคราะห์ของ Google (หรือการติดตามด้วยจาวาสคริปต์) สำหรับการตรวจสอบแบนด์วิดท์ของเซิร์ฟเวอร์เมื่อคุณใช้ไคลเอนต์เพื่อรายงานผ่านทางจาวาสคริปต์ GA จะไม่รายงานบุคคลที่ปิดใช้งานจาวาสคริปต์รวมถึงซอฟต์แวร์รวบรวมข้อมูล / สไปเดอร์ / บ็อต


1

นี่คือ regex บางส่วนในการแยกวิเคราะห์รูปแบบบันทึกที่เสนอโดย Xerxes

\ [([0-9] +) / (w \ +) / ([0-9] {4}) [^ \]] + \] \ s (\ d {1,3}. \ d {1, 3}. \ d {1,3}. \ d {1,3}) \ s ([^ /] +) [^ \ s] + \ s (\ + D) \ s (\ + D)

ตัวอย่างบันทึก:

[12 / Jan / 2011: 14: 25: 04 +0000] 157.157.12.206 files.hjaltijakobsson.com / 581 669 [12 / Jan / 2011: 14: 25: 04 +0000] 157.157.12.206 files.hjaltijakobsson.com / 624 747 [12 / Jan / 2011: 14: 25: 04 +0000] 157.157.12.206 files.hjaltijakobsson.com /icons/blank.gif 687 186 [12 / Jan / 2011: 14: 25: 04 +0000] 157.157 12.206 files.hjaltijakobsson.com /icons/compressed.gif 693 188 [12 / Jan / 2011: 14: 25: 04 +0000] 157.157.12.206 files.hjaltijakobsson.com /favicon.ico 592 512

ตรงกัน:

subpattern ที่ 1 (วันที่ของเดือน): 12
subpattern 2 (. abbr เดือน): ม.ค.
subpattern 3 (ปี): 2011
subpattern 4 (เจ้าภาพผู้เข้าชม): 157.157.12.206
subpattern 5 (โฮสต์เสมือน): files.hjaltijakobsson.com
subpattern 6 ( ไบต์ขาเข้า): 581
Subpattern 7 (ไบต์ขาออก): 669

ไชโย


1

ปรับแต่งเล็กน้อยในคำตอบที่ยอมรับสมมติว่ามีหลายโฮสต์จริงบนเซิร์ฟเวอร์ (และดังนั้นจึงมีหลาย site.com.access_log นี่จะเรียงลำดับและแสดงรายการ vhost แต่ละรายการ

for f in *.access_log ; do echo `awk '{SUM+=$10}END{print SUM/1024/1024}' $f` $f ; done | sort -rn | more

และสำหรับไดเรกทอรีบันทึก gzipped

for f in *.access_log.*.gz ; do echo `zcat $f|awk '{SUM+=$10}END{print SUM/1024/1024}'` $f `stat -c%z $f`; done | sort -rn | more 

0

อืมคุณอาจได้รับความเสียหายด้วย IPTables และการจับคู่สตริงเพื่อบันทึกแพ็กเก็ตสำหรับการรายงานในภายหลัง จะใช้งานได้สำหรับการเชื่อมต่อที่ไม่ใช่ SSL เท่านั้น

หรือบางสิ่งที่โปรโตคอลและเซสชั่นรู้ตัวเหมือน Snort อาจทำให้เขากลายเป็นรองเท้า ...


0

แก้ไข. การกรองบันทึกเป็นความคิดที่ดี ฉันต้องการรับแบนด์วิดธ์ของเซิร์ฟเวอร์ Apache เมื่อดาวน์โหลดไฟล์

LogFormat "%h %l %t %u \"%r\" %>s %b/%D**" combined

คำนวณ%bและ%dส่งออกซึ่งจะให้แบนด์วิธปัจจุบัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.