Reminiscence


PowerShell을 이용하여 IIS 로그파일 경로를 지정하시면 송/수신된 데이터 량을 확인 할 수 있습니다.
여기서 약간 더 변형을 한다면, IIS의 내용중 로그 디렉토리에 대한 정보를 확인하여 각 사용자 별로 일일 송/수신 데이터 량을 확인 할 수도 있습니다.

우선 소스부터 보시죠..

# 로그 파일 경로를 입력 받습니다.
Param (
  [String] $Path
)
# 필요한 변수들을 미리 지정 합니다.
[INT]$RECV_TOTAL="0"
[INT]$SEND_TOTAL="0"
[INT]$CS_NUM=0;
[INT]$SC_NUM=0;
 
$KB=1024
$MB=1024*1024
$GB=1024*1024*1024
get-content $Path | %{
    #Pattern Check
    if ( $_ | Select-String -Pattern "#Fields" ) {
        # Fields 값에 대한 마이너스 값 처리.
        [INT]$CNT=-1;
        foreach ($element in $_.Split(' '))
        {
           if ( $element -eq "sc-bytes" ){
             $SC_NUM=$CNT;
           }elseif ( $element -eq "cs-bytes" ) {
             $CS_NUM=$CNT;
           }
           $CNT+=1;
        }
     }
     elseif ( $_ | Select-String -Pattern "^[^#]" )
     {
# 실제 송/수신된 값을 Split 명령을 통해 저장합니다.
 [int]$SEND_BYTE=$_.Split(' ')[$SC_NUM];
 [int]$RECV_BYTE=$_.Split(' ')[$CS_NUM];
 [int]$RECV_TOTAL+=$RECV_BYTE;
 [int]$SEND_TOTAL+=$SEND_BYTE;
    }
}
If ( $RECV_TOTAL -gt $GB ){
 $RECV_TOTAL = $RECV_TOTAL / $GB
 Write-Host "Total  In : $RECV_TOTAL GByte"
} elseif ( $RECV_TOTAL -gt $MB){
        $RECV_TOTAL = $RECV_TOTAL / $MB
 Write-Host "Total  In : $RECV_TOTAL MByte"
}elseif ( $RECV_TOTAL -gt  $KB){
 $RECV_TOTAL = $RECV_TOTAL / $KB
 Write-Host "Total  In : $RECV_TOTAL KByte"
}else{
 Write-Host "Total  In : $RECV_TOTAL Byte"
}
If ( $SEND_TOTAL -gt $GB ){
 $SEND_TOTAL = $SEND_TOTAL / $GB
 Write-Host "Total Out : $SEND_TOTAL GByte"
} elseif ( $SEND_TOTAL -gt $MB){
        $SEND_TOTAL = $SEND_TOTAL / $MB
 Write-Host "Total Out : $SEND_TOTAL MByte"
}elseif ( $SEND_TOTAL -gt  $KB){
 $SEND_TOTAL = $SEND_TOTAL / $KB
 Write-Host "Total Out : $SEND_TOTAL KByte"
}else{
 Write-Host "Total Out : $SEND_TOTAL Byte"
}

우선 간단한 소스이니 얼마든지 변형이 가능 합니다.
추가적으로 더 나간다면, 여러대의 서버를 관리하는 관리자의 경우 각 서버들에 대한 FTP 접속 계정을 만들고 FTP로 접속하여 각 로그 파일들을 다운로드 받은 뒤 해당 파일에 대한 체크 후 자동 삭제 하는 과정을 통해 모든 IIS 서버에 대한 각 계정별 트래픽 값을 확인 할 수도 있습니다.

그냥 단순히 참고만.. ^^.
저작자 표시 비영리
신고

댓글 0개가 달렸습니다.