日志服务CLI ETL - 扩展UDF

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 介绍日志服务命令行工具ETL灵活的扩展UDF,包括协议、规则与样例等

背景

CLI的命令中,可以看到有一个重要的参数config进行ETL的规则配置。这其实是一个Python模块,通过import其他Python模块,或者直接编写符合协议的UDF来扩展ETL的规则。本篇介绍CLI ETL规则的扩展协议与机制。

扩展与UDF

条件式事件转换UDF

在转换列表中支持UDF扩展:

UDF (Python):
@support_event_list_simple     # 自动支持多事件处理
def update_fields(e):
    e["some_field_x"] = "100"
    del e["some_feild_y"]
    return e   # 也可以返回None(表示丢弃), 返回列表(表示分裂)

TRANSFORM_LIST_data = [  ({"data": "^LTE_Information "},update_fields), "..."]

字段提取&转换UDF

在转换列表中,支持基于("字段名", UDF)方式扩展:

@support_event_list_simple         # 自动支持多事件处理
def remove_fields(e, filed_input):
    del e[filed]
    return e

TRANSFORM_LIST_data = [ 
         ({"data": "^LTE_Information "}, ("internal",remove_fields)  ),
       ({"data": "^Status,"}, ("field_x", V("field_y")  ),
        "…"]

内置方法: V, CSV, TSV, LOOKUP, KV, JSON等,都是通过这种方式构建的。

全局UDF

基于全局的UDF以及协议

注意:

  • sls_en_xxx 表示返回一个新的事件(替换),后续日志将使用这个处理
  • sls_eu_xxx 表示返回事件部分信息(更新),日志会和这个部分内容合并成给一个新的日志后处理。
  1. 事件丢弃: 返回None
def sls_en_xxx(event):
    return None if event.get("error") else event
  1. 事件替换: 返回一个新的事件 (返回None表示丢弃)
def sls_en_xxx(event):
    event["hello"] = "world"
    return event
  1. 事件更新: 返回一个字段集合进行补充
def sls_eu_xxx(event):
    return { "field_x": "my value"}
  1. 事件分裂: 返回一个事件列表
def sls_en_xxx(event):
    return [event, event]

基于条件的全局UDF

支持基于特定条件的转换,UDF必须以sls_en_或者sls_eu_开头。

@condition(条件列表 查考#10)
def sls_eu_/sls_en_xxx(event):
    return "…"

样例:

@condition({"http_user_agent": r".+\bLinux\b.+"})
def sls_en_windows(event):
    event["is_linux"] = "1"
    return event
@condition(NO_EMPTY("real_client_ip"))
def sls_eu_anoymouse_ip(event):
    return {"real_client_ip":
    event["real_client_ip"][:3] + "*****" + event["real_client_ip"][-3:]}

函数变量式UDF

也可以直接构造以sls_eu_或者sls_en_开头的变量函数,如下:

from aliyun.log.etl_core import *
sls_en_ke1 = keep_event({"__topic__": "ddos_access_log","cc_phase": r".+"})
sls_en_de1 = drop_event([EMPTY("status"),EMPTY("http_user_agent"),{"http_user_agent": "-"},{"status": r"2\d+"}])
sls_en_kf1 = KEEP_F(["http_user_agent","real_client_ip","remote_addr","status","cc_phase"])
sls_en_kv1 = KV_F([”request_uri",” cookies"])
sls_en_dse1 = dispatch_event([
({"status": lambda x: int(x) // 100 == 3},{"error_type": "challenge"}),
({"status": lambda x: int(x) // 100 == 4},{"error_type": "auth"}),
 ({"status": lambda x: int(x) // 100 == 5},{"error_type": "internal"}),
 (True,DROP)
 ])
sls_en_df1 = DROP_F(["remote_addr"])
sls_en_df2 = DROP_F("http_user_agent")

UDF输入参数说明

以上UDF都有一个event参数,其格式是Python dict格式,所有值都是Unicode字符串(包括时间)

部分特殊关键字:
TAG: __tag__:host,__tag__:source,等
时间: __time__
主题: __topic__

进一步资料

相关链接

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
9月前
|
监控 JavaScript 前端开发
一种基于日志服务CLI工具实现的多区域发布方案
一种基于日志服务CLI工具实现的多区域发布方案
390 2
|
数据采集 分布式计算 监控
网站流量日志分析—数据入库—含义和 ETL 本质解释|学习笔记
快速学习网站流量日志分析—数据入库—含义和 ETL 本质解释
364 0
网站流量日志分析—数据入库—含义和 ETL 本质解释|学习笔记
|
存储 弹性计算 监控
Serverless对日志服务中的数据进行ETL处理
通过日志服务+函数计算ETL,快速完成日志采集、加工、查询、分析和展示。
Serverless对日志服务中的数据进行ETL处理
|
Web App开发 监控 Shell
阿里云Cloud Shell中使用日志服务CLI最佳实践
目前阿里云云命令行Cloud Shell已经部署日志服务CLI,免部署配置,一键管理日志服务资源与下载日志服务数据更轻松!
11807 0
|
JSON 监控 网络协议
日志服务CLI ETL - 编排与转换
介绍日志服务命令行工具ETL简单、全面、灵活的日志规则编排与转换方式,编排覆盖分发、分裂、删减等;转换包括:JSON、KV、正则表达式、CSV、Lookup等
2892 0
|
Web App开发 监控 Shell
日志服务CLI ETL - 部署与管理
介绍日志服务命令行工具ETL安装、部署、实时运行、可靠、可扩展、监控管理的操作与配置方式。
3077 0
|
16天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
73 1
|
18天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
72 1
|
22天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
27天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
48 0

相关产品

  • 日志服务