第 16 章 日志记录字段
日志导出的日志记录中可以包括以下字段。虽然日志记录通常格式为 JSON 对象,但相同的数据模型可以应用到其他编码。
要从 Elasticsearch 和 Kibana 搜索这些字段,在搜索时使用完整的点号字段名称。例如,使用 Elasticsearch /_search URL,若要查找 Kubernetes pod 名称,请使用 /_search/q=kubernetes.pod_name:name-of-my-pod
。
顶级字段可以出现在每条记录中。
message
原始日志条目文本 UTF-8 编码。如果存在非空的 structured
字段,则此字段可能不存在或为空。请参见关于结构化
的描述,了解更多。
数据类型 | text |
示例值 |
|
结构化
原始日志条目作为结构化对象.如果转发器配置为解析结构化 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
相同。
数据类型 | 关键字 |
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
,debug 级信息。
以下两个值不是 syslog.h
的一部分,但被广泛使用:
-
8
=trace
,trace 级的信息,它比debug
信息更详细。 -
9
=unknown
,当日志系统获得一个无法被识别的值。
在前面的列表中,将其他日志记录系统的日志级别或优先级映射到其最接近的匹配项。例如,在 python logging 中,您可以使用 CRITICAL
匹配 crit
,使用 ERROR
匹配 err
,以此类推。
数据类型 | 关键字 |
示例值 |
|
pid
日志记录实体的进程 ID(若有)。
数据类型 | 关键字 |
service
与日志记录实体(若有)关联的服务的名称。例如,syslog 的 APP-NAME
和 rsyslog 的 programname
属性映射到 service 字段。
数据类型 | 关键字 |