一、前提条件
1. 开通日志服务,创建 日志集 与 日志主题,并成功采集到日志数据。
2. 开通腾讯云对象存储服务,并且在待投递日志主题的地域已创建存储桶,详细配置请参见 创建存储桶 文档。
3. 子账号/协作者需要主账号授权,授权步骤参见 基于 CAM 管理权限,授权策略参见 CLS 访问策略模板。
4. 已授权给腾讯云 CLS 服务角色访问 COS 的权限。大部分用户通过控制台操作时,系统会引导用户完成授权;小部分用户跨过控制台,直接调用 API,这部分客户需要手动去授权,详情请参见 投递任务角色授权。
二、操作步骤
1. 登录 日志服务控制台。
2. 在左侧导航栏中,单击日志主题。
3. 单击需要投递的日志主题 ID/名称,进入日志主题管理页面。
4. 单击投递到 COS 页签,进入投递到 COS 配置页面,单击添加投递配置。
5. 如你需对日志进行归档,可使用 CLS 的 日志沉降 功能,将冷数据沉降至低频存储。沉降之后,存储费用可有效下降,但仍然可对日志进行检索。例如你可将总存储时间配置为180天,其中标准存储(热数据)30天,低频存储(冷数据)150天,即可满足日志的审计需求。如你仍选择投递到 COS,参考如下配置:
| 配置项 | 解释说明 | 规则 | 是否必填 |
| 投递任务名称 | 配置投递任务的名称。 | – | 必填 |
| 投递时间范围 | 开始时间:你要投递的日志数据的开始时间。 默认给出该日志主题生命周期最早的时间点。结束时间:你要投递的日志数据的结束时间,不可选择未来时间,不填写表示持续投递日志。注意:如果你的开始时间为历史时间,结束时间不填写,即持续投递,任务会同时投递历史日志和实时日志。 例如:你选择投递 2023年1月1日00:03 – ∞ 的数据,提交投递任务的时间为2023年2月13日 19:05,那么历史日志为2023年1月1日 00:03-2023年2月13日19:05,实时日志为2023年2月13日 19:05 – ∞,两种数据将同时向 COS 投递,你可在投递任务列表查看历史数据投递的进度和历史数据投递完成所需的时长。任务提交以后,投递时间范围不支持修改。 |
时间选择 | 必填 |
| 投递文件大小 | 需要投递的原始日志文件的大小,和投递间隔时间配合使用,哪个条件先触发,就按照哪个规则去压缩文件,然后投递到 COS。例如:配置256M,15分钟,如果文件大小在5分钟就到了256MB,那么文件大小这个条件先触发投递任务。 | 5 – 256,单位:MB | 必填 |
| 投递间隔时间 | 指定间隔多长时间,触发一次投递,和投递文件大小配合使用,哪个条件先触发,就按照哪个规则去压缩文件,然后投递到 COS。例如:配置256MB,15分钟,如果文件大小在15分钟时仅为200MB,间隔时间这个条件先触发投递任务。 | 5 – 15分钟 | 必填 |
6. 单击下一步,进入目标桶配置。
| 配置项 | 解释说明 | 规则 | 是否必填 |
| 目标 COS 桶归属 | 当前主账号其他主账号投递 CLS 日志到当前主账号的 COS 桶。投递 CLS 日志到其他主账号的 COS 桶,例如将 A 账号的 CLS 日志投递至 B 账号的 COS 桶,需要 B 账号在 CAM(访问管理)侧配置访问 角色,配置完成之后,由 A 账号将角色 ARN和外部 ID 填写到 CLS 控制台,方可进行跨账号投递。配置角色的步骤如下:1. 新建角色。账号 B 登录 CAM 角色管理页面。1.1 创建访问策略,策略名称例如:cross_shipper,策略语法参考如下:说明:示例中的授权按照最小权限的原则,resource 配置为仅可以投递至广州地域的 COS 桶:test123-123456789,请你按照实际情况进行授权。{ "statement": [ { "action": [ "cam:GetRole" ], "effect": "allow", "resource": [ "*" ] }, { "action": [ "cos:PutObject" ], "effect": "allow", "resource": [ "qcs::cos:ap-guangzhou:uid/123456789:test123-123456789/*" ]//投递至广州地域的COS桶:test123-123456789,请你按照实际情况进行授权。 } ], "version": "2.0"}1.2 新建角色,选择腾讯云账户角色载体,云账号类型选择其他主账号,然后输入 A 账号的 ID,例如100012345678,勾选开启校验并配置外部 ID,例如 Hello123。1.3 配置角色的访问策略,选择第一步配置好的访问策略 cross_shipper(示例)。1.4 保存该角色,例如:uinA_writeCLS_to_COS。2. 为角色配置载体。在 CAM 角色列表中找到 uinA_writeCLS_to_COS(示例),单击该角色,选中下方的角色载体 > 管理载体 > 添加产品服务 > 选中日志服务,然后单击更新。可以看到当前角色的载体是两个:一个是 A 账号,另一个是 cls.cloud.tencent.com(CLS 日志服务)。3. A 账号登录 CLS,填入角色 Arn 和外部 ID。以下两项信息需 B 账号来提供:B 账号在 CAM 角色列表中找到角色 uinA_writeCLS_to_COS(示例),单击可查看该角色的 RoleArn,例如 qcs::cam::uin/100001112345:roleName/uinA_writeCLS_to_COS。在角色载体中可看到外部 ID,例如 Hello123。注意:填写角色 ARN、外部 ID 时,注意不要输入多余的空格,否则会导致权限校验失败。跨账号投递会在 A 账号下,产生日志主题的读流量费。 | 当前主账号/其他主账号 | 可选 |
| COS 存储桶 | 投递日志的目标存储桶,跨账号投递需要用户手动填写目标存储桶的名称。 | 列表选择 | 必填 |
| 文件命名 | 投递时间命名:默认选项,例如202208251645_000_132612782.gz 表示投递时间_日志主题分区_offset,Hive 可加载此文件。随机数命名:旧版的命名方式,Hive 可不识别,Hive 不识别_开头的文件,可以在 COS 路径配置项里面添加自定义前缀,例如/%Y%M%d/%H/Yourname。 | / | 必填 |
| 文件压缩 | 不压缩\\snappy\\lzop\\gzip。 | gzip\\snappy\\lzop | 必填 |
| COS 路径 | COS 存储桶中保存日志的路径。默认按照格式/年/月/日/小时/保存,例如/2022/7/31/14/ ,路径配置支持 strftime 的语法 ,如:/%Y/%m/%d/生成的路径是/2022/7/31//%Y%M%d/%H/生成的路径是/20220731/14/ | 非/开头 | 可选 |
| COS 存储类型 | 日志在 COS 桶存储的类型:标准存储、低频存储、智能分层存储、归档存储、深度归档存储,详情请参见 存储类型概述。说明:跨账号投递暂不支持选择 COS 存储类型。 | 列表选择 | 必填 |
7. 单击下一步,进入高级配置,你可以选择数据的格式,以 JSON/CSV/Parquet 进行投递。
| 投递数据格式 | 使用场景 |
| 按 CSV 格式投递 | 可用于腾讯云 DLC 入湖计算可以利用 CSV 投递实现 投递日志原文(单行、多行、分隔符采集的日志) |
| 按 JSON 格式投递 | 常见数据格式,请用户参考自己的业务场景进行选择 |
| 按 Parquet 格式投递 | 日志数据需为结构化数据,支持数据类型转换(非单行、多行采集),多用于 Hive |
三、投递格式为 JSON
1. 选择要投递的日志内容(字段),其中_CONTENT_是用户的日志,_SOURCE_、_FILENAME_、_HOSTNAME_、_TIMESTAMP_、_TAG_元信息均为 CLS 的元数据字段,请你根据实际情况勾选。
2. 转义选项:
| 转义选项 | 说明 |
| 不转义 | 不对你的 JSON 结构和层级做修改,日志格式和采集侧保持一致。例子:日志原文:{"a":"aa", "b":{"b1":"b1b1", "c1":"c1c1"}}投递到 COS:{"a":"aa", "b":{"b1":"b1b1", "c1":"c1c1"}}注意:当 JSON 的第一层节点中包含有数值时,投递后会自动转为 int、float。日志原文:{"a":123, "b":"123", "c":"-123", "d":"123.45", "e":{"e1":123,"f1":"123"}}投递到 COS:{"a":123,"b":123,"c":-123,"d":123.45,"e":{"e1":123,"f1":"123"}} |
| 转义 | 将 JSON 第一层节点的值转为 String,如你的节点值是 Struct,在下游入库或者计算时,需要提前转为 String,可以选这个选项。 例1:日志原文:{"a":"aa", "b":{"b1":"b1b1", "c1":"c1c1"}}投递到 COS:{"a":"aa","b":"{\\"b1\\":\\"b1b1\\", \\"c1\\":\\"c1c1\\"}"} 例2:日志原文:{"a":123, "b":"123", "c":"-123", "d":"123.45", "e":{"e1":123,"f1":"123"}}投递到 COS:{"a":"123","b":"123","c":"-123","d":"123.45","e":"{\\"e1\\":123,\\"f1\\":\\"123\\"}"} |
四、投递格式为 CSV
选择以 CSV 格式投递日志到 COS。
注意:说明:
注意:可删除不需要的 CLS 元数据字段。
配置项说明如下:
| 配置项 | 解释说明 | 规则 | 是否必填 |
| 键值名称(key) | 指定写入 CSV 文件的键值(key)字段(填写的 key 必须是日志结构化后的 key 名称或保留字段,否则将视为无效 key) | 仅支持字母、数字和_-./@ | 必填 |
| 分隔符 | CSV 文件中各字段间的分隔符 | 列表选择 | 必填 |
| 转义符 | 若正常字段内出现了分隔符的字符,需用转义符包裹该字符,防止读取数据时被错误识别 | 列表选择 | 必填 |
| 无效字段填充 | 若配置的键值字段(key)不存在时,则会用无效字段进行填充 | 列表选择 | 必填 |
| 首行 Key | 在 CSV 文件的首行增加字段名的描述,即将键值(key)写入 CSV 文件的首行,默认不写入 | 开/关 | 必填 |
五、投递格式为 Parquet
Parquet 文件可以被 Hive 加载,多用于大数据的计算分析,下面将为你详细介绍如何创建 Parquet 格式日志投递任务。
配置项说明如下:
| 配置项 | 解释说明 | 是否必填 |
| 键值名称(key) | 写入 Parquet 文件 Header 部分的键值(key)字段。如系统自动拉取日志中的键值不满足你的需求,你可添加字段,最多100个,字段名仅支持字母、数字和_-./@。如你的某行日志中缺少已定义的 Key,那么该行日志对应的 Parquet 文件 Body 中不会有这个 Key。这不会影响你的 Spark、Flink 等大数据计算。 | 必填 |
| 数据类型 | 该字段在 Parquet 文件中的数据类型:String、Boolean、Int32、Int64、Float、Double | 必填 |
| 解析失败赋值 | 数据解析失败时,给予的默认值。如某字段值(String 类型)解析失败,你可以指定其值为空字符串"",也可以指定 NULL 或你自定义的字符串。其他数据类型:布尔、整型、浮点型同理。 | 必填 |