14장. 로그 레코드 필드
로깅에서 내보낸 로그 레코드에 다음 필드가 있을 수 있습니다. 로그 레코드는 일반적으로 JSON 개체로 포맷되지만 동일한 데이터 모델을 다른 인코딩에 적용할 수 있습니다.
Elasticsearch 및 Kibana에서 이러한 필드를 검색하려면 검색할 때 전체 점선 필드 이름을 사용합니다. 예를 들어 Elasticsearch /_search URL로 Kubernetes Pod 이름을 찾으려면 /_search/q=kubernetes.pod_name:name-of-my-pod
를 사용합니다.
최상위 수준 필드는 모든 레코드에 있을 수 있습니다.
message
원본 로그 항목 텍스트 UTF-8로 인코딩됩니다. 비어 있지 않은 structured
필드가 있는 경우 이 필드가 없거나 비어 있을 수 있습니다. structured
대한 자세한 내용은 설명을 참조하십시오.
데이터 유형 | text |
예시 값 |
|
structured
구조화된 오브젝트인 원본 로그 항목입니다. 이 필드는 Forwarder가 구조화된 JSON 로그를 구문 분석하도록 구성된 경우에 존재할 수 있습니다. 원본 로그 항목이 유효한 구조화된 로그인 경우 이 필드에는 동일한 JSON 구조가 포함됩니다. 그렇지 않으면 이 필드는 비어 있거나 없으며 message
필드에는 원래 로그 메시지가 포함됩니다. structured
필드에는 로그 메시지에 포함된 하위 필드가 있을 수 있으며 여기에 정의된 제한이 없습니다.
데이터 유형 | group |
예시 값 | map[message:starting fluentd worker pid=21631 ppid=21618 worker=0 pid:21631 ppid:21618 worker:0] |
@timestamp
로그 페이로드가 작성되거나 작성 시간을 알 수 없는 경우 로그 페이로드가 처음 수집될 때 표시되는 UTC 값입니다. "@" 접두사는 특정 용도로 예약된 필드를 나타냅니다. 대부분의 도구가 기본적으로 Elasticsearch를 사용하여 “@timestamp”를 찾습니다.
데이터 유형 | date |
예시 값 |
|
호스트 이름
이 로그 메시지가 시작된 호스트의 이름입니다. Kubernetes 클러스터에서 이는 kubernetes.host
와 동일합니다.
데이터 유형 | keyword |
ipaddr4
소스 서버의 IPv4 주소입니다. 배열이 될 수 있습니다.
데이터 유형 | ip |
ipaddr6
사용 가능한 경우 소스 서버의 IPv6 주소입니다. 배열이 될 수 있습니다.
데이터 유형 | ip |
level
rsyslog(severitytext property)
Python 로깅 모듈 등을 비롯한 다양한 소스의 로깅 수준입니다.
다음 값은syslog.h
에서 가져오고 그 앞에 해당하는 숫자가 옵니다.
-
0
=emerg
, 시스템을 사용할 수 없습니다. -
1
=alert
, 즉시 조치를 취해야 합니다. -
2
=crit
, 심각한 상태입니다. -
3
=err
, 오류 상태입니다. -
4
=warn
, 경고 상태입니다. -
5
=notice
, 정상이지만 중요한 상태입니다. -
6
=info
, 정보를 제공합니다. -
7
=debug
, 디버그 수준 메시지입니다.
다음 두 값은 syslog.h
의 일부가 아니지만 널리 사용됩니다.
-
8
=trace
, trace-level 메시지는debug
메시지보다 더 자세합니다. -
9
=unknown
, 로깅 시스템에서 인식하지 않는 값을 얻는 경우입니다.
다른 로깅 시스템의 로그 수준 또는 우선 순위를 이전 목록의 가장 가까운 일치 항목에 매핑합니다. 예를 들어 python 로깅에서는 CRITICAL
은 crit
로 ERROR
는 err
등과 일치시킬 수 있습니다.
데이터 유형 | keyword |
예시 값 |
|
pid
사용 가능한 경우 이는 로깅 엔티티의 프로세스 ID입니다.
데이터 유형 | keyword |
service
사용 가능한 경우 로깅 엔티티와 연관된 서비스의 이름입니다. 예를 들어 syslog의 APP-NAME
및 rsyslog의 programname
속성은 서비스 필드에 매핑됩니다.
데이터 유형 | keyword |