导入 COS 数据

最近更新时间:2025-07-07 20:02:32

我的收藏

概述

日志服务(Cloud Log Service,CLS)投递功能打通产品生态上游链路,将腾讯云对象存储(Cloud Object Storage,COS)中的数据导入到日志服务,实现日志数据的查询分析、加工等操作,挖掘日志数据价值,您只需要在日志服务控制台进行简单的配置即可完成数据导入。

前提条件

开通日志服务,创建日志集与日志主题,并成功采集到日志数据。
开通对象存储,并确保待导入的文件已经上传到 COS Bucket 中,更多信息请参见 上传对象
设置当前操作账号拥有访问 COS 的权限,即已授权日志服务使用 CLS_QcsRole 角色访问您的 COS 资源。更多信息请参见 投递 COS 权限配置

配置流程

1. 选择日志主题:可以选择现有的日志主题(topic)或者创建新的日志主题(topic),用于存储从 COS 导入到 CLS 的数据。
2. 导入数据源配置:需要配置想要导入的 COS 对象路径,以及压缩方式(gzip/lzop/snappy/无压缩)。
3. 解析配置:需要配置导入文件的解析格式,目前支持单行全文/多行全文/单行正则/多行正则/JSON/分隔符。
4. 索引配置:需要配置目前 topic 的索引配置,且检索必须开启索引配置。如果选择已存在的日志主题,则新索引配置只对修改后的数据生效。

操作步骤

步骤1:创建/选择日志主题

创建新的日志主题
使用现有的日志主题
如果您想创建新的日志主题,可执行如下操作:
2. 在左侧导航栏中,选择概览,进入概览页面。
3. 快速接入中,选择数据导入,找到并单击对象存储 COS 导入,进入LogListener采集配置流程。

4. 创建日志主题页面,根据实际需求,输入日志主题名称,配置日志存储时间,选择日志集等信息,单击下一步



如果您想选择现有的日志主题,可执行如下操作:
2. 在左侧导航栏中,单击日志主题,选择需要投递的日志主题,单击日志主题名称,进入日志主题管理页面。
3. 选择采集配置页签,在 COS 数据导入配置栏下单击新增


步骤2:数据源配置

1. 在数据源配置页面,依次配置如下信息:
配置项
说明
规则
是否必填
任务名称
配置导入任务的名称。
字母、数字、_和-
任务类型
配置是一次导入还是持续性分多次导入。
单选
存储桶地域
配置需要导入的文件所在存储桶的地域位置。如果文件所在地域和导入日志主题所在地域不同,则会因跨地域访问而产生外网费用。
列表选择
COS 存储桶
选择需要导入的文件所在存储桶。下拉框会列出当前选择地域下的所有存储桶供您选择。
列表选择
文件前缀
输入待导入的 COS 文件所在文件夹的前缀,用于准确定位待导入的文件夹,支持输入文件前缀 csv/,或完整文件路径 csv/object.gz。
注意:
不支持采集存储类型为“归档存储”或“深度归档存储”的文件。
输入框
压缩模式
选择待导入的 COS 文件的压缩格式,日志服务根据对应格式进行解压并读取数据,支持 gzip/lzop/snappy/bzip2/zip/zstd/deflate/lz4(frame)/不压缩。
列表选择
2. 单击预览,系统会选择符合配置规则的一条路径数据进行展示,并提示输入的文件前缀下共有多少文件。如下图所示:

3. 确认预览无误后,单击下一步

步骤3:解析配置

1. 在解析配置页面,配置如下主要信息:
提取模式:可选择以下几种提取模式。
单行全文
单行-完全正则
多行全文
多行-完全正则
JSON
分隔符
单行全文日志是指一行日志内容为一条完整的日志。日志服务在采集的时候,将使用换行符 \\n 来作为一条日志的结束符。为了统一结构化管理,每条日志都会存在一个默认的键值__CONTENT__,但日志数据本身不再进行日志结构化处理,也不会提取日志字段,日志属性的时间项由日志采集的时间决定。
假设一条日志原始数据为:
Tue Jan 22 12:08:15 CST 2019 Installed: libjpeg-turbo-static-1.2.90-6.el7.x86_64
采集到日志服务的数据为:
__CONTENT__:Tue Jan 22 12:08:15 CST 2019 Installed: libjpeg-turbo-static-1.2.90-6.el7.x86_64
单行完全正则格式通常用来处理结构化的日志,指将一条完整日志按正则方式提取多个 key-value 的日志解析模式。
假设一条日志原始数据为:
10.135.46.111 - - [22/Jan/2019:19:19:30 +0800] "GET /my/course/1 HTTP/1.1" 127.0.0.1 200 782 9703 "http://127.0.0.1/course/explore?filter%5Btype%5D=all&filter%5Bprice%5D=all&filter%5BcurrentLevelId%5D=all&orderBy=studentNum" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0" 0.354 0.354
配置的正则表达式为如下:
(\\S+)[^\\[]+(\\[[^:]+:\\d+:\\d+:\\d+\\s\\S+)\\s"(\\w+)\\s(\\S+)\\s([^"]+)"\\s(\\S+)\\s(\\d+)\\s(\\d+)\\s(\\d+)\\s"([^"]+)"\\s"([^"]+)"\\s+(\\S+)\\s(\\S+).*
采集到日志服务的数据为:
ody_bytes_sent: 9703
http_host: 127.0.0.1
http_protocol: HTTP/1.1
http_referer: http://127.0.0.1/course/explore?filter%5Btype%5D=all&filter%5Bprice%5D=all&filter%5BcurrentLevelId%5D=all&orderBy=studentNum
http_user_agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0
remote_addr: 10.135.46.111
request_length: 782
request_method: GET
request_time: 0.354
request_url: /my/course/1
status: 200
time_local: [22/Jan/2019:19:19:30 +0800]
upstream_response_time: 0.354
配置单行-完全正则模式
1. 采集配置页面,将“提取模式”设置为单行-完全正则,并在“日志样例”文本框中,输入日志样例。如下图所示:



2. 
根据如下规则,定义正则表达式:

系统有手动模式自动模式两种方式定义正则表达式。系统会根据您选择的模式以及定义好的正则表达式,提取 key-value 进行正则表达式的验证。
手动模式
自动模式
您可以手动输入表达式提取 key-value 进行验证:
(1)在“正则表达式”的文本框中,输入正则表达式。
(2)单击验证,系统将判断日志样例与正则表达式是否匹配。

您可以单击自动正则表达式工具切换为自动模式:
(1)在弹出的“
正则表达式自动生成
”模态视图中,根据实际的检索分析需求,鼠标左键选中需要提取 key-value 的日志内容,并在弹出的文本框中,输入键(key)名,单击确认提取。如下图所示:

系统将自动对该部分内容提取一个正则表达式,自动提取结果会出现在右侧key-value 表格中,根据自动提取结果自动生成的提取正则表达式会出现在下侧表格中。如下图所示:



(2)重复 自动模式的步骤(1),直到提取完所有的 key-value 对。如下图所示:



(3)单击确定,系统将根据提取好的 key-value 对自动生成完整的正则表达式。
说明:
无论您使用手动模式还是自动模式,在完成定义并验证通过后,提取结果都将展示在“日志提取结果”中。若结果不符合预期,可返回定义正则表达式重新编辑,并再次验证。
您只需定义每一组 key-value 对的 key 名称,即可将该名称用于日志检索分析。
更多日志验证:
1. 当您有多条复杂日志样例数据时,可以将匹配更多日志设置为

,即可验证您的正则表达式样例的通过率。
2. 输入待验证日志样例,以换行符分开多条数据,单击验证,系统将验证样通过率。出现

时,即为验证通过,如下图所示:

多行全文日志是指一条完整的日志数据可能跨占多行(例如 Java stacktrace)。在此情况下,为了能让日志系统明确区分开每条日志,采用首行正则的方式进行匹配。当某行日志匹配上预先设置的正则表达式,就认为是一条日志的开头,而下一个行首出现作为该条日志的结束标识符。
多行全文也会设置一个默认的键值__CONTENT__,但日志数据本身不再进行日志结构化处理,也不会提取日志字段,日志属性的时间项由日志采集的时间决定。
假设一条多行日志原始数据为:
2019-12-15 17:13:06,043 [main] ERROR com.test.logging.FooFactory:
java.lang.NullPointerException
at com.test.logging.FooFactory.createFoo(FooFactory.java:15)
at com.test.logging.FooFactoryTest.test(FooFactoryTest.java:11)
首行正则表达式为如下:
\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2},\\d{3}\\s.+
采集到日志服务的数据为:
__CONTENT__:2019-12-15 17:13:06,043 [main] ERROR com.test.logging.FooFactory:\\njava.lang.NullPointerException\\n at com.test.logging.FooFactory.createFoo(FooFactory.java:15)\\n at com.test.logging.FooFactoryTest.test(FooFactoryTest.java:11)
配置多行全文格式:
1. 在“采集配置”页面,将“提取模式”设置为多行全文。如下图所示:

2. 根据如下规则,定义正则表达式。
3. 您可选择自动生成或者手动输入两种方式定义首行正则表达式,系统会根据样例内容进行正则表达式的验证。
自动生成:在文本框中,输入日志样例,单击自动生成,系统自动在置灰的文本框中生成行首正则表达式。

手动输入:在文本框中,输入日志样例,输入首行正则表达式,单击验证,系统将判断表达式是否通过。

配置上传解析失败日志:
建议开启上传解析失败日志。开启后,LogListener 会上传各式解析失败的日志。若关闭上传解析失败日志,则会丢弃失败的日志。



开启后需要配置解析失败的 Key 值(默认为 LogParseFailure),所有解析失败的日志,均以输入内容作为键名称(Key),原始日志内容作为值(Value)进行上传。
假设您的一条日志原始数据为:
[2018-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened
at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
行首正则表达式为:
\\[\\d+-\\d+-\\w+:\\d+:\\d+,\\d+]\\s\\[\\w+]\\s.*
配置的自定义正则表达式为:
\\[(\\d+-\\d+-\\w+:\\d+:\\d+,\\d+)\\]\\s\\[(\\w+)\\]\\s(.*)
系统根据()捕获组提取对应的 key-value 后,您可以自定义每组的 key 名称如下所示:
time: 2018-10-01T10:30:01,000`
level: INFO`
msg:java.lang.Exception: exception happened
at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
配置多行-完全正则模式:
1. 在采集配置页面,将“提取模式”设置为多行-完全正则,并在“日志样例”文本框中,输入日志样例。如下图所示:

2. 根据如下规则,定义首行正则表达式:
3. 您可选择是否开启自动生成方式定义行首正则表达式(不开启可以手动输入),确定跨行日志边界。待表达式验证成功后,系统会为您判断行首正则表达式匹配的日志条数。
自动生成:开启自动生成,系统自动在置灰的文本框中生成行首正则表达式。如下图所示:

手动输入:在文本框中,手动输入行首正则表达式,单击验证,系统将判断表达式是否通过。如下图所示:

提取正则表达式:
系统有手动模式自动模式两种方式定义正则表达式。您可手动输入表达式提取 key-value 进行验证,也可单击正则表达式自动生成切换为自动模式。系统会根据您选择的模式以及定义好的正则表达式,提取 key-value 进行正则表达式的验证。
手动模式
自动模式
1. 在“提取正则表达式”的文本框中,输入正则表达式。
2. 单击验证,系统将判断日志样例与正则表达式是否匹配。

1. 在弹出的“
正则表达式自动生成
”模态视图中,根据实际的检索分析需求,选中需要提取 key-value 的日志内容,并在弹出的文本框中,输入键(key)名,单击确认提取。如下图所示:

2. 系统将自动对该部分内容提取一个正则表达式,自动提取结果会出现在 key-value 表格中。如下图所示:

3. 重复 自动模式的步骤1,直到提取完所有的 key-value 对。如下图所示:

4. 单击确定,系统将根据提取好的 key-value 对自动生成完整的正则表达式。如下图所示:

说明:
无论选择自动模式还是手动模式,正则提取模式均在完成定义并验证通过后,将提取结果展示在“抽取结果”中。您只需定义每一组 key-value 对的 key 名称,即可将该名称用于日志检索分析。
匹配更多日志:
1. 当您的日志数据复杂时,可以将匹配更多日志设置为

,即可验证您的正则表达式样例的通过率。
2. 输入多个待验证日志样例,单击验证,系统将验证样例通过率。出现

时,即为验证通过,如下图所示:

配置日志时间戳来源:
您可选择以日志采集时间或者指定日志字段两种时间作为日志的时间戳:
日志采集时间
指定日志字段
使用日志采集的时间作为日志时间。

使用日志中指定字段的值作为日志的时间。
在日志时间字段中选择已经提取的 Value 值作为日志时间。

时间格式解析中手动输入或选择该值对应的解析表达式。例如:日志中代表时间的值为 07/Jul/2025:19:19:30 +0800,解析格式为:%d/%b/%Y :%H:%M:%S %z。更多请参见 配置时间格式

单击验证。
注意:
若时间格式填写错误,日志时间将以采集时间为准。
配置上传解析失败日志:
建议开启上传解析失败日志。开启后,LogListener 会上传各式解析失败的日志。若关闭上传解析失败日志,则会丢弃失败的日志。



开启后需要配置解析失败的 Key 值(默认为 LogParseFailure),所有解析失败的日志,均以输入内容作为键名称(Key),原始日志内容作为值(Value)进行上传。
假设您的一条 JSON 日志原始数据为:
{"remote_ip":"10.135.46.111","time_local":"22/Jan/2019:19:19:34 +0800","body_sent":23,"responsetime":0.232,"upstreamtime":"0.232","upstreamhost":"unix:/tmp/php-cgi.sock","http_host":"127.0.0.1","method":"POST","url":"/event/dispatch","request":"POST /event/dispatch HTTP/1.1","xff":"-","referer":"http://127.0.0.1/my/course/4","agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0","response_code":"200"}
经过日志服务结构化处理后,该条日志将变为如下:
agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0
body_sent: 23
http_host: 127.0.0.1
method: POST
referer: http://127.0.0.1/my/course/4
remote_ip: 10.135.46.111
request: POST /event/dispatch HTTP/1.1
response_code: 200
responsetime: 0.232
time_local: 22/Jan/2019:19:19:34 +0800
upstreamhost: unix:/tmp/php-cgi.sock
upstreamtime: 0.232
url: /event/dispatch
xff: -
配置日志时间戳来源:
日志采集时间
指定日志字段
使用日志采集的时间作为日志时间。

使用日志中指定字段的值作为日志的时间。
在日志时间字段中手动输入 JSON 中指定的时间字段作为日志时间。

时间格式解析中手动输入或选择该值对应的解析表达式。例如:日志中代表时间的值为 07/Jul/2025:19:19:30 +0800,解析格式为:%d/%b/%Y :%H:%M:%S %z。更多请参见 配置时间格式

单击验证。
注意:
若时间格式填写错误,日志时间将以采集时间为准。
配置上传解析失败日志:
建议开启上传解析失败日志。开启后,LogListener 会上传各式解析失败的日志。若关闭上传解析失败日志,则会丢弃失败的日志。



开启后需要配置解析失败的 Key 值(默认为 LogParseFailure),所有解析失败的日志,均以输入内容作为键名称(Key),原始日志内容作为值(Value)进行上传。
假设您的一条日志原始数据为:
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,如下所示:
IP: 10.20.20.10 -
bytes: 35
host: 127.0.0.1
length: 647
referer: http://127.0.0.1/
request: GET /online/sample HTTP/1.1
status: 200
time: [Tue Jan 22 14:49:45 CST 2019 +0800]
配置分隔符模式:
1. 将“提取模式”设置为分隔符
2. 选择分隔符,并在“日志样例”文本框中,输入日志样例,单击提取
系统根据确定的分隔符将日志样例进行切分,并展示在抽取结果栏中,您需要为每个字段定义唯一的 key。目前,日志采集支持多种分隔符,常见的分隔符有:空格、制表符、逗号、分号、竖线,若您的日志数据所采用的分隔符是其他符号,例如 ::: ,也可以通过自定义分词符进行解析。



配置日志时间戳来源:
日志采集时间
指定日志字段
使用日志采集的时间作为日志时间。

使用日志中指定字段的值作为日志的时间。
在日志时间字段中选择已经提取的 Value 值作为日志时间。

时间格式解析中手动输入或选择该值对应的解析表达式。例如:日志中代表时间的值为 07/Jul/2025:19:19:30 +0800,解析格式为:%d/%b/%Y :%H:%M:%S %z。更多请参见 配置时间格式

单击验证。
注意:
若时间格式填写错误,日志时间将以采集时间为准。
配置上传解析失败日志:
建议开启上传解析失败日志。开启后,LogListener 会上传各式解析失败的日志。若关闭上传解析失败日志,则会丢弃失败的日志。



开启后需要配置解析失败的 Key 值(默认为 LogParseFailure),所有解析失败的日志,均以输入内容作为键名称(Key),原始日志内容作为值(Value)进行上传。
过滤器:
过滤器可以帮助您根据业务需要添加日志采集过滤规则,为您筛选出有价值的日志数据。过滤规则为 Perl 正则表达式,所创建的过滤规则为命中规则,即匹配上正则表达式的日志才会被采集上报。
分隔符格式日志需要根据所自定义的键值对来配置过滤规则。例如,样例日志使用分隔符模式解析后,您希望 status 字段为 400 或 500 的所有日志数据被采集,那么 key 处配置 status,过滤规则处配置 400|500。
元数据:包括 bucket(存储桶名称)和object(完整对象路径)两种类型。选中元数据将以 __TAG__.{元数据}:xxx 的形式与日志一起导入。如:__TAG__.object: csv/object.gz。
如您需要对采集到的 CLS 日志进一步处理,如结构化、脱敏、过滤,然后再写入日志主题,您可单击页面下方的数据加工,添加数据加工,最后配置索引。



说明:
数据加工相关操作请参见 创建加工任务 文档中【前置数据加工】TAB 页面。
数据加工脚本的编写请参见 数据加工函数总览,或者 加工实战案例
数据加工会产生费用,详情请参见 计费概述
2. 单击下一步

步骤4:索引配置

1. 单击下一步,进入索引配置页面。
2. 索引配置页面,设置如下信息。配置详情请参见 索引配置

注意:
检索必须开启索引配置,否则无法检索。
3. 单击提交,进入编辑索引配置确认页面。单击确认。

如果您设置的索引配置仅需对新写入的日志生效,单击确认。如果您想对历史数据使配置生效,单击确认后,详情请参见重建索引,做进一步设置。
4. 操作成功,完成采集配置。

规格限制