지원 로그 포맷
LogTrace가 자동 감지하거나 수동 선택으로 분석할 수 있는 로그 포맷 목록입니다. 각 포맷의 예시 라인과 분석 가능한 항목을 확인하세요.
Nginx access.log
Nginx HTTP Server의 기본 액세스 로그 포맷입니다. Combined Log Format과 JSON 로그를 모두 지원합니다.
예시 라인 (기본 포맷)
`` 203.0.113.42 - - [10/May/2024:03:21:05 +0000] "POST /wp-login.php HTTP/1.1" 401 152 "-" "python-requests/2.28.0" "0.312" `
주요 필드
| 필드 | 설명 |
|---|
| ------ | ------ |
$remote_addr | 클라이언트 IP 주소 |
$time_local | 요청 수신 시각 |
$request | HTTP 메서드, 경로, 프로토콜 |
$status | HTTP 응답 상태 코드 |
$body_bytes_sent | 응답 바이트 수 |
$http_referer | 참조 URL |
$http_user_agent | 클라이언트 User-Agent |
$request_time | 응답 처리 시간 (초) — 포함 시 성능 분석 가능 |
분석 가능 항목
- 의심 IP 탐지 및 공격 패턴 분류 (SQLi, XSS, 경로 순회, 브루트포스)
- 상태 코드 분포, 에러 집중 경로
- User-Agent 분류 (봇, 스캐너, 브라우저)
- 응답 시간 기반 P95/P99 성능 지표 ($request_time 포함 시)
- 시간대별 요청·에러 추이
Apache access.log (Combined Log Format)
Apache HTTP Server의 기본 액세스 로그 포맷입니다.
예시 라인
` 198.51.100.7 - frank [10/Oct/2024:13:55:36 -0700] "GET /admin HTTP/1.1" 403 287 "http://example.com/" "Nikto/2.1.6" `
주요 필드
| 필드 | 설명 |
| ------ | ------ |
%h | 클라이언트 IP 주소 |
%l | 식별자 (대부분 하이픈) |
%u | 인증된 사용자명 (없으면 하이픈) |
%t | 요청 수신 시각 |
"%r" | 요청 라인 (메서드, 경로, HTTP 버전) |
%>s | 응답 상태 코드 |
%b | 응답 바이트 수 |
"%{Referer}i" | 참조 URL |
"%{User-Agent}i" | 클라이언트 User-Agent |
분석 가능 항목 — Nginx와 동일. 응답 시간 필드(%D, %T)가 포함된 커스텀 포맷도 지원합니다.
AWS ALB 액세스 로그
AWS Application Load Balancer가 S3 버킷에 기록하는 액세스 로그입니다.
예시 라인
` http 2024-10-10T13:55:36.000Z app/my-alb/abc123 203.0.113.42:54321 10.0.0.1:80 0.001 0.003 0.000 200 200 82 301 "GET https://example.com/api/v1/data HTTP/1.1" "curl/7.68.0" - - arn:aws:elasticloadbalancing:... "Root=1-..." "-" "-" 0 2024-10-10T13:55:35.999Z "forward" "-" "-" "10.0.0.1:80" "200" "-" "-" `
주요 필드
| 필드 | 설명 |
| ------ | ------ |
| type | 요청 프로토콜 (http / https / h2 / ws) |
| time | 요청 수신 시각 (ISO 8601) |
| client:port | 클라이언트 IP와 포트 |
| elb_status_code | ALB 응답 상태 코드 |
| target_status_code | 백엔드 응답 상태 코드 |
| request_processing_time | ALB 처리 시간 (-1은 연결 실패) |
| target_processing_time | 백엔드 처리 시간 |
| request | HTTP 요청 라인 |
| user_agent | User-Agent 문자열 |
분석 가능 항목
- ALB 상태코드와 백엔드 상태코드 불일치 탐지
- 타임아웃 집중 구간 파악 (request_processing_time = -1)
- 요청 처리시간 이상 구간 탐지
- 의심 User-Agent 및 공격 패턴 탐지
AWS CloudFront 로그
AWS CloudFront CDN이 기록하는 액세스 로그입니다. 탭 구분(TSV) 형식이며 헤더 라인을 포함합니다.
예시 라인
` #Version: 1.0 #Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs-bytes time-taken 2024-10-10 13:55:36 LAX1 1234 203.0.113.42 GET d111.cloudfront.net /index.html 200 82 0.312 `
분석 가능 항목
- 엣지 로케이션별 요청 분포
- 상태 코드 분포, 에러 집중 경로
- 의심 IP 및 공격 패턴 탐지
Linux syslog / auth.log
Debian/Ubuntu 계열의 /var/log/auth.log 및 표준 RFC 3164 syslog 형식을 지원합니다. systemd journal 포맷(ISO 8601 타임스탬프)도 자동 감지합니다.
예시 라인
` May 10 03:22:11 web01 sshd[23451]: Failed password for invalid user admin from 203.0.113.42 port 52341 ssh2 May 10 03:22:14 web01 sshd[23451]: Invalid user test from 203.0.113.42 May 10 03:25:01 web01 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/usr/bin/apt update `
분석 가능 항목
- SSH 인증 실패 집중 IP 탐지 (브루트포스)
- 유효하지 않은 사용자명 반복 시도
- sudo 명령어 실행 기록
- PAM 인증 실패 이벤트
- 연속 실패 후 MaxAuthTries 차단 이벤트
WordPress 관련 로그
WordPress 서비스를 운영하는 경우, Nginx 또는 Apache 로그에서 아래 경로에 대한 접근 패턴을 집중 탐지합니다.
탐지 대상 경로
| 경로 | 탐지 내용 |
| ------ | ----------- |
/wp-login.php | 관리자 로그인 반복 접근 (브루트포스) |
/xmlrpc.php | XML-RPC API 브루트포스 및 DDoS 악용 |
/wp-admin/ | 관리자 영역 무단 접근 |
/wp-content/plugins/* | 알려진 플러그인 취약점 탐색 |
/?author=숫자 | 사용자 열거 시도 |
LTSV (Labeled Tab-Separated Values)
각 필드에 레이블이 붙은 탭 구분 포맷입니다. Nginx에서 LTSV 포맷으로 출력하도록 설정한 경우 자동 감지됩니다.
예시 라인
` time:2024-10-10T13:55:36+09:00 host:203.0.113.42 req:GET /index.html HTTP/1.1 status:200 size:1234 ua:Mozilla/5.0 reqtime:0.012 `
JSON 로그
주요 필드(time, remote_addr, request, status, body_bytes_sent, http_user_agent, request_time 등)를 포함한 JSON 로그를 자동 감지합니다.
예시 라인
`json {"time":"2024-10-10T13:55:36+09:00","remote_addr":"203.0.113.42","request":"GET /api/v1/users HTTP/1.1","status":200,"body_bytes_sent":482,"http_user_agent":"Mozilla/5.0","request_time":0.042} `
커스텀 로그 포맷 (파서 빌더)
위 포맷 외에 자체 정의한 로그 형식이나 보안 장비 로그는 파서 빌더를 통해 직접 분석할 수 있습니다.
지원 정의 방식
- 포맷 문자열 — $remote_addr $time $method $path $status $bytes` 형태로 필드 순서 정의
- 정규식(Regex) — Named Group으로 필드 추출
- 필드-스키마 매핑 — 추출한 필드를 IP, 타임스탬프, 상태코드, 경로 등 역할로 지정
커스텀 파서로 필드를 정확히 매핑한 경우, 표준 포맷과 동일한 수준의 탐지와 통계 분석이 가능합니다.