Làm cách nào tôi có thể thấy bao nhiêu băng thông mà mỗi Máy chủ ảo Apache đang sử dụng?


24

Tôi đã cài đặt Apache để phục vụ một số Máy chủ ảo và tôi muốn xem mỗi trang web sử dụng bao nhiêu băng thông. Tôi có thể thấy toàn bộ máy chủ sử dụng bao nhiêu, nhưng tôi muốn báo cáo chi tiết hơn.

Hầu hết những điều tôi đã tìm ra là để giới hạn băng thông cho các máy chủ ảo, nhưng tôi không muốn làm điều đó; Tôi chỉ muốn xem các trang web đang sử dụng bao nhiêu băng thông.

Đây không phải là cho mục đích thanh toán, chỉ cho thông tin.

Có một mô-đun apache tôi nên sử dụng? Hoặc có một số cách khác để làm điều này?

Câu trả lời:


23

Thông tin bạn theo dõi là tất cả trong nhật ký, vì vậy bạn nên xem xét một công cụ phân tích nhật ký như AWStats . Tùy chọn khác là sử dụng Google Analytics.

Để phân tích nhật ký, đây là một ví dụ sơ bộ mà bạn có thể sử dụng để cho bạn biết có bao nhiêu MB lưu lượng mà tệp nhật ký báo cáo từ dòng lệnh:

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

5
việc sử dụng mèo vô dụng: awk '...' /var/log/apache/access.log cũng hoạt động
marco

Cách được đề xuất sẽ tính lưu lượng được gửi từ một số trang web tới Internet (lưu lượng truy cập đi)?
Khaled

2
Vâng. Nhưng hãy cẩn thận rằng bạn không tổng hợp các mã phản hồi một cách tình cờ. Tôi nhận ra số lượng của mình quá thấp vì đối với tôi $ 10 là mã phản hồi http. Đối với nhật ký tùy chỉnh apache của tôi, tôi cần sử dụng {SUM + = $ 11}.
Phil


3

Tôi khuyên bạn nên sử dụng cơ chế ghi nhật ký apache tuyệt vời và các cờ % I% O ít được biết đến của nó :

Xác định định dạng:

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

Sử dụng nó trong httpd.conf chính của bạn :

Nhật ký tùy chỉnh /var/log/apache2/all-bw.log IOFormat

Các giá trị có thể không hạch toán tất cả thông tin tiêu đề, nhưng khá chính xác để có ý tưởng chính xác về lưu lượng Virtualhost.

Quét các bản ghi với một tập lệnh perl để tổng hợp trên mỗi máy chủ ảo cứ sau n phút (ví dụ 5) và gửi nó đến cacti.

Các cờ này được cung cấp bởi mod_logio, có thể được xây dựng trong Apache của bạn (giống như với Apache của Debian của tôi).


2
Hum, cũng như được trích dẫn trong tài liệu Apache 2.0: Lưu ý rằng trong httpd 2.0, không giống như 1.3, chuỗi định dạng% b và% B không biểu thị số byte được gửi đến máy khách, mà chỉ đơn giản là kích thước tính theo byte của phản hồi HTTP ( ví dụ, sẽ khác nhau nếu kết nối bị hủy bỏ hoặc nếu SSL được sử dụng). Định dạng% O được cung cấp bởi mod_logio sẽ ghi lại số byte thực tế được gửi qua mạng.
10

2

Nếu bạn quyết định sử dụng awstats với Apache, thì trong hộp đó sẽ hiển thị cho bạn băng thông tổng hợp cho toàn bộ máy chủ của bạn.

Để xem băng thông trên cơ sở máy chủ ảo, tôi khuyên bạn nên cài đặt vlogger .

Vlogger thực sự sẽ thu thập thông tin nhật ký truy cập Apache cho từng máy chủ ảo mà bạn thiết lập để thực hiện trong các thư mục / tệp riêng biệt.

Ví dụ: nếu tệp nhật ký Apache của bạn nằm trong / var / log / apache2, cài đặt vlogger điển hình sẽ tạo ra một cái gì đó như thế này cho các máy chủ ảo của bạn (ví dụ: vhost1.com vhost2.com):

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

Vlogger cung cấp cho bạn tùy chọn xoay các nhật ký này cho bạn, cung cấp cách thay đổi mẫu đặt tên của tệp nhật ký truy cập (ví dụ: thêm một ngày) và tuyên bố nó xử lý một số lượng lớn tệp nhật ký tốt hơn Apache.

Một mặt trái của vấn đề này là bạn sẽ không có chế độ xem máy chủ tổng hợp nữa (bạn sẽ cần tổng hợp các nhật ký riêng biệt hoặc có thể sử dụng cài đặt apache bổ sung hoặc có lẽ một số phương pháp khác?).

Tôi sẽ thận trọng không sử dụng Google Analytics (hoặc bất kỳ theo dõi dựa trên javascript nào) để theo dõi băng thông máy chủ vì bạn đang dựa vào máy khách để báo cáo qua javascript. GA không báo cáo cho bạn những người đã tắt javascript của họ cũng như bất kỳ trình thu thập dữ liệu / trình thu thập dữ liệu / bot nào.


1

Dưới đây là một số biểu thức chính để phân tích định dạng nhật ký được đề xuất bởi 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 +)

Nhật ký ví dụ:

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

Kết quả phù hợp:

Subpotype 1 (ngày trong tháng): 12
Subpotype 2 (abbr. Tháng): Jan
Subpotype 3 (năm): 2011
Subpotype 4 (máy chủ của khách truy cập): 157.157.12.206
Subpotype 5 (máy chủ ảo): files.hjaltijakobsson.com
Subpotype 6 ( byte đến): 581
Subpotype 7 (byte đi): 669

Chúc mừng.


1

Tinh chỉnh nhẹ trên câu trả lời được chấp nhận giả sử thực sự có nhiều vhost trên máy chủ (và do đó có nhiều trang web.com.access_log). Điều này sẽ sắp xếp và liệt kê từng vhost

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

và cho một thư mục các bản ghi được nén

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

Hmm, bạn có thể gặp ác với IPTables và khớp chuỗi để ghi nhật ký các gói để báo cáo sau. Sẽ chỉ hoạt động cho các kết nối không SSL.

Hoặc một cái gì đó giao thức và phiên nhận biết như Snort có thể được sử dụng ...


0

Chính xác. Lọc nhật ký là một ý tưởng tốt. Tôi cũng muốn có được băng thông của máy chủ Apache của mình khi tải xuống các tệp.

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

Tính toán %b%dđầu ra, sẽ cung cấp cho bạn băng thông của hiện tại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.