全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
表格存储

环境准备

更新时间:2017-11-14 16:34:24

搭建指南

本文档为日志数据传送服务的搭建指南,介绍如何将日志服务中的日志数据转换为结构化数据,存储在表格存储中,以提供准确、高性能的日志实时检索服务。

更详细的信息介绍请参见用户手册

准备工作

日志服务

开通日志服务,并且申请您的 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 和[容器服务。后续步骤中您需要创建一台按量付费的云服务器,所以请确保账户的余额不少于 100 元。

搭建服务

  1. 登录容器服务控制台

  2. 单击页面左侧的集群,进入集群列表页面。

  3. 单击页面右上角的创建集群,进入创建集群页面。

  4. 设置集群的基本信息,请注意如下事项:

    • 尽量选择和日志服务与表格存储相同的地域,这样可以使用私网地址,避免产生公网下行流量费用和公网延迟的不确定性。

    • 本教程不勾选 Swarm Mode 集群以方便演示。

      生产上建议您勾选Swarm Mode 集群,性能更佳。

    • 本教程选择创建节点以方便演示。

      生产上建议您选择添加已有节点,来添加现有的云服务器。

    • 传送服务并不需要高配置的实例,一般情况下,选择 1 核 1 GB 即可。

    • 传送服务可以完全动态地水平扩容缩容,您可以选择多台云服务器。

    • 传送服务不是一个 HTTP 服务,不需要暴露任何端口,所以无需选择创建负载均衡。

  5. 设置完成后,单击页面右侧的创建集群

    集群进入初始化阶段,需要一些时间,您可以在集群列表页面查看集群状态。

注意:如果已经有云服务器,可以将已购买的云服务器添加到指定集群,详细步骤请参见添加已有云服务器

创建应用

  1. 登录容器服务控制台

  2. 单击左侧导航栏的应用

  3. 单击页面右上角的创建应用

  4. 设置应用的基本信息(示例使用的应用名称为 loghub-shipper),请注意如下事项:

    • 部署集群项中选择在哪个集群上创建该应用。

    • 建议勾选检查最新 Docker 镜像,便于以后的版本升级。

  5. 单击使用镜像创建

    注意:本教程选择镜像创建是为了说明核心流程。但在生产上,一个应用可能包含多种服务,此时选择使用编排模板创建会更灵活便利。

  6. 进行应用配置。请注意如下事项:

    • 在搜索框中输入loghub-shipper并单击全局搜索,可快速找到传送服务的镜像。

    • 环境变量栏中填写如下变量信息:

      • access_key_id

      • access_key_secret

      • loghub:表示日志服务相关信息,信息内容为一个 json 字符串,需要包括 endpoint、logstore 和 consumer_group。其中,consumer_group 可以是任意字符串,同一个传送服务中的多个容器实例共用一个,多个传送服务使用的 consumer_group 不能重复。该变量值示例内容如下:

        1. {"endpoint": "https://lhshipper-test.cn-hangzhou.log.aliyuncs.com",
        2. "logstore": "test-store",
        3. "consumer_group": "defaultcg"}
      • tablestore:表示表格存储的相关信息,信息内容为一个 json 字符串,需要包括 endpoint(访问表格存储的域名)、instance(访问表格存储的实例名)、target_table(数据表名)和 status_table(状态表名)。该变量值示例内容如下:

        1. {"endpoint": "https://lhshipper-test.cn-hangzhou.ots.aliyuncs.com",
        2. "instance": "lhshipper-test",
        3. "target_table": "loghub_target",
        4. "status_table": "loghub_status"}
      • exclusive_columns:该字段表示日志数据中不导入表格存储的字段信息,该内容为一个 json 字符串。该变量值的示例内容如下:

        1. ["__source__","time"]
      • transform:该字段表示日志数据中需要做的格式转换信息(日志数据中所有数据均为字符串型),例如重命名及某个属性类型转换,该内容为一个 json 字符串。该变量值的示例内容如下:

        1. {"rename": "original",
        2. "trans-pkey": "(->int 10 original)"}

        上述示例表示,将日志数据中字段为 original 的数据变成数据表中 rename 的属性列,将日志数据中字段为 original 的数据转成十进制整数成为数据表中 trans-pkey 的属性列,更多类型转换定义请参考用户手册

        注意:在配置中不需要指定数据表的主键信息,传送服务会自动读取数据表的 schema 信息。但日志数据或者 transform 中需要包括所有的主键字段,否则该条日志信息将会被丢弃。

  7. 单击创建。部署服务需要一些时间,可以在服务列表中查看其状态。

上述操作均已成功完成后,传送服务即会就绪。

本文导读目录