본문 바로가기

개발&컴퓨터/서버관리

윈도우 웹 서버(IIS)의 로그 관리(2/2) - 사이트 로그파일 자동 삭제되도록 스케줄 만들기

반응형

바로 이전 포스팅에서 사이트 로그 파일을 삭제하는 스크립트를 작성하였습니다.

 

- 이 전 포스팅 보기 -

윈도우 웹 서버(IIS)의 로그 관리(1/2) - 사이트 로그파일 삭제 스크립트 작성하기 :

http://ozit.tistory.com/124 

 

 

스크립트를 가지고는 파일을 삭제할 수 있지만, 파일을 삭제할 필요가 있을 때마다 관리자가 매번 스크립트를 실행해주어야 합니다.

서버에 접속해서 어느 사이트가 로그가 많이 쌓였는지, 매번 확인하여 삭제하는 것은 번거로운 일이겠죠.

 

이전 포스팅에서 작성하였던 스크립트를 다시 가져와 보았습니다. 아래 소스 코드 참조!

'  IIS_Log_Clear.vbs

 

'  90일이 지난 로그 파일을 삭제하는 VB스크립트

Option Explicit

 

'  삭제할 사이트 로그 파일들이 있는 폴더명을 저장할 변수

Dim strRootPath

'  폴더명 저장 변수에 실제 폴더명 문자열을 저장. WScript.arguments.item(0)은 VB스크립트 실행 시, 첫번째 인자(Parameter)를 가져옵니다. 저는 사이트ID를 받아오기 위해
strRootPath = "C:\inetpub\logs\LogFiles\W3SVC" & WScript.arguments.item(0) & "\"

 

'  WScript.echo strRootPath - 폴더명을 Alert창으로 띄움. 개발용으로 사용하고, 주석처리

Const nDays = 90    ' 90이란 값을 nDays 에 저장 (상수)

 

Dim wFSO
Set wFSO = CreateObject("scripting.FileSystemObject") '  웹 서버의 파일 시스템에 액세스할 수 있는 객체 변수 생성

 

Dim wFolder
Set wFolder = wFSO.GetFolder(strRootPath) '  strRootPath에 해당하는 폴더 정보를 가지는 객체 생성

 

Dim wFile

'  wFolder 폴더 내에 있는 파일 삭제 루틴 (루프)
For Each wFile In wFolder.Files '  wFolder 내에 있는 파일들을 루프를 통해 순차적으로 접근
    If Int( Now() - oFile.DateLastModified ) >= nDays Then '  (오늘날짜 - 해당 파일의 최근 수정 일자)가 90일보다 크면
        wFile.Delete '  파일 삭제
    End If
Next

 

이 스크립트를 자동으로 실행되도록 하면 좋을텐데요.

네 방법이 있습니다. 윈도우 작업 스케줄러를 사용하면 됩니다.

 

윈도우의 작업 스케줄러를 이용하면 윈도우에서 특정 이벤트가 발생하거나 특정 날짜나 시간이 되면 특정 작업을 수행시킬 수 있습니다. 또한 주기적으로 실행하는 것도 가능합니다.

 

우리는 로그 파일을 삭제하는 스크립트를 실행시키도록 할 것인데, 굳이 매일, 매주 실행할 필요는 없을 것 같으므로 한달에 한번 매일 1일에 위의 스크립트를 실행하는 스케줄을 만들어 보겠습니다.

 

 

1. 윈도우 작업 스케줄러를 실행합니다.

 [제어판 - 관리도구 - 작업 스케줄러] 로 이동하여 실행시킵니다.

 

 

 

 

 2. 작업 스케줄러 화면이 떴습니다. 이제 새로운 스케줄을 등록해보겠습니다.

   * 새 작업을 만들 것이므로,  작업 스케줄러 화면 상단 메뉴에서 [동작 - 작업 만들기(R)]을 선택합니다.

  

 

 

3. 새 작업 만들기 다이얼로그 화면이 떴습니다. 일반 탭에 대한 내용을 설정합니다.

  새 작업 만들기 다이얼로그가 뜨면 5개의 탭이 표시됩니다. 먼저 일반 탭에 대한 내용을 설정합니다.

 

  * 작업 이름과 설명을 입력합니다.

  * 파일 삭제 작업은 관리자가 서버에 로그인 상태와 관계없이 매번 실행되어야 합니다. 그러므로 '사용자의 로그온 여부에 관계없이 실행' 옵션을 선택합니다. 이 때, 서버 관리자의 비밀번호를 확인하는데, 별도의 관리자 권한이 필요치 않은 스크립트라면 '암호 저장하지 않습니다.' 옵션을 체크해주면 됩니다.

 

 

 

4. 트리거 설정하기

 

 * 트리거 탭 화면이 나타나면 하단의 [새로 만들기(N)] 버튼을 클릭합니다.

 * 트리거는 등록한 스케줄 작업을 언제 어떤 주기로 실행시킬 것인지에 대해 설정하는 작업을 합니다.

 

 

 * 새 트리거 만들기 다이얼로그가 표시됩니다.

 * 작업 시작을 언제 할 것인지는 [예약 상태]로 설정하고, 언제 작업을 수행할 것인지를 선택합니다.

 * 저는 2015년 1월 11일부터 매월(1월~12월) 첫째날(1일) 오전 3시 30분으로 하였습니다.

 * 아래에는 고급 설정으로 작업을 언제까지 수행할 것인지, 작업이 길어지는 경우, 중지 시킬 것인지 등에 대한 설정을 할 수 있습니다. 사이트 로그 파일 자동 삭제하는 스크립트 실행은 크게 부하를 일으키는 작업도 아니고, 앞으로 계속 실행할 것이므로 별다른 고급 설정 없이 그냥 [사용]을 체크합니다.

 

 

* 확인 버튼을 누르고, 다시 트리거 탭 화면으로 돌아오면 새 트리거가 등록된 것을 확인하실 수 있습니다.

 

5. 동작 설정하기

 * 동작은 실제 어떤 작업을 수행할 것인지를 설정하는 것입니다.

 * 우리가 하려는 동작은 사이트 로그 파일을 삭제하는 스크립트를 실행하는 것입니다. 동작 탭 화면에서 [새로 만들기] 버튼을 클릭합니다.

 

 

 

 * 새 동작 만들기 다이얼로그가 떴습니다.

 동작은 - 프로그램 실시작, 전자 메일 보내기, 메시지 표시 등이 있는데, 우리는 스크립트 프로그램을 실행할 것이므로 [프로그램 시작]을 선택합니다.

 

 프로그램/스크립트는 이전 포스팅에서 만든 스크립트 파일 경로를 입력합니다. 우측의 찾아보기 버튼을 클릭하여 입력하면 됩니다.

 그리고 이전 포스팅에서 만든 로그 파일 삭제 스크립트는 하나의 인자(사이트ID)를 받고 있습니다. 즉 인자로 받은 사이트ID를 가진 사이트의 로그 파일을 삭제하는 스크립트입니다. 그러므로 삭제할 사이트의 ID를 확인하여 인자로 입력합니다.

 

 

 확인 버튼을 클릭하여 동작 탭 화면으로 이동하면 새 동작이 등록된 것을 보실 수 있습니다. 

 

 위의 동작 탭 화면에는 인자만 다르게 하여 스크립트 실행 동작이 7개 입니다. 즉 7개의 각기 다른 사이트의 로그를 삭제하는 스크립트를 등록한 것입니다. 보시는바와 같이 하나의 작업 스케줄에는 여러개의 동작(여러개 또는 여러번의 스크립트 실행)을 등록할 수 있습니다.

 

 

6. 조건 설정하기

 * 스케줄 실행 시, 컴퓨터 상태에 따른 조건을 설정하는 부분입니다. 특별한 것은 없으며, 아래 화면과 동일하게 설정합니다.

 

 

 

 

7. 설정 설정!하기

 설정 탭의 옵션들을 설정합니다. 특별한 사항은 없습니다. 기본으로 설정합니다.

 옵션들도 읽어보시면 대부분 내용이 파악되는 것들입니다.

 이제 모든 설정이 끝났습니다. 가장 하단의 [확인]버튼을 클릭하여 새 작업 스케줄을 생성합니다.

 

 

 

 

8. 새 작업 스케줄이 생성된 것을 확인합니다.

 다시 돌라온 작업 스케줄러 화면 중간에 보시면 방금 작업한 스케줄이 등록된 것을 확인할 수 있습니다. 해당 스케줄을 마우스로 클릭하면 하단에 방금 우리가 설정한 정보들이 표시됩니다.

 

 

* 만약 스케줄이 정상적으로 동작을 하는지 알고 싶거나, 또는 기존 스케줄 정보를 수정하거나 삭제하고 싶은 경우라면 스케줄 선택 후, 마우스 우측 버튼을 클릭하면 표시되는 컨텍스트 메뉴에서 선택하여 진행하시면 됩니다.

 

 - 실행 : 해당 스케줄을 실행시킵니다. (즉 예약된 스케줄에 상관없이 바로 실행합니다.)

 - : 스케줄을 종료시킵니다.

 - 사용 안 함 : 스케줄 정보는 유지되나 스케줄이 예약된 시간에 더 이상 실행되지 않습니다. [사용 안 함] 설정 후, 다시 [사용]으로 설정을 변경하면 스케줄이 예약된 시간에 실행됩니다.

 - 내보내기 : 스케줄을 파일(XML)로 만듭니다. 해당 XML파일을 다른 서버로 보내 스케줄을 바로 불러와 적용시킬 수 있습니다.

 - 속성 : 스케줄 정보를 확인합니다. 스케줄을 수정할 수 있는 상태가 됩니다. 

 - 삭제 : 스케줄을 삭제합니다.

 

 

서버 관리자라면 당연히 알고 있을 기초적인 지식이었습니다. 이것으로 이 번 포스팅을 마치도록 하겠습니다.

혹시 이와 관련하여 궁금하신 것들이 있으시면 댓글 달아주시면 아는 범위 내에서 답변 드리도록 하겠습니다.^^

 

 

반응형