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. |