도메인별로 MRTG 트래픽 그리기
Linux
2016. 1. 6. 10:25
도메인별로 분리되어 있는 아파치 로그데이타를 가지고 MRTG 그리기
로그분석은 Awstats에서 분석해준 결과를 가지고 이용한다.
필자의 경우는 웹로그를 apache 와 squid 를 나누어서 운영하기에 두도메인을 각각...뽑아서 합한다.
아파치 로그만 운영하신다면 계산식은 빼고 이용하시면 되겠지요....
APACHE 로그
모든 VirtualHost에는 combined 로그을 남기며 도메인별로 웹로그가 생성
/usr/local/apache/conf/extra/httpd-vhosts.conf
<VirtualHost 115.68.XX.XXX>
ServerAdmin webhosting@smileserv.com
DocumentRoot /home/chonnom
ServerName test1.chonnom.com
ErrorLog /backup/apache_logs/chonnom.com-error_log
CustomLog /backup/apache_logs/chonnom.com-access_log combined
</VirtualHost>
SQUID 로그
Squid 로그는 vhost별로 로그생성을 지원하지 않는다.
따라서 생성된 로그파일을 도메인별로 분류해서 트래픽 사용량을 산출한다.
ex)
/usr/local/squid/etc/squid.conf
cache_peer test1.chonnom.com parent 80 0
cache_peer test2.chonnom.com parent 80 0
access_log /usr/local/squid/var/logs/access.log combined
Awstats 설치
로그 기반 트래픽분석기
서비스 도메인마다 CACHE 로그와 아파치 로그를 분석한다.
형식) /etc/awstats
awstats.cache_${DOMAIN}.conf
awstats.${DOMAIN}.conf
awstats.cache_${DOMAIN}.conf (도에인별로 SQUID 로그데이타 분석)
LogFile="cat /usr/local/squid/var/logs/access.log | egrep '(HEAD|GET|POST) http://${DOMAIN}' |"
SiteDomain="cache_${DOMAIN}"
HostAliases="cache_${DOMAIN} 127.0.0.1 localhost"
awstats.${DOMAIN}.conf
LogFile="/usr/local/apache/logs/${DOMAIN}-access_log"
SiteDomain="${DOMAIN}"
HostAliases="${DOMAIN} 127.0.0.1 localhost"
/usr/local/awstats/logs
형식 : awstats{월}{년도}.{DOMAIN}.txt
ex) awstats012012.${DOMAIN}.txt → 아파치로그 분석데이타 파일
awstats012012.cache_${DOMAIN}.txt → 스퀴드로그 분석데이타 파일
굵은숫자를 가지고 데이타량 산출 (기본단위 BYTE)
# Date - Pages - Hits - Bandwidth - Visits
BEGIN_DAY 2
20120104 19 145 138557 1
20120105 55 212 328569 5
END_DAY
※ Awstats 기본단위
BYTE --> KBYTE --> MBYTE --> GBYTE
1024 1024 1024
ex)
1088917392821 / 1024 / 1024 / 1024 = 1014.1333498256281018257141113281 / 1014.13 GB
SNMP 설정
MRTG 서버로 전송할 도메인별 트래픽 사용량 데이타 (5분단위)
이미지호스팅 서버에 설정하며 도메인별로 생성한다.
/etc/snmp/snmpd.conf
exec mrtg /usr/local/src/global.sh domain_mrtg ${DOMAIN_1}
exec mrtg /usr/local/src/global.sh domain_mrtg ${DOMAIN_2}
/usr/local/src/global.sh
year=`date +%Y`
month=`date +%m`
path="/usr/local/awstats/logs"
today=`date +%Y%m%d`
yesterday=`date -d "1 day ago" +%Y%m%d`
function domain_mrtg() {
sh /usr/local/src/awstats.sh > /dev/null
apache_logfile=${path}/awstats${month}${year}.$1.txt
squid_logfile=${path}/awstats${month}${year}.cache_$1.txt
apache_traffic=`cat ${apache_logfile} |grep -w ${today} | awk '{print $4}'`
squid_traffic=`cat ${squid_logfile} |grep -w ${today} | awk '{print $4}'`
# 로그 발생이 없을경우 0 값으로 대체
if [ "${apache_traffic}" = "" ]; then
apache_traffic=0
fi
if [ "${squid_traffic}" = "" ]; then
squid_traffic=0
fi
traffic=`expr ${apache_traffic} + ${squid_traffic}`
echo $traffic
}
case "$1" in
domain_mrtg)
domain_mrtg $2
;;
*)
esac
5. MRTG CFG 파일생성
MRTG 서버에 CFG 파일생성
테스트) 마지막 숫자 1이 snmpd.conf 파일에 넣어준 첫번째 라인
[root@image_m ]# snmpwalk -v2c -c managed_snmp 115.68.29.8 .1.3.6.1.4.1.2021.8.1.101.1
UCD-SNMP-MIB::extOutput.1 = STRING: 492505
→ SQUID +APACHE LOG 트래픽 합산량
MRTG.CFG
EnableIPv6: no
Workdir: /HOSTING/testmrtg/bps
language: korean
Options[_]: bits,growright
Target[${DOMAIN}]: .1.3.6.1.4.1.2021.8.1.101.1&.1.3.6.1.4.1.2021.8.1.101.1:managed_snmp@115.68.XX.XX:::::2
MaxBytes[${DOMAIN}]: 125000000
Title[${DOMAIN}]: ${DOMAIN}
PageTop[${DOMAIN]: ${DOMAIN}
<TABLE>
<TR><TD>IP:</TD> <TD>${DOMAIN}</TD></TR>
</TABLE>
※ 허접하게나마 MRTG는 도메인별로 잘 그려진다~~ ^^
출처: http://www.chonnom.com/bbs/board.php?bo_table=B19&wr_id=325
'Linux' 카테고리의 다른 글
perl 이용시 Can't locate ExtUtils/MakeMaker.pm 해결방법 (0) | 2016.01.06 |
---|---|
mod_cband 이용 아파치 트래픽 제어, 트래픽 모니터링 (0) | 2016.01.06 |
bacula 최근,특정일자 복구방법 (0) | 2016.01.04 |
-bash: ./pp_cli: /lib/ld-linux.so.2: bad ELF interpreter: 그런 파일이나 디렉터리가 없습니다 (0) | 2015.12.30 |
아파치 (28)No space left on device (0) | 2015.12.29 |