| ||
글쓴이 : 관리자 날짜 : 10-11-08 12:50 조회 : 1101 | ||
0. 테스트 환경 모든 테스트 환경은 2010년 11월 1일 기준의 최신 AnNyung Linux 배포판에서 했다. 1. 개요 - mrtg를 운영할 경우, 매일매일의 (최대)사용트래픽을 숫자로 저장하고자 한다. - 통상적으로, 그래프로 나타내어 지는 트래픽의 양은 정확한 수치로 표현하기가 어렵다. - 따라서, mrtg 로그파일을 이용하여 하루에 한 번씩 가장 높은 트래픽을 추출하여 별도의 숫자로 기록하는 방식이다. 2. mrtg 로그파일 - 스위치의 해당 포트에 대한 트래픽 양을 기록한 로그파일은 확장자가 .log 파일이다. - 여기서는 3886_8.log 파일을 해당 포트의 트래픽 로그파일로 가정한다. - 로그파일의 내용을 살펴보면, 그 포맷은 다음과 같다. 첫번째라인 : timestamp값 | IN bytes 갯수 | OUT bytes 갯수 두번째라인이후 : timestamp값 | 평균 IN bytes | 평균 OUT bytes | 최대 IN bytes | 최대 OUT bytes 3. 쉘상에서 하루 최대트래픽 가져오기 - mrtg의 로그는 5분(=300초) 간격으로 기록되므로, 한시간에 12라인이.... 하루에 288라인이 기록된다. - 첫 라인을 제외하고, 두 번째 라인부터 289라인까지가 현시간을 기준으로 1일 쌓인 mrtg 로그이다. - 여기서 필요한 값은, 첫 번째 칸의 timestamp 값과 네 번째 칸의 최대 IN bytes 값이다. - 따라서, 로그파일의 두 번째 라인부터 289라인까지의 값 중에서 네 번째 칸이 가장 큰 값을 가져오면 된다. head -n 289 3886_8.log // 3886_8.log 파일의 첫 라인부터 289라인까지 가져온다. tail -n 288 // 가져온 값에서 첫 라인을 제외하고 나머지 288라인을 가져온다. sort -k4 -n -r // 네 번째 필드를 기준으로(-k4), 숫자순서로(-n), 내림차순으로(-r) 정리한다. head -n 1 // 정렬된 값의 가장 처음 라인을 가져온다. - 위의 결과값으로 나온 필드 중에서 첫 번째(1288707600) 필드와 네 번째(4544071) 필드만 필요하다. 첫 값은 timestamp 값이고, 네 번째 필드가 트래픽 값이며 단위는 bytes 이다. 4. 추출값 변환 - 위의 명령어는 한 줄이다. 중간에 awk 다음에 역슬래쉬(\)를 넣은 것은 생략하고 한 줄로 적으면 된다. - 해당 명령어로 원하는 값을 얻었다. 2010년 11월 02일 23:20:00 시간에 29.4메가의 트래픽이 하루동안 가장 큰 트래픽이다. - timestamp값을 변환하여 알아보기 쉽게 하였고, 트래픽은 메가단위로 소숫점 한자리까지만 나타냈다. - awk 명령어에 대한 내용은 다른 자료를 찾아보기 바란다. 내용이 길어져서 차후에 별도로 지면을 할애하여 설명할 계획이다. - 참고1 : perl이 설치되어 있다면, 다음의 명령어로 콘솔상에서 timestamp값을 바로 변환할 수도 있다. # perl -e 'print scalar localtime(1288707600),"\n"' Tue Nov 2 23:20:00 2010 - 참고2 : 추출데이터를 약간 가공만 하면, 하루 누적트래픽 등도 구할 수 있다. http://hostinglove.com/bbs/board.php?bo_table=Tip_Tech&wr_id=16 |
2012년 1월 13일 금요일
mrtg - 하루중 가장 높은 트래픽 기록하기
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기