IT 기술 문서


2025.02.17 07:10

Windows & Linux 로그 파일 분석 및 자동 보고서 생성하기

  • it33 25일 전 2025.02.17 07:10
  • 37
    0

alt text

Windows PowerShell & Linux Bash를 활용한 로그 분석 자동화

서버 및 시스템 관리에서는 로그 파일을 분석하여 문제를 진단하고, 보안 위협을 감지하는 것이 필수적입니다. PowerShell과 Bash를 활용하면 로그 파일을 자동으로 분석하고 보고서를 생성할 수 있습니다. 이번 포스팅에서는 Windows PowerShell과 Linux Bash를 활용한 로그 분석 및 자동 보고서 생성 방법을 정리해보겠습니다.


1. 로그 파일 기본 개념 및 비교

항목

Windows (PowerShell)

Linux (Bash)

주요 로그 위치

C:\Windows\System32\winevt\Logs

/var/log/

기본 로그 파일

Application.evtx, System.evtx, Security.evtx

syslog, auth.log, kern.log

분석 도구

PowerShell Get-EventLog, Get-WinEvent

grep, awk, sed

보고서 생성

Export-CSV, ConvertTo-HTML

tee, echo, awk

Windows는 이벤트 로그(Event Log) 형식으로 데이터를 저장하며, Linux는 텍스트 기반 로그 파일을 사용합니다.


2. Windows 로그 파일 분석 (PowerShell 활용)

① Windows 이벤트 로그 조회

PowerShell을 사용하면 Windows 이벤트 로그를 쉽게 조회할 수 있습니다.

# 최근 10개의 시스템 이벤트 조회
Get-EventLog -LogName System -Newest 10
# 특정 이벤트 ID(4625: 로그인 실패) 조회
Get-EventLog -LogName Security | Where-Object {$_.EventID -eq 4625}

???? Get-WinEvent 명령어를 사용하면 더욱 정교한 필터링이 가능합니다.

# 특정 시간대의 오류 로그 조회
Get-WinEvent -LogName System -MaxEvents 20 | Where-Object {$_.LevelDisplayName -eq "Error"}

② 로그 파일을 CSV 또는 HTML로 저장 (자동 보고서 생성)

PowerShell을 활용하면 로그 데이터를 CSV 또는 HTML 파일로 변환하여 자동 보고서를 생성할 수 있습니다.

# 시스템 이벤트 로그를 CSV 파일로 저장
Get-EventLog -LogName System -Newest 50 | Export-Csv -Path C:\logs\system_log.csv -NoTypeInformation
# 보안 이벤트 로그를 HTML 보고서로 변환
Get-EventLog -LogName Security -Newest 20 | ConvertTo-Html | Out-File C:\logs\security_report.html

이렇게 하면 시스템에서 발생하는 이벤트를 자동으로 정리하고 저장할 수 있습니다.


3. Linux 로그 파일 분석 (Bash 활용)

① 시스템 로그 조회

Linux에서는 grep, awk, sed 등의 명령어를 활용하여 로그 파일을 분석할 수 있습니다.

# 최근 10개의 시스템 로그 확인
tail -n 10 /var/log/syslog
# 로그인 실패 로그만 필터링
grep "Failed password" /var/log/auth.log
# 특정 날짜(2024-02-10)의 로그 조회
grep "2024-02-10" /var/log/syslog

② 로그 분석 및 자동 보고서 생성

Linux에서는 awktee를 활용하여 로그 데이터를 자동으로 정리할 수 있습니다.

#!/bin/bash
# 특정 키워드(오류) 로그 필터링 및 보고서 생성
LOG_FILE="/var/log/syslog"
REPORT_FILE="/home/user/log_report_$(date +%Y-%m-%d).txt"

echo "로그 분석 결과 - $(date)" > $REPORT_FILE
grep "error" $LOG_FILE | tee -a $REPORT_FILE

이 스크립트를 실행하면 /home/user/ 디렉터리에 날짜별 로그 분석 보고서가 자동 생성됩니다.


4. PowerShell vs. Bash 로그 분석 비교

기능

Windows (PowerShell)

Linux (Bash)

기본 로그 분석

Get-EventLog, Get-WinEvent

grep, awk, sed

특정 이벤트 필터링

이벤트 ID, 시간 기반 필터링 가능

문자열 및 정규식 기반 검색 가능

자동 보고서 생성

Export-CSV, ConvertTo-HTML

tee, echo, awk 활용 가능

GUI 도구 연동

가능 (Event Viewer)

불가능 (CLI 기반)

Windows 환경에서는 GUI 기반의 Event Viewer와 연동이 가능하며, Linux에서는 텍스트 기반 로그 분석이 강력합니다.


5. 실무에서의 활용 사례

① 보안 로그 모니터링 자동화

PowerShell과 Bash를 활용하면 보안 로그를 자동으로 분석하고 이상 징후를 감지할 수 있습니다.

Windows (PowerShell):

# 최근 100개의 로그인 실패 이벤트 로그를 CSV로 저장
Get-EventLog -LogName Security | Where-Object {$_.EventID -eq 4625} | Export-Csv C:\logs\failed_login.csv -NoTypeInformation

Linux (Bash):

# 최근 10개의 로그인 실패 로그 확인
grep "Failed password" /var/log/auth.log | tail -n 10

② 서버 장애 감지 및 자동 대응

로그 분석을 자동화하여 특정 장애 발생 시 경고 메시지 전송 또는 자동 복구 스크립트 실행이 가능합니다.

Windows (PowerShell + 이메일 알림):

$logs = Get-EventLog -LogName System -Newest 5 | Where-Object {$_.LevelDisplayName -eq "Error"}
if ($logs) {
    Send-MailMessage -To "admin@example.com" -From "server@example.com" -Subject "서버 오류 발생" -Body "오류 로그 확인 필요" -SmtpServer "smtp.example.com"
}

Linux (Bash + Slack 알림):

#!/bin/bash
ERRORS=$(grep "error" /var/log/syslog | tail -n 5)
if [ "$ERRORS" ]; then
    curl -X POST -H 'Content-type: application/json' --data '{"text":"서버 오류 발생: $ERRORS"}' https://hooks.slack.com/services/your-webhook-url
fi

자동 로그 분석으로 시스템 관리 최적화

PowerShell과 Bash를 활용하면 서버 로그를 효율적으로 분석하고, 자동화하여 보안 및 성능을 최적화할 수 있습니다.

Windows와 Linux 환경에 맞게 적절한 방법을 선택하여 실무에 활용하세요!

  • 공유링크 복사