지원 로그 포맷

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"

주요 필드

분석 가능 항목

  • 의심 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"

주요 필드

분석 가능 항목 — 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" "-" "-"

주요 필드

분석 가능 항목

  • 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 로그에서 아래 경로에 대한 접근 패턴을 집중 탐지합니다.

탐지 대상 경로

필드설명
$remote_addr클라이언트 IP 주소
$time_local요청 수신 시각
$requestHTTP 메서드, 경로, 프로토콜
$statusHTTP 응답 상태 코드
$body_bytes_sent응답 바이트 수
$http_referer참조 URL
$http_user_agent클라이언트 User-Agent
$request_time응답 처리 시간 (초) — 포함 시 성능 분석 가능
필드설명
%h클라이언트 IP 주소
%l식별자 (대부분 하이픈)
%u인증된 사용자명 (없으면 하이픈)
%t요청 수신 시각
"%r"요청 라인 (메서드, 경로, HTTP 버전)
%>s응답 상태 코드
%b응답 바이트 수
"%{Referer}i"참조 URL
"%{User-Agent}i"클라이언트 User-Agent
필드설명
type요청 프로토콜 (http / https / h2 / ws)
time요청 수신 시각 (ISO 8601)
client:port클라이언트 IP와 포트
elb_status_codeALB 응답 상태 코드
target_status_code백엔드 응답 상태 코드
request_processing_timeALB 처리 시간 (-1은 연결 실패)
target_processing_time백엔드 처리 시간
requestHTTP 요청 라인
user_agentUser-Agent 문자열
경로탐지 내용
/wp-login.php관리자 로그인 반복 접근 (브루트포스)
/xmlrpc.phpXML-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 로그를 자동 감지합니다.

예시 라인

{"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}

애플리케이션 / 시스템 로그 (일반 로그)

MongoDB, Go, Java/Log4j, Python logging 등 애플리케이션·데이터베이스가 출력하는 "타임스탬프 + 레벨 + 메시지" 형태의 일반 로그입니다. HTTP 요청 로그가 아니므로 별도 포맷으로 자동 인식되며, 다른 구조화된 포맷(Nginx, CloudFront 등)으로 인식되지 않는 라인에 한해 폴백으로 적용됩니다.

예시 라인 (MongoDB / Go 스타일 — 레벨이 타임스탬프 바로 뒤)

2024-10-10T13:55:36.184+0900 I  NETWORK  [listener] connection accepted from 203.0.113.42:36538 #15108870 (181 connections now open)
2024-10-10T13:55:37.500+0900 WARN [conn15108870] Connection timeout waiting for lock on database "app"
2024-10-10T13:55:38.900+0900 ERROR [WT] WiredTiger error (28) file open failed: /data/db/collection-0.wt: No such file or directory

예시 라인 (Log4j / Logback 기본 포맷 — 스레드가 레벨보다 앞)

2024-10-10 13:55:36,184 [main] ERROR com.acme.PaymentService - Failed to process payment for order 4821
	at com.acme.PaymentService.charge(PaymentService.java:88)
	at com.acme.PaymentService.process(PaymentService.java:42)
	Caused by: java.net.SocketTimeoutException: Read timed out

예시 라인 (Python logging 기본 포맷)

2024-10-10 13:55:36,184 - root - WARN - Retry attempt 1 for order 4821

인식 조건

  • 타임스탬프는 YYYY-MM-DDT 또는 공백으로 이어지는 HH:MM:SS (밀리초·타임존 옵션)를 지원합니다.
  • 레벨은 타임스탬프 바로 뒤가 아니어도 됩니다. 스레드명([main])이나 - name - 같은 필드가 최대 3개 토큰까지 끼어 있어도 인식합니다. [WARN]처럼 대괄호로 감싼 형태도 지원합니다.
  • 레벨 값은 TRACE, DEBUG, INFO, WARN/WARNING, ERROR, FATAL/CRITICAL, 또는 MongoDB식 단일 문자(I, W, E, F, D, T)를 인식합니다.
  • 레벨 뒤의 나머지 문자열이 메시지로 처리됩니다.
  • 새 타임스탬프로 시작하지 않는 뒤따르는 줄(Java 스택 트레이스의 at ..., Caused by: ..., Python Traceback 블록 등)은 별도 항목으로 세지 않고, 바로 앞서 열린 로그 항목의 원본 샘플에 이어 붙입니다.
분석 가능 항목
  • 로그 레벨 분포 (INFO/WARN/ERROR/FATAL 건수)
  • IP, 포트, ID, 타임스탬프 등 가변 값을 제거해 동일 원인의 에러를 하나의 패턴으로 묶는 메시지 클러스터링 (스택 트레이스가 다르게 찍혀도 헤더 메시지가 같으면 같은 클러스터로 묶임)
  • 클러스터별 발생 횟수, 최초/최근 발생 시각, 스택 트레이스를 포함한 원본 로그 샘플
  • 클러스터 단위 AI 원인 분석(발생 원인 추정, 심각도 판단, 조치 방법 제안) 및 전체 패턴을 종합한 AI 전체 평가
해당 로그가 감지되면 사이드바에 애플리케이션 로그 탭이 자동으로 나타납니다.

커스텀 로그 포맷 (파서 빌더)

위 포맷 외에 자체 정의한 로그 형식이나 보안 장비 로그는 파서 빌더를 통해 직접 분석할 수 있습니다.

지원 정의 방식

  • 포맷 문자열$remote_addr $time $method $path $status $bytes 형태로 필드 순서 정의
  • 정규식(Regex) — Named Group으로 필드 추출
  • 필드-스키마 매핑 — 추출한 필드를 IP, 타임스탬프, 상태코드, 경로 등 역할로 지정
커스텀 파서로 필드를 정확히 매핑한 경우, 표준 포맷과 동일한 수준의 탐지와 통계 분석이 가능합니다.