搭建指南
本文档为日志数据传送服务的搭建指南,介绍如何将日志服务中的日志数据转换为结构化数据,存储在表格存储中,以提供准确、高性能的日志实时检索服务。
更详细的信息介绍请参见
用户手册。
准备工作
日志服务
开通日志服务,并且申请您的 Project 和 Logstore。传送服务不会修改您日志服务内的日志数据,所以也可以使用您生产用的 Project 和 Logstore。教程里我们假设 Project 是 lhshipper-test,Logstore 是 test-store,地域为华东 1 地区。
表格存储
开通表格存储服务,并预先建好两张表:
第一张是数据表,用来存储从日志服务中同步过来的日志数据。教程里我们假设这张表有三个主键列,分别是:
rename:类型是 STRING。
trans-pkey:类型是 INTEGER。
keep:类型是 STRING。
第二张表是传送服务的状态表,用来存储每个日志服务 Project 以及各个 Shard 上日志数据的同步进度。您的服务与多个 Project 和 LogStore 的传送服务可以复用同一张状态表。我们建议您将这张表的数据生命周期设置为 1 天或 2 天,这样可以降低使用成本。状态表的主键有四列,分别为:
project_logstore:类型为 STRING。
shard:类型为 INTEGER。
target_table:类型为 STRING。
timestamp:类型为 INTEGER。
访问控制
从访问控制 RAM 中获取您的 access key ID 和 access key secret。
出于安全的考虑,我们建议您在生产中使用子账户来搭建传送服务,并授权这个子账户读取日志服务数据的权限(AliyunLogReadOnly)和将日志数据写入表格存储的权限(AliyunTableStoreWriteOnlyAccess)。
云服务器和容器服务
开通云服务器 ECS 和[容器服务。[backcolor=transparent]后续步骤中您需要创建一台按量付费的云服务器,所以请确保账户的余额不少于 100 元。
搭建服务
登录容器服务控制台。
单击页面左侧的[backcolor=transparent]集群,进入集群列表页面。
单击页面右上角的[backcolor=transparent]创建集群,进入创建集群页面。
设置集群的基本信息,请注意如下事项:
尽量选择和日志服务与表格存储相同的地域,这样可以使用私网地址,避免产生公网下行流量费用和公网延迟的不确定性。
本教程不勾选 Swarm Mode 集群以方便演示。
生产上建议您勾选[backcolor=transparent]Swarm Mode 集群,性能更佳。
本教程选择[backcolor=transparent]创建节点以方便演示。
生产上建议您选择[backcolor=transparent]添加已有节点,来添加现有的云服务器。
传送服务并不需要高配置的实例,一般情况下,选择 [backcolor=transparent]1 核 1 GB 即可。
传送服务可以完全动态地水平扩容缩容,您可以选择多台云服务器。
传送服务不是一个 HTTP 服务,不需要暴露任何端口,所以无需选择创建负载均衡。
设置完成后,单击页面右侧的[backcolor=transparent]创建集群。
集群进入初始化阶段,需要一些时间,您可以在集群列表页面查看集群状态。
[backcolor=transparent]注意:如果已经有云服务器,可以将已购买的云服务器添加到指定集群,详细步骤请参见
添加已有云服务器。
创建应用
登录容器服务控制台。
单击左侧导航栏的[backcolor=transparent]应用。
单击页面右上角的[backcolor=transparent]创建应用。
设置应用的基本信息(示例使用的应用名称为 [backcolor=transparent]loghub-shipper),请注意如下事项:
在[backcolor=transparent]部署集群项中选择在哪个集群上创建该应用。
建议勾选[backcolor=transparent]检查最新 Docker 镜像,便于以后的版本升级。
单击[backcolor=transparent]使用镜像创建。
[backcolor=transparent]注意:本教程选择镜像创建是为了说明核心流程。但在生产上,一个应用可能包含多种服务,此时选择[backcolor=transparent]使用编排模板创建会更灵活便利。
进行应用配置。请注意如下事项:
在搜索框中输入[backcolor=transparent]loghub-shipper并单击[backcolor=transparent]全局搜索,可快速找到传送服务的镜像。
在[backcolor=transparent]环境变量栏中填写如下变量信息:
access_key_id
access_key_secret
loghub:表示日志服务相关信息,信息内容为一个 json 字符串,需要包括 endpoint、logstore 和 consumer_group。其中,consumer_group 可以是任意字符串,同一个传送服务中的多个容器实例共用一个,多个传送服务使用的 consumer_group 不能重复。该变量值示例内容如下:{"endpoint": "http://lhshipper-test.cn-hangzhou.log.aliyuncs.com",- "logstore": "test-store",
- "consumer_group": "defaultcg"}
tablestore:表示表格存储的相关信息,信息内容为一个 json 字符串,需要包括 endpoint(访问表格存储的域名)、instance(访问表格存储的实例名)、target_table(数据表名)和 status_table(状态表名)。该变量值示例内容如下:{"endpoint": "http://lhshipper-test.cn-hangzhou.ots.aliyuncs.com",
"instance": "lhshipper-test",
"target_table": "loghub_target",
"status_table": "loghub_status"}
exclusive_columns:该字段表示日志数据中不导入表格存储的字段信息,该内容为一个 json 字符串。该变量值的示例内容如下:["__source__","time"]
transform:该字段表示日志数据中需要做的格式转换信息(日志数据中所有数据均为字符串型),例如重命名及某个属性类型转换,该内容为一个 json 字符串。该变量值的示例内容如下:{"rename": "original",
"trans-pkey": "(->int 10 original)"}
上述示例表示,将日志数据中字段为 original 的数据变成数据表中 rename 的属性列,将日志数据中字段为 original 的数据转成十进制整数成为数据表中 trans-pkey 的属性列,更多类型转换定义请参考
用户手册。
[backcolor=transparent]注意:在配置中不需要指定数据表的主键信息,传送服务会自动读取数据表的 schema 信息。但日志数据或者 transform 中需要包括所有的主键字段,否则该条日志信息将会被丢弃。
单击[backcolor=transparent]创建。部署服务需要一些时间,可以在服务列表中查看其状态。
上述操作均已成功完成后,传送服务即会就绪。