概述
日志服务(Cloud Log Service,CLS)提供采集客户端, API 接入方式和 SDK 采集方式,方便用户将应用程序日志导入到日志服务。目前日志服务提供结构化上传方式,要求数据按照 key-value 的方式进行上传。
日志结构化
日志的结构化指您的日志数据将以 key-value 的形式存储在 CLS 平台上。结构化后的日志数据可以根据指定的键值进行日志检索、日志分析及日志投递。日志服务允许直接上报结构化的数据,详见以下说明:
例如,一条本地原始日志为:
10.20.20.10;[Tue Jan 22 14:49:45 CST 2019 +0800];GET /online/sample HTTP/1.1;127.0.0.1;200;647;35;http://127.0.0.1/
指定日志的解析方式为分隔符方式,以;
分号作为分隔符,可以将该条日志解析为多个字段组,每个字段组按 key-value 键值对的方式进行组织,为每个 key 定义一个键名称,如下所示:
IP: 10.20.20.10
time: [Tue Jan 22 14:49:45 CST 2019 +0800]
request: GET /online/sample HTTP/1.1
host: 127.0.0.1
status: 200
length: 647
bytes: 35
referer: http://127.0.0.1/
LogListener 提供多种解析方式,其中单行全文或多行全文上报的日志也会解析成结构化形式,LogListener 会默认添加__CONTENT__
作为 key,原文作为 value,以此组成 key-value 键值对,如下表所示:
LogListener 解析方式 | 键名称(key) | 解释说明 |
---|---|---|
单行/多行全文 | __CONTENT__ |
默认 __CONTENT__ 为键名 |
json 格式 | json 中的名称 | 自动以 json 日志原文中的名称/值,作为 key-value 键值对 |
分隔符格式 | 自定义 | 根据分隔符号划分字段后,需为每组字段自定义 key 名称 |
完全正则 | 自定义 | 根据正则表达式提取字段后,需为每组字段自定义 key 名称 |
采集方式
日志服务提供多种采集方式:
采集方式 | 描述 |
---|---|
API 方式采集 | 通过调用日志服务 API 上传结构化日志至日志服务,详情请参考 上传日志接口 文档 |
SDK 方式采集 | 通过使用 SDK 上传结构化日志至日志服务,详情请参考 SDK 采集 文档 |
LogListener 客户端采集 | LogListener 是日志服务提供的日志采集客户端,通过控制台简单配置可快速接入日志服务,详情请参考 LogListener 使用流程 |
采集方式对比:
类别名称 | LogListener 采集 | API 方式采集 |
---|---|---|
修改代码 | 对应用程序是无侵入式,无需修改代码 | 需修改应用程序代码才能上报日志 |
断点续传 | 支持断点续传日志 | 自行代码实现 |
失败重传 | 自带重试机制 | 自行代码实现 |
本地缓存 | 支持本地缓存,高峰期间保障数据完整 | 自行代码实现 |
资源占用 | 占用内存、CPU 等资源 | 无额外资源占用 |
日志源接入
不同的日志源可以选择不同的日志接入方式,详情参考以下列表:
日志源环境
系统环境 | 推荐接入方式 |
---|---|
Linux/Unix | LogListener 采集 / Kafka 协议上传 / API 上传日志 |
Windows | Beats 采集 / Kafka 协议上传 / API 上传日志 |
iOS/Android/Web 端 | SDK 上传日志 |
云产品日志
请参见 云产品日志接入。