decodehttp

이더넷 프레임에서 HTTP 요청/응답 쌍을 디코딩하여 메서드, 호스트, 경로, 상태 코드, 전송 바이트 등을 추출합니다.

명령어 속성

항목설명
명령어 유형가공 쿼리
필요 권한없음
라이선스 사용량해당 없음
병렬 실행미지원
분산 실행수집 노드에서 실행 (mapper)

문법

decodehttp

입력 필드

필드타입필수 여부설명
payload바이너리필수이더넷 프레임 데이터. 바이너리 타입이 아닌 경우 입력 레코드를 그대로 출력합니다.

출력 필드

필드타입설명
src_ipIP 주소클라이언트 IP 주소
src_port32비트 정수클라이언트 포트 번호
dst_ipIP 주소서버 IP 주소
dst_port32비트 정수서버 포트 번호
method문자열HTTP 메서드. GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE, CONNECT
host문자열HTTP 요청의 Host 헤더 값
path문자열HTTP 요청 경로
status문자열HTTP 응답 상태 코드 (예: 200, 404, 500)
sent64비트 정수클라이언트가 전송한 콘텐츠 크기 (바이트)
rcvd64비트 정수서버가 전송한 콘텐츠 크기 (바이트)
req_time164비트 정수HTTP 요청 시작 시각 (에포크 밀리초)
req_time264비트 정수HTTP 요청 종료 시각 (에포크 밀리초)
res_time164비트 정수HTTP 응답 시작 시각 (에포크 밀리초)
res_time264비트 정수HTTP 응답 종료 시각 (에포크 밀리초)

오류 코드

파싱 오류

해당 사항 없음

런타임 오류

해당 사항 없음

설명

decodehttp 명령어는 입력 레코드의 payload 필드에서 이더넷 프레임을 읽어 TCP 기반 HTTP 프로토콜의 요청/응답 쌍을 디코딩합니다. payload 필드가 바이너리 타입이 아닌 경우 입력 레코드를 그대로 다음 명령어로 전달합니다.

HTTP 요청과 응답이 한 쌍으로 완성되면 하나의 출력 레코드를 생성합니다. 요청에서 메서드, 호스트, 경로, 전송 바이트를 추출하고, 응답에서 상태 코드, 수신 바이트를 추출합니다. 각 요청과 응답의 시작/종료 시각을 밀리초 단위로 기록하므로 응답 시간 분석에 활용할 수 있습니다.

TCP 세션은 1초 단위로 갱신되며, 시간이 변경되면 이전 세션 상태를 초기화합니다.

사용 예

  1. PCAP 파일에서 HTTP 트래픽 디코딩

    pcapfile /opt/logpresso/http-capture.pcap
    | decodehttp
    

    PCAP 파일에서 읽은 이더넷 프레임의 HTTP 요청/응답 쌍을 디코딩합니다.

  2. HTTP 메서드별 요청 수 집계

    pcapfile /opt/logpresso/http-capture.pcap
    | decodehttp
    | stats count by method
    

    HTTP 요청을 메서드별로 집계합니다.

  3. 응답 시간이 긴 요청 조회

    pcapfile /opt/logpresso/http-capture.pcap
    | decodehttp
    | eval response_time = res_time2 - req_time1
    | sort -response_time
    | limit 10
    

    HTTP 응답 완료까지 소요 시간이 가장 긴 상위 10건을 조회합니다.

  4. 특정 상태 코드 필터링

    pcapfile /opt/logpresso/http-capture.pcap
    | decodehttp
    | search status == "500"
    | fields src_ip, host, path, status
    

    HTTP 500 응답을 반환한 요청을 필터링합니다.

호환성

decodehttp 명령어는 소나 4.0 이전 버전부터 제공되었습니다.