日志
日志(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 outat 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 |
| __HOSTNAME__ | 日志来源机器名称,需使用2.7.4及以上版本的 Loglistener 才会采集该字段 | localhost |
| __RAWLOG__ | {"ip":"10.20.20.10","request":"GET /online/sample HTTP/1.1","status":200,"time":"[2018-07-16 13:12:57]"} | |
| __INDEX_STATUS__ | 日志创建索引异常原因,值非空时代表当前日志创建索引出现异常,原始日志被存储在
__RAWLOG__中,__INDEX_STATUS__为异常原因 | IndexPartFail:part of fields do not match the index configuration |
日志正文 | __CONTENT__ | 日志提取模式为单行全文或多行全文(即原始日志不经切分,直接将整条日志上报)时,整条日志存储在该字段中 | 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。
一个日志组里的日志具有相同的基本信息(__TIMESTAMP__、__FILENAME__、__SOURCE__、__HOSTNAME__ 和元数据)。