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

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
对象存储 OSS,内容安全 1000次 1年
简介: 本篇介绍日志服务数据加工最佳实践: 构建字典与表格做数据富化, 覆盖多种方式: 直接, 任务配置, 字典表格函数, 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

相关实践学习
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
目录
相关文章
|
26天前
|
存储 数据采集 JavaScript
深入理解数仓开发(一)数据技术篇之日志采集
深入理解数仓开发(一)数据技术篇之日志采集
|
24天前
|
运维 监控 Java
系统日志规范及最佳实践
系统日志规范及最佳实践
系统日志规范及最佳实践
|
9天前
|
监控 数据库
neo4j数据插入操作有日志吗
【6月更文挑战第29天】neo4j数据插入操作有日志吗
15 1
|
16天前
|
监控 Java API
【Spring Boot】深入解密Spring Boot日志:最佳实践与策略解析
【Spring Boot】深入解密Spring Boot日志:最佳实践与策略解析
26 1
|
3天前
|
存储 JavaScript 容器
TS,添加注释,//,ctrl + /,shift + alt + a,输出语句,console.log(“Hello Ts‘),变量和数据类型导读,变量就是用来存储数据的容器,变量的使用,TS
TS,添加注释,//,ctrl + /,shift + alt + a,输出语句,console.log(“Hello Ts‘),变量和数据类型导读,变量就是用来存储数据的容器,变量的使用,TS
|
9天前
|
存储 运维 监控
Spring Boot中的日志管理最佳实践
Spring Boot中的日志管理最佳实践
|
10天前
|
存储 运维 监控
Spring Boot中的日志管理最佳实践
Spring Boot中的日志管理最佳实践
|
12天前
|
Java 开发者
构建健壮的Java应用:错误处理与日志管理
构建健壮的Java应用:错误处理与日志管理
|
2月前
|
存储 监控 Kubernetes
构建高效稳定的云原生日志监控系统
【5月更文挑战第26天】 随着微服务架构和容器化技术的普及,传统的日志监控方法面临重大挑战。本文将探讨如何构建一个既高效又稳定的云原生日志监控系统,该系统旨在提供实时的日志分析能力,同时保证系统的高可用性和可扩展性。我们将讨论利用现代技术栈如Fluentd、Elasticsearch和Kibana(EFK栈)来搭建日志收集、存储和可视化的解决方案,并深入探讨如何通过容器编排工具如Kubernetes来实现日志服务的自动伸缩和故障恢复。此外,我们还将介绍一些最佳实践,帮助运维团队在保持系统性能的同时,降低资源消耗和运营成本。
|
1月前
|
Java API Apache
项目构建时抛出LoggerContextShutdownAware log 错误问题处理
SpringBoot应用的日志显示它尝试初始化Skywalking日志目录为/app/logs/skywalking。随后,应用程序一个异常,具体是`java.lang.reflect.InvocationTargetException`。问题可能是由于日志库的冲突或缺失导致的。建议检查项目中是否存在与SpringBoot内置日志系统冲突的自定义日志配置,并确保所有必要的日志依赖,如log4j-core和log4j-api,都已正确且版本匹配地引入。通过解决这些冲突并重新构建,应该可以解决这个问题。
19 0

相关产品

  • 日志服务