日志
日志(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 |
| HOSTNAME | 日志来源机器名称,需使用2.7.4及以上版本的 Loglistener 才会采集该字段 | localhost |
| RAWLOG | 日志创建索引过程中,如果原始日志格式异常或索引配置与原始日志不匹配,可能会导致索引创建异常,此时 CLS 为了确保日志不丢失,会将原始日志存储在该字段中,作为兜底的异常处理方式 | {"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 |
| 普通字段 | 日志采集时对日志进行结构化后,原始日志以 key:value 的形式存储 |
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 和元数据等)。