当数据分别存储在日志服务的LogStore和RDS MySQL数据库中时,您可以使用日志服务的数据加工功能,通过RDS的内网地址访问RDS MySQL数据库以获取数据,进而实现数据富化。
工作原理
使用日志服务数据加工功能,通过RDS内网地址访问RDS MySQL获取数据进行数据富化的过程如图所示:
方案概览
使用日志服务数据加工功能,通过RDS内网地址访问RDS MySQL获取数据进行数据富化,只需三步:
-
获取数据加工任务中高级参数配置信息:先登录RDS控制台获取RDS MySQL实例信息,再通过OpenAPI调试页面调用接口获取高级参数配置信息。
-
在源LogStore中开启数据加工任务:然后配置数据加工规则进行数据富化。
-
将加工结果保存到目标LogStore中:最后将加工结果数据保存到目标LogStore。
前提条件
-
已获取原始日志数据。
-
RDS MySQL实例与日志服务Project需处于同一地域。
步骤一:获取数据加工任务中高级参数配置信息
-
登录云数据库RDS控制台。
-
设置IP地址段白名单。有关白名单更多操作,请参见设置白名单。
-
在左侧菜单栏,单击,填入分组名称以及组内白名单,组内白名单需固定设置为
100.104.0.0/16。
在左侧菜单栏,单击实例列表找到目标实例并单击进入。
-
-
获取目标实例ID、内网端口。
-
在左侧菜单栏,单击基本信息,在基本信息页面找到实例ID并复制。
-
在左侧菜单栏,单击数据库连接,在数据库连接页面查看内网端口:并复制。
-
-
获取目标实例
VpcId和VpcCloudInstanceId。-
打开OpenAPI调试页面,在页面找到DBInstanceId实例ID文本框并填入复制好的目标实例ID。关于调用的接口方法。具体详情,请参见查询实例详情。
-
点击调用,在调用结果页面复制
VpcId和VpcCloudInstanceId。"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中开启数据加工任务
-
登录日志服务控制台。
-
进入数据加工页面。
-
在Project列表区域,单击目标Project。
-
在页签中,单击目标LogStore。
-
在查询与分析页面,单击数据加工。
-
在数据加工页面,单击切换至数据加工(旧版)。
-
-
添加高级参数配置。
-
在页面右上角选择高级,单击预览数据。
-
在添加预览配置页面,单击高级选项,添加如下配置。
重要表格里所有配置参数中的
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
目标实例内网地址端口号。
如何获取请参见,获取目标实例内网端口。
-
配置无误后单击右下角确定完成配置。
-
-
编辑加工规则。
-
在编辑框中添加如下语句。
语法格式示例如下,有关数据富化函数以及资源函数具体介绍,请参见,从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" )加工语句如下:
以下规则通过日志服务LogStore中
process_time_in_ms字段和RDS MySQL数据库表process_time_in_ms字段进行匹配,只有process_time_in_ms字段的值完全相同,才能匹配成功。匹配成功后,返回RDS MySQL数据库表中model和purchase_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"] )
-
-
查看加工结果。
加工结果页签右侧运行结果信息汇总显示:源日志总数 2000、丢弃条数 0、分发条数 2000、失败 0。主表格中日志的输出目标均为
__default__,内容包含原始键值对字段(如remote_addr、request_method、request_uri、status、body_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中
-
单击右下角保存数据加工(旧版),依次填入图中所需信息后点击确定保存。
在创建数据加工任务对话框中,填写任务名称(以etl-为前缀)、显示名称和任务描述,授权方式选择默认角色。在存储目标区域,配置目标名称、目标Region、目标Project和目标库,授权方式选择默认角色。在加工范围(数据接收时间)区域选择时间范围,可选所有、某时间开始或特定时间范围。
-
在左侧日志库中单击保存了加工结果的目标LogStore,在页面右上角,选择数据的时间范围。
选择时间范围后,请确认原始日志页签中是否成功保存加工结果数据。
加工后的日志中包含新增的 model(值为 XTC 800)和 purchase_price(值为 3000.00)字段,表明数据加工结果已写入目标 LogStore。
后续步骤
获取RDS MySQL数据,完成数据富化后,您可以在日志服务控制台上进行数据分析。更多信息,请参见基于日志服务数据加工与RDS MySQL做数据富化以及数据分析。
附录:使用内网地址访问AnalyticDB MySQL或PolarDB MySQL数据库
日志服务除了支持通过阿里云内网地址访问RDS MySQL数据库外,还支持通过内网地址访问AnalyticDB MySQL和PolarDB 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数据库相关配置参考此文档即可。