本文档介绍如何通过资源函数从OSS中获取数据对日志数据进行富化。

相关配置

  1. 创建OSS的AK访问密钥。

    推荐创建一个只读AK和一个只写AK。只读AK主要用于从OSS获取文件,只写AK主要用于将文件上传到OSS。

    创建OSS访问密钥详情请参见如何构建RAM Policy

    创建完成之后,您可以将获取数据的文件上传到OSS存储空间,具体操作请参见上传文件

    OSS的Endpoint列表请参见访问域名和数据中心

  2. 在加工规则中使用密钥。
    使用写入AK向OSS中名叫test的bucket中传入一个包含test text内容的test.text文件。
    OSS富化规则
    截图中加工规则为:
    e_set("test_oss",res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                     ak_id=res_local("AK_ID"),
                                                     ak_key=res_local("AK_KEY"),
                                                     bucket='test', file='test.text',
                                                     format='text',change_detect_interval=0))
    规则说明:
    • Endpoint代表以上测试的OSS Region属于杭州。
    • AK信息是只读AK并且是从高级参数配置中获取。
    • bucket代表的是存储空间,具体请参见基本概念
    • file代表的是test.text
    • format表示从OSS上获取test.text下来的数据格式是text文本格式,还可以使用binary字节流格式。
    获取下来的日志内容为:
    test_oss: test text
  3. 定期刷新获取所有。
    富化数据如果定期会全量刷新,希望数据加工任务能够自动定期去获取,可以进行如下配置。
    e_set("test_oss",res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                     ak_id=res_local("AK_ID"),
                                                     ak_key=res_local("AK_KEY"),
                                                     bucket='test', file='test.text',
                                                     format='text',change_detect_interval=300))
    上述加工语法会返回一个text文本结构,每隔5分钟重新检查OSS的test.text文件内容是否更新,更新的话则重新获取内容。

    change_detect_interval:检查是否有更新的时间间隔,如果有更新则重新获取。默认是0,表示不刷新。

IP富化

对IP地址进行富化,根据IP解析出国家、省、市等信息。
  • 原始日志
    ip: 1.2.3.4
  • LOG DSL编排
    在DSL编排中,使用res_oss_file函数获取IP库的时候,需要把返回的数据格式format设置为binary格式,自动从OSS上进行获取的时间间隔为200秒。默认情况下,输出的字段为city_nameregion_namecountry_name,以下编排使用tuple形式进行了重命名操作。本示例使用的是IP网站免费版,免费版默认输出信息有限制。
    e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                     ak_id='your ak_id',
                                                     ak_key='your ak_key',
                                                     bucket='your bucket', file='ipipfree.ipdb',
                                                                   format='binary',change_detect_interval=200),keep_fields=(("city_name","city"),("country_name","country"),("region_name","provence"))))
  • 富化结果
    ip: 1.2.3.4
    city: 杭州市
    provence: 浙江省
    country: 中国

使用e_table_map进行富化

根据输入字段的值,在从OSS上获取的CSV格式的数据中查找对应的行,返回对应字段的信息。
  • 原始日志
    account :  Sf24asc4ladDS
  • OSS文件数据
    id account nickname
    1 Sf24asc4ladDS 多弗朗明哥
    2 Sf24asc4ladSA 凯多
    3 Sf24asc4ladCD 罗杰
  • LOG DSL编排
    以下DSL编排规则,首先先从OSS上拉取CSV格式的数据,数据格式如上。其次,使用tab_parse_csv进行表格构建。最后使用e_table_map对数据进行查找并返回相应的信息。
    e_table_map(tab_parse_csv(res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',ak_id=ak_id='your ak_id',ak_key='your ak_key', bucket='your bucket',file='data.csv',change_detect_interval=30)),"account","nickname")
  • 富化结果
    account :  Sf24asc4ladDS
    nickname: 多弗朗明哥