태그 보관물: virtualhost

virtualhost

각 Apache 가상 호스트가 사용중인 대역폭을 어떻게 확인할 수 있습니까? 보고서를 원합니다. 내가

여러 가상 호스트를 제공하도록 Apache를 설정했으며 각 사이트에서 사용하는 대역폭의 양을 확인하고 싶습니다. 전체 서버가 얼마나 많이 사용하는지 알 수 있지만 더 자세한 보고서를 원합니다.

내가 찾은 것의 대부분은 가상 호스트로 대역폭을 제한하기위한 것이지만 그렇게하고 싶지는 않습니다. 어느 사이트에서 얼마나 많은 대역폭을 사용하고 있는지 확인하고 싶습니다.

이는 결제 목적이 아니라 정보 제공만을위한 것입니다.

사용해야하는 아파치 모듈이 있습니까? 아니면 다른 방법이 있습니까?



답변

당신이 따르는 정보는 모두 로그에 있으므로 AWStats 와 같은 로그 분석기를 봐야 합니다. 다른 옵션은 Google Analytics를 사용하는 것입니다.

로그를 분석하기 위해 다음은 명령 줄에서 로그 파일이 몇 MB의 트래픽을보고하는지 알려주는 대략적인 예입니다.

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


답변

Awstats 는 이것을 수행하는 한 가지 방법이지만 아마도 최선은 아닙니다.


답변

멋진 아파치 로깅 메커니즘과 덜 알려진 % I% O 플래그 를 사용하는 것이 좋습니다 .

형식을 정의하십시오.

LogFormat “% t % a % v % U % q % I % O”IOFormat

기본 httpd.conf 에서 사용하십시오 .

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

값은 아마도 모든 헤더 정보를 설명하지는 않지만 VirtualHost 트래픽에 대한 정확한 아이디어를 갖는 것은 매우 정확합니다.

Perl 스크립트로 로그를 스캔하여 n 분마다 가상 호스트별로 집계하고 (예 : 5)이를 선인장으로 보냅니다.

이 플래그는 mod_logio에 의해 제공되며 아마도 Apache에 내장되어있을 것입니다.


답변

Apache와 함께 awstats를 사용하기로 결정한 경우 즉시 전체 서버에 대한 총 대역폭이 표시됩니다.

가상 호스트별로 대역폭을 보려면 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보다 많은 로그 파일을 더 잘 처리한다고 주장합니다.

이에 대한 한 가지 단점은 더 이상 집계 된 서버보기가 없다는 것입니다 (로그를 별도로 집계하거나 추가 아파치 설정 또는 다른 방법을 사용해야합니까?).

클라이언트가 자바 스크립트를 통해보고 할 때 서버 대역폭 모니터링에 Google 분석 (또는 자바 스크립트 기반 추적)을 사용하지 않도록주의해야합니다. GA는 크롤러 / 스파이더 / 봇뿐만 아니라 자바 스크립트를 사용 중지 한 사용자에게보고하지 않습니다.


답변

다음은 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 / 624747 [12 / Jan / 2011 : 14 : 25 : 04 +0000] 157.157.12.206 files.hjaltijakobsson.com /icons/blank.gif 687186 [12 / Jan / 2011 : 14 : 25 : 04 +0000] 157.157. 12.206 files.hjaltijakobsson.com /icons/compressed.gif 693188 [12 / Jan / 2011 : 14 : 25 : 04 +0000] 157.157.12.206 files.hjaltijakobsson.com /favicon.ico 592 512

성냥:

하위 패턴 1 (일) : 12
하위 패턴 2 (요약) : 1 월
하위 패턴 3 (년) : 2011
하위 패턴 4 (방문자 호스트) : 157.157.12.206
하위 패턴 5 (가상 호스트) : files.hjaltijakobsson.com
하위 패턴 6 ( 들어오는 바이트) : 581
하위 패턴 7 (나가는 바이트) : 669

건배.


답변

실제로 서버에 여러 개의 호스트가 있고 따라서 여러 site.com.access_log가 있다고 가정하면 허용되는 답변을 약간 조정합니다. 각 호스트를 정렬하고 나열합니다.

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

gzipped logs 디렉토리 용

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


답변

흠, 나중에보고하기 위해 패킷을 기록하기 위해 IPTables 및 문자열 일치로 악을 얻을 수 있습니다. 그래도 비 SSL 연결에서만 작동합니다.

또는 Snort와 같은 프로토콜 및 세션 인식 기능이 구두로 사용될 수 있습니다 …