日志服务数据加工最佳实践: 构建字典与表格做数据富化-阿里云开发者社区

开发者社区> 阿里云存储服务> 正文

日志服务数据加工最佳实践: 构建字典与表格做数据富化

简介: 本篇介绍日志服务数据加工最佳实践: 构建字典与表格做数据富化, 覆盖多种方式: 直接, 任务配置, 字典表格函数, RDS-MySQL, 其他Logstore等


字典和表格是数据富化(映射)过程中主要使用的两种数据结构,本文主要介绍这两种数据结构的常见构建方式,并对比不同构建方式的优缺点。

字典构建

直接构建

e_dict_map({"400": "错误", "200": "正常", "*": "其他"}, "status", "message")

优点: 直观、简单、方便.

从任务配置资源构建

e_dict_map(res_local("http_code_map"), "status", "message")

其中http_code_map是任务高级配置项, 值为:

{"400": "错误", "200": "正常", "*": "其他"}

优点: 如果内容较多, 且经常修改的话, 更易于维护.

从表格构建

使用tab_to_dict从表格构建, 而表格的构建参考本文后续的表格构建.

e_dict_map(tab_to_dict(tab_parse_csv("status_code,status_info\n400,错误\n200,正常\n*,其他"), "status_code", "status_info"), "status", "message")

优点: 高级场景下使用. 维护机制更灵活.

从字典函数构建

e_dict_map(dct_make("400", "错误", "200",  "正常", "*",  "其他"), "status", "message")

优点: 高级场景下可以实现特定效果, 因为dct_make还可以接受其他函数的返回值. 具体参考字典函数

从其他表达式构建

e_dict_map(json_parse(v("http_code_map")), "status", "message")

这里从源日志的字段http_code_map中获取映射关系.

优点:可以从日志事件的字段中动态提取映射关系,并构建字典。

不同字典构建方式对比

构建方式 优点 缺点
直接构建 直观、简单、方便 1.如果内容较多, 规则会相对冗长.
2. 静态不灵活.
从任务配置资源构建 如果内容较多, 且经常修改的话, 较为易于维护. 1. 不易于扩展和跨任务复用.
2.不支持自动刷新.
从表格构建 1. 高级场景下使用, 支持的场景更丰富.
2. 维护机制更灵活.
需要构建和维护对应的表格,过程相对繁琐.
从字典函数构建 可以基于逻辑动态构建字典, 特定场景下适用. 1.较为高级, 不易于维护. .
从其他表达式构建 可以从日志事件的字段中动态提取映射关系, 特定场景下适用.。 1.较为高级, 不易于维护.

表格构建

从文本构建

e_table_map(tab_parse_csv("city,name,age\nshanghai,aliyun,10\ncity:nanjing,Maki,18"), "name",["city", "age"])

优点: 直观、简单、方便.

从任务配置资源构建

e_search_table_map(tab_parse_csv(res_local("table_info")), "name",["city", "age"])

其中table_info是加工规则的任务配置项, 值为:

content,name,age
shanghai,aliyun,10
nanjing,Maki,18

优点: 如果内容较多, 且经常修改的话, 较为易于维护.

从RDS资源中构建

e_table_map(tab_parse_csv(res_rds_mysql(...database="db", table="city")), "name",["city", "age"])

RDS表格city的内容为:

content,name,age
shanghai,aliyun,10
nanjing,Maki,18

优点: 如果内容较多, 且经常修改的话, 易于维护, 且会自动刷新.

从其他Logstore资源构建

e_table_map(res_log_logstore_pull(..., project="project_name", logstore="logstore_name", fields=["city","name","age"]),, "name",["city", "age"])

对应logstore中日志事件为:

"日志1"
{
  "city": "shanghai",
  "name": "aliyun",
  "age": "10"
}
"日志2"
{
  "city": "city:nanjing and data > 100",
  "name": "Maki",
  "age": "18"
}

优点: 支持实时读取, 维护机制更灵活. 高级场景下使用.

不同表格构建方式对比

构建方式 优点 缺点

从文本构建

直观、简单、方便
1.如果内容较多, 规则会相对冗长。
2. 不易于维护、扩展和复用.
从任务配置资源构建 如果内容较多, 且经常修改的话, 较为易于维护. 1. 不易于扩展和跨任务复用.
2.不支持自动刷新.

从RDS资源构建
1. 如果内容较多, 且经常修改的话, 易于维护.
2. 支持自动刷新.
3.支持跨任务复用

需要连接外部RDS资源,配置过程相对比较繁琐.
从其他Logstore资源构建 支持实时读取, 维护机制更灵活. 高级场景下使用. 需要连接其他Logstore,配置过程相对比较繁琐.

进一步参考

欢迎扫码加入官方钉钉群获得实时更新与阿里云工程师的及时直接的支持:
image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。

官方博客
链接