通过日志服务访问RDS MySQL进行数据富化

更新时间:
复制为 MD 格式

当数据分别存储在日志服务的LogStoreRDS MySQL数据库中时,您可以使用日志服务的数据加工功能,通过RDS的内网地址访问RDS MySQL数据库以获取数据,进而实现数据富化。

工作原理

使用日志服务数据加工功能,通过RDS内网地址访问RDS MySQL获取数据进行数据富化的过程如图所示:

image

方案概览

使用日志服务数据加工功能,通过RDS内网地址访问RDS MySQL获取数据进行数据富化,只需三步:

  1. 获取数据加工任务中高级参数配置信息:先登录RDS控制台获取RDS MySQL实例信息,再通过OpenAPI调试页面调用接口获取高级参数配置信息。

  2. 在源LogStore中开启数据加工任务:然后配置数据加工规则进行数据富化。

  3. 将加工结果保存到目标LogStore:最后将加工结果数据保存到目标LogStore。

前提条件

  • 已获取原始日志数据。

  • RDS MySQL实例与日志服务Project需处于同一地域。

步骤一:获取数据加工任务中高级参数配置信息

  1. 登录云数据库RDS控制台

  2. 设置IP地址段白名单。有关白名单更多操作,请参见设置白名单

    1. 在左侧菜单栏,单击白名单与安全组 > 添加白名单分组,填入分组名称以及组内白名单,组内白名单需固定设置为100.104.0.0/16

    在左侧菜单栏,单击实例列表找到目标实例并单击进入。

  3. 获取目标实例ID、内网端口。

    1. 在左侧菜单栏,单击基本信息,在基本信息页面找到实例ID并复制。

    2. 在左侧菜单栏,单击数据库连接,在数据库连接页面查看内网端口:并复制。

  4. 获取目标实例VpcIdVpcCloudInstanceId

    1. 打开OpenAPI调试页面,在参数配置 > 输入参数页面找到DBInstanceId实例ID文本框并填入复制好的目标实例ID。关于调用的接口方法。具体详情,请参见查询实例详情

    2. 点击调用,在调用结果页面复制VpcIdVpcCloudInstanceId

      "VSwitchId": "xxx",
      "TipsLevel": 0,
      "PayType": "Postpaid",
      "LockMode": "Unlock",
      "DeletionProtection": false,
      "DBInstanceStorageType": "general_essd",
      "InsId": 1,
      "VpcId": "xxx",
      "ConnectionMode": "Standard",
      "VpcCloudInstanceId": "xxx",
      "RegionId": "cn-hangzhou",
      "ConnectionString": "xxx",
      "ExpireTime": ""

步骤二:在源LogStore中开启数据加工任务

  1. 登录日志服务控制台

  2. 进入数据加工页面。

    1. Project列表区域,单击目标Project。

    2. 日志存储 > 日志库页签中,单击目标LogStore。

    3. 在查询与分析页面,单击数据加工

    4. 在数据加工页面,单击切换至数据加工(旧版)。

  3. 添加高级参数配置。

    1. 在页面右上角选择高级,单击预览数据

    2. 添加预览配置页面,单击高级选项,添加如下配置。

      重要

      表格里所有配置参数中的your_name可自定义但需保持一致,并且与加工规则your_name也需保持一致。

      参数

      参数值

      说明

      config.vpc.vpc_id.your_name

      vpc-uf6mskb0b****n9yj

      目标实例VpcId。

      如何获取请参见,获取目标实例VpcId

      config.vpc.instance_id.your_name

      rm-uf6e61k****ahd7-2024091513

      目标实例ID。

      如何获取请参见,获取目标实例VpcCloudInstanceId

      对于阿里云同区域自建MySQL数据库,使用参数config.vpc.instance_ip.your_name指定数据库在VPC内的IP。

      config.vpc.instance_port.your_name

      3306

      目标实例内网地址端口号。

      如何获取请参见,获取目标实例内网端口

    3. 配置无误后单击右下角确定完成配置。

  4. 编辑加工规则。

    1. 在编辑框中添加如下语句。

      语法格式示例如下,有关数据富化函数以及资源函数具体介绍,请参见,RDS MySQL数据库获取数据进行数据富化资源函数

      /*
      e_table_map()     数据富化函数。
      res_rds_mysql()   拉取函数,从RDS MySQL数据库中拉取数据库表内容或SQL执行结果。
      str_format()      字符串格式化函数,res_local()中的your_name需和高级参数配置中your_name保持一致。
      field             匹配字段,在Logstore中的日志数据与RDS MySQL数据库表中的数据之间进行匹配时的依据字段,只有当这个字段在两者中的值相同时,才能匹配成功。
      output_fields     输出字段集合,当匹配成功后,会返回这些字段的值,进而生成一条新的日志。
      */
      e_table_map(
          res_rds_mysql(
              str_format("{}:{}", 
                         res_local("config.vpc.instance_id.your_name"), 
                         res_local("config.vpc.instance_port.your_name")), 
              "数据库账号", 
              "数据库密码", 
              "数据库名称",
              table="数据库表名"
          ), 
          "field", 
          "output_fields"
      )

      加工语句如下:

      以下规则通过日志服务LogStoreprocess_time_in_ms字段和RDS MySQL数据库表process_time_in_ms字段进行匹配,只有process_time_in_ms字段的值完全相同,才能匹配成功。匹配成功后,返回RDS MySQL数据库表中modelpurchase_price字段及其字段值,与LogStore中的数据拼接,生成新的数据。

      e_table_map(
        res_rds_mysql(
          str_format("{}:{}",
              res_local("config.vpc.instance_id.test"),
              res_local("config.vpc.instance_port.test")),
          "xxx",
          "xxx","xxx xxx",
          "database",
          table="bicycles",
          primary_keys="process_time_in_ms"),
        "process_time_in_ms",
        ["model","purchase_price"]
      )
  5. 查看加工结果

    加工结果页签右侧运行结果信息汇总显示:源日志总数 2000、丢弃条数 0、分发条数 2000、失败 0。主表格中日志的输出目标均为 __default__,内容包含原始键值对字段(如 remote_addrrequest_methodrequest_uristatusbody_bytes_sent 等),表明加工规则未对日志进行匹配转换,数据保持原始状态分发至默认目标。

    加工规则匹配成功的日志记录中包含 model(XTC 800)、purchase_price(3000.00)和 process_time_in_ms(788)等关键字段,完整结构化日志内容:

    __source__ :127.0.0.1
    __tag__:__receive_time__ :1725962982
    __tag__:_container_ip_ :183.227.33.184
    __tag__:_container_name_ :container3
    __tag__:_image_name_ :image3
    __tag__:_path_ :/home/local
    __topic__ :tomcat_access_log
    body_bytes_sent :6344
    model :XTC 800
    process_time_in_ms :788
    purchase_price :3000.00
    referer :www.phn.mock.com
    remote_addr :202.92.0.182
    remote_user :v-0
    request_method :GET
    request_protocol :HTTP/2.0
    request_uri :/request/path-3/file-1
    status :200
    time :10/Sep/2024:09:09:35
    user_agent :Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24

    单击右上角预览数据进行数据加工。

步骤三:将加工结果保存到目标LogStore

  1. 单击右下角保存数据加工(旧版),依次填入图中所需信息后点击确定保存。

    创建数据加工任务对话框中,填写任务名称(以etl-为前缀)、显示名称任务描述授权方式选择默认角色。在存储目标区域,配置目标名称目标Region目标Project目标库授权方式选择默认角色。在加工范围(数据接收时间)区域选择时间范围,可选所有某时间开始特定时间范围

  2. 在左侧日志库中单击保存了加工结果的目标LogStore,在页面右上角,选择数据的时间范围。

    选择时间范围后,请确认原始日志页签中是否成功保存加工结果数据。

    加工后的日志中包含新增的 model(值为 XTC 800)和 purchase_price(值为 3000.00)字段,表明数据加工结果已写入目标 LogStore。

后续步骤

获取RDS MySQL数据,完成数据富化后,您可以在日志服务控制台上进行数据分析。更多信息,请参见基于日志服务数据加工与RDS MySQL做数据富化以及数据分析

附录:使用内网地址访问AnalyticDB MySQLPolarDB MySQL数据库

日志服务除了支持通过阿里云内网地址访问RDS MySQL数据库外,还支持通过内网地址访问AnalyticDB MySQLPolarDB MySQL数据库。相关配置如下所示:

  • AnalyticDB MySQL数据库

    设置高级参数配置时,config.vpc.instance_id.your_name的值需配置为AnalyticDB MySQL实例ID-controller,其余配置参考此文档即可。

    同时需配置 config.vpc.vpc_id.test1 的值为对应 VPC ID,config.vpc.instance_port 的值为 3306

  • PolarDB MySQL数据库相关配置参考此文档即可。