日志与日志组

最近更新时间: 2024-10-17 17:10:00

日志

日志(Log)是应用系统运行过程中产生的记录数据,如用户操作日志、接口访问日志、系统错误日志等。日志通常以文本的形式存储在应用系统所在的机器上,一条系统运行记录对应的日志可能为一行文本(单行日志),也可能为多行文本(多行日志)。

单行日志示例:

59.x.x.x - - [06/Aug/2019:12:12:19 +0800] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://119.x.x.x/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-"

多行日志示例:

java.net.SocketTimeoutException:Receive timed out
  at j.n.PlainDatagramSocketImpl.receive0(Native Method)[na:1.8.0_151]
  at j.n.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:143)[^]
  at j.n.DatagramSocket.receive(DatagramSocket.java:812)[^]
  at o.s.n.SntpClient.requestTime(SntpClient.java:213)[classes/]
  at o.s.n.SntpClient$1.call(^:145)[^]
  at ^.call(^:134)[^]
  at o.s.f.SyncRetryExecutor.call(SyncRetryExecutor.java:124)[^]
  at o.s.f.RetryPolicy.call(RetryPolicy.java:105)[^]
  at o.s.f.SyncRetryExecutor.call(SyncRetryExecutor.java:59)[^]
  at o.s.n.SntpClient.requestTimeHA(SntpClient.java:134)[^]
  at ^.requestTimeHA(^:122)[^]
  at o.s.n.SntpClientTest.test2h(SntpClientTest.java:89)[test-classes/]
  at s.r.NativeMethodAccessorImpl.invoke0(Native Method)[na:1.8.0_151]

对于一条日志,其主要组成部分如下:

组成部分 含义 示例
TIMESTAMP 日志时间,采用毫秒格式的UNIX时间戳 1640005601188
FILENAME 日志来源文件 /data/log/nginx/access.log
SOURCE 日志来源 IP 10.0.1.2
日志正文 日志主体内容,以 key:value 的形式存储,key 为字段名称,value 为字段值。
日志提取模式为单行全文或多行全文(即原始日志不经切分,直接将整条日志上报)时,整条日志存储在CONTENT字段下。
日志提取模式为其他模式(例如通过分割符切分日志)时,原始日志里的每一部分对应一个 key:value
单行全文或多行全文模式:
10.20.20.10;[2018-07-16 13:12:57];GET /online/sample HTTP/1.1;200
其他模式:
IP: 10.20.20.10
request: GET /online/sample HTTP/1.1
status: 200
time: [2018-07-16 13:12:57]
元数据 对日志的简单描述或归类,例如 TKE 日志中,某条日志所属的集群或容器,以 key:value 的形式存储,key 以TAG.开头 TAG.clusterId:1skzv59c

日志组

日志组(LogGroup)是一个包含多条日志的集合。在上传日志的过程中,为提高数据读写效率,将多条日志打包成一个日志组,并以日志组为单位上传到 CLS。

一个日志组里的日志具有相同的基本信息(TIMESTAMPFILENAMESOURCE和元数据等)。