日志

最近更新时间:2024-10-18 10:20:11

我的收藏

日志

日志(Log)是应用系统运行过程中产生的记录数据,如用户操作日志、接口访问日志、系统错误日志等。日志通常以文本的形式存储在应用系统所在的机器上,一条系统运行记录对应的日志可能为一行文本(单行日志),也可能为多行文本(多行日志)。
日志可通过 LogListener 上传至日志服务(Cloud Log Service,CLS),也可以通过 API、SDK 等其他方式上传。
单行日志示例:
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__ 和元数据)。