본문 바로가기
WIKI 기술 지식 베이스

User-Agent 파서

원문 보기 위키 갱신

User-Agent 파서는 useragent 속성을 받아서 OS, 브라우저, 기기, 그리고 기타 사용자 데이터를 추출해 주는 프로세서예요. 설정하면 아래와 같은 속성들이 자동으로 만들어져요.

출처: 문서

본문

참고: 로그에 인코딩된 user-agent가 들어 있는 경우(예: IIS 로그)에는, 이 프로세서를 파싱 전에 URL을 디코딩하도록 설정해야 해요.

사용 사례

User-Agent 파서를 쓰면 apache 로그에서 브라우저, 기기, OS 같은 유용한 정보를 뽑아낼 수 있어요.

처리 전과 후의 로그 상태

예시: 커스텀 애플리케이션 로그에서 User Agent 파싱하기

처리 전:

{
  "client": {
    "ip": "10.12.4.20",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.5993.90 Safari/537.36"
  },
  "http": {
    "method": "GET",
    "url": "/v1/orders",
    "status_code": 200
  },
  "timestamp": 1696945536000
}

User-Agent 파서

User-Agent 파서 프로세서를 만들고, user_agent 속성을 파싱하도록 설정해요.

처리 후:

{
  "client": {
    "ip": "10.12.4.20",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.5993.90 Safari/537.36"
  },
  "http": {
    "method": "GET",
    "url": "/v1/orders",
    "status_code": 200,
    "useragent_details": {
      "browser": {
        "family": "Chrome",
        "major": "118",
        "minor": "0",
        "patch": "5993",
        "patch_minor": "90"
      },
      "device": {
        "brand": "Apple",
        "category": "Desktop",
        "family": "Mac",
        "model": "Mac"
      },
      "os": {
        "family": "Mac OS X",
        "major": "10",
        "minor": "15",
        "patch": "7"
      }
    }
  },
  "timestamp": 1696945536000
}

User-Agent 파서는 User Agent에서 추출한 구성 요소를 담은 새 중첩 속성(http.useragent_details)을 자동으로 추가해요.

API

Datadog Log Pipeline API 엔드포인트에 아래 user-agent 파서 JSON 페이로드를 사용하면 돼요:

{
  "type": "user-agent-parser",
  "name": "Parses <SOURCE_ATTRIBUTE> to extract all its User-Agent information",
  "is_enabled": true,
  "sources": ["http.useragent"],
  "target": "http.useragent_details",
  "is_encoded": false
}
파라미터 타입 필수 설명
type String 예 프로세서의 타입.
name String 아니요 프로세서의 이름.
is_enabled Boolean 아니요 프로세서가 활성화되어 있는지 여부. 기본값: false.
sources Array of strings 아니요 소스 속성 배열. 기본값: http.useragent.
target String 예 sources에서 추출한 모든 정보를 담는 상위 속성의 이름. 기본값: http.useragent_details.
is_encoded Boolean 아니요 소스 속성이 URL 인코딩되어 있는지 여부. 기본값: false.

더 알아보기 (Learn more)