导入 COS 数据

最近更新时间:2024-09-06 15:41:11

我的收藏

概述

日志服务(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 数据导入


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
多行全文日志是指一条完整的日志数据可能跨占多行(例如 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)
假设您的一条日志原始数据为:
[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)
假设您的一条 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: -
假设您的一条日志原始数据为:
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]
过滤器:
过滤器可以帮助您根据业务需要添加日志采集过滤规则,为您筛选出有价值的日志数据。过滤规则为 Perl 正则表达式,所创建的过滤规则为命中规则,即匹配上正则表达式的日志才会被采集上报。
分隔符格式日志需要根据所自定义的键值对来配置过滤规则。例如,样例日志使用分隔符模式解析后,您希望 status 字段为 400 或 500 的所有日志数据被采集,那么 key 处配置 status,过滤规则处配置 400|500。
使用采集时间:开启后可根据采集时间标记每条日志时间,或关闭此项指定某一字段作为日志时间。
说明
日志时间单位为:秒,若时间格式填写错误日志时间将以采集时间为准。
日志的时间属性有两种方式来定义:采集时间和原始时间戳。
采集时间:日志的时间属性由日志服务 CLS 从 COS 导入时间决定。
原始时间戳:日志的时间属性由原始日志中时间戳决定。
日志的原始时间戳作为日志时间属性。
关闭采集时间状态,在时间键和时间格式解析处,填写原始时间戳的时间键以及对应的时间解析格式。时间解析格式详情参见 配置时间格式
如您需要对采集到的 CLS 日志进一步处理,如结构化、脱敏、过滤,然后再写入日志主题,您可点击页面下方的数据加工,添加数据加工,最后配置索引。



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

步骤4:索引配置

1. 在索引配置页面,配置如下信息。配置详情请参考 索引配置


注意
检索必须开启索引配置,否则无法检索。
索引规则编辑后仅对新写入的日志生效,已有数据不会更新。
2. 单击提交,完成导入配置。

相关操作

导入进度查询

1. 当前日志主题下存在 COS 导入任务时,单击检索分析,进入检索分析页面查看当前导入任务的进度。


2. 在检索分析页面右上角的进度悬浮球显示目前完成的导入进度。单击悬浮球,右侧浮窗会展开导入任务详情。


3. 在任务详情页面,单击查看详情,即可跳转采集配置页查询导入的详细配置。

规格限制