| 제목 |
4992 번 글의 답장글 : Re: Re: Re: Re: Re: 어떤 유저가 얼마만큼의 CPU를 사용하는지 알 수 있을까요? |
| 이름 |
산이 [홈]http://linuxchannel.net/ |
무슨 이유인지는 모르겠지만
전체적으로 적용이 안되는군요. (제 경우는 잘 됩니다.)
일단은 특정 가상호스트 섹션에만 우선적으로 설정 및 시범 테스트를
해 보세요.
아 그리고 단어의 개념상 trafficrx 는 traffic-rx 라는 의미인데
RX 가 아니고 TX 입니다. receive 가 아니고 transfer 라는 의미입니다.
굳지 파일이나 LogFormat nickname 을 고칠 필요는 없습니다만
깔끔하게 설정하기 원한다면 고치는 것이 좋겠죠.
LogFormat 는 각각 가상호스트 섹션에 모두 하나씩 설정할 필요없고
Main 설정에 하나씩만 실정하세요.
[하얀피]님이 남기신 글:
>확실히.. httpd.conf에서 메인부분에 적어주었습니다.
>
># user checklog
>LogFormat "%{%Y%m%d%H%M}t %v %b" trafficrx
>LogFormat "%{%Y%m%d%H%M}t %v %T" runtime
>
>CustomLog /usr/local/apache/logs/trafficrx_log trafficrx
>CustomLog /usr/local/apache/logs/runtime_log runtime
>
>### Section 3: Virtual Hosts
>
>NameVirtualHost ...
>
><VirtualHost ...>
>....
>....
></VirtualHost>
>
>logs 폴더에 보면
>-rw-r--r-- 1 root root 0 3월 7 23:32 runtime_log
>-rw-r--r-- 1 root root 0 3월 7 23:32 trafficrx_log
>분명히 로그 파일이 생성되긴 합니다.
>그러나 보다싶이 0바이트. 로그값이 전혀 저장되지 않네요.
>httpd.conf파일이라도 전체적으로 포스팅 해드려야 할까요?
>
>[산이]님이 남기신 글:
>
>>
>>[하얀피]님이 남기신 글:
>>
>>>아래 로그 기록을 각 버츄얼호스트 부분에 몽땅 써주어야 하나요???
>>>버츄얼 외의 공란에 써주었더니 파일생성은 되지만 로그는 안남네요..
>>>
>>>[산이]님이 남기신 글:
>>>
>>>>[하얀피]님이 남기신 글:
>>>>
>>>>>요즘 www 1번 서버와 3번서버가 랜덤적으로 폭주하고 있습니다.
>>>>>가끔 스스로 폭주가 멈추는 경우는 있지만...
>>>>>폭주할때마다 cpu가 99% 이상으로 차며 아파치 프로세서가 맥스를 넘어버립니다.
>>>>>어떤 계정에서의 무한루프쪽을 의심하고 있는데요.
>>>>>그래서 그런데..
>>>>>실시간으로 어떤 유저가 얼마만큼의 CPU를 사용하는지 알 수 있을런지요?
>>>>>일단 셸을 이용해서 cpu와 memory를 체크할 수 있는 스크립트를 사용하는데
>>>>>이것을 계정 list와 대조시켜서 계속 감지한다는게 조금--;;;;
>>>>>다른 방법이 없을까요???
>>>>>
>>>>>아래는 제가 구한 스크립트 입니다.
>>>>>#!/bin/sh
>>>>>#
>>>>># uid 찾기
>>>>>#
>>>>>ARG=$1
>>>>>FINDED_UID=$(cat /etc/passwd | grep ^$ARG | cut -f3 -d:)
>>>>>a=`ps -eo uid,pcpu |tail +2| tr -s [:space:]`
>>>>>set `echo $a`
>>>>>SUM=0
>>>>>SUM1=0
>>>>>while [ $# -gt 0 ]
>>>>>do
>>>>> FIRST=$1
>>>>> SECONT=$2
>>>>> if [ $FIRST -eq $FINDED_UID ]
>>>>> then
>>>>> SECONT_F=$(echo $SECONT|cut -f1 -d.)
>>>>> SECONT_S=$(echo $SECONT|cut -f2 -d.)
>>>>> SUM=`expr $SUM + $SECONT_F`
>>>>> SUM1=`expr $SUM1 + $SECONT_S`
>>>>> fi
>>>>>shift 2
>>>>>done
>>>>>SUM=`expr $SUM + $SUM1 / 10 `
>>>>>SUM1=`expr $SUM1 % 10`
>>>>>echo "현재 ${ARG}의 CPU 사용량은 $SUM.$SUM1% 입니다."
>>>>
>>>>========================================
>>>>
>>>>답변이 늦었습니다.
>>>>
>>>>사용자 계정에 대한 체크는 이와 같이 하면 됩니다.
>>>>다만 그 결과치가 몇 % 이상일 경우 관리자 메일로 보낸다거나
>>>>어떤 메시지가 출력하도록 설정해 놓으면 되겠죠.
>>>>
>>>>그런데
>>>>
>>>>apche 는 보통 nobody 아니면 www 권한으로 돌아가기 때문에
>>>>이와 같은 원리로는 체크할 수 없습니다.
>>>>
>>>>`가상호스트 == 계정'
>>>>
>>>>이라는 공식이 성립되므로 아파치 쪽에서 설정 및 모니터링해야 합니다.
>>>>
>>>>즉 어느 가상호스트에서 트래픽이 많이 생기는지 또한 어느
>>>>가상호스트에서 실행시간이 많이 걸리는지 체크해야 합니다.
>>>>
>>>>전자는 log 파일과 MRTG (설치/설정)를 또는 throttle 를 기준으로
>>>>방향을 잡고
>>>>후자 역시 log 파일을 중점으로 모니터링해야 합니다.
>>>>
>>>>[아파치 로그 포맷]
>>>>
>>>>http://linuxchannel.net/docs/apache_log.txt
>>>>
>>>>전자 :
>>>>
>>>>년도월일시간분 호스트네임 전송바이트
>>>>LogFormat "%{%Y%m%d%H%M}t %v %b" trafficrx
>>>>CustomLog /usr/local/apache/logs/trafficrx_log trafficrx
>>>>
>>>>후자는
>>>>
>>>>년도월일시간분 호스트네임 실생한시간
>>>>LogFormat "%{%Y%m%d%H%M}t %v %T" runtime
>>>>CustomLog /usr/local/apache/logs/runtime_log runtime
>>>>
>>>>물론 이 두개를 하나의 로그 파일로 관리할 수 도 있습니다.
>>>
>>>========================================
>>
>>========================================
>>
>>LogFormat "%{%Y%m%d%H%M}t %v %b" trafficrx
>>LogFormat "%{%Y%m%d%H%M}t %v %T" runtime
>>
>>CustomLog /usr/local/apache/logs/trafficrx_log trafficrx
>>CustomLog /usr/local/apache/logs/runtime_log runtime
>>
>>....
>>
>>NameVirtualHost ....
>>
>>이렇게 메인 설정 부분에 설정하세요.
>>
>>$v (호스트 네임) 가 있으므로 어느 호스트에서 이상이 있는지
>>쉽게 알 수 있을 겁니다.
>
>========================================
======================================== |
|
2004년 03월 08일 00:26:54 월(새벽) from 61.254.74.228 |