【新发布】SLS数据加工增值内容服务

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 【数据加工】是一个可托管、高可用、可扩展的数据处理服务,广泛适用于数据的规整、富化、分发、汇总、重建索引等场景。这里详细介绍如何通过数据加工实现数据的分发与汇总,从而实现统一存储管理或分类精细化查询分析,以及存储成本优化等目的。

内置 GeoIP 库

SLS 数据加工支持对 IP 地址数据的地理位置(GeoIP)进行解析,解析IP地址被分配使用的大致地理位置范围。通过调用数据加工预定义函数 geo_parse 即可实现。

应用场景

我们需要处理的原始数据如下,是 Nginx 访问日志样例数据,其中 client_ip 字段存储的是访问客户端 IP 地址,我们需要对客户端来源地域进行分析,所以第一步需要先解析出 IP 信息对应的地理位置信息。

client_ip: 101.37.0.0
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200

数据加工实现

1. 基于内置GeoIP库解析

SLS 提供了内置 GeoIP 库,可以直接调用,调用方法如下,将解析结果存入 _geo_ 字段中:

e_set("_geo_", geo_parse(v("client_ip")))

解析结果如下,_geo_ 字段中包含了国家、省份(州)、城市、运营商、经纬度等信息:

client_ip: 101.37.0.0
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200
_geo_: {
  "country_en": "CN",
  "province_en": "330000",
  "city_en": "330100",
  "country": "中国",
  "province": "浙江省",
  "city": "杭州市",
  "isp": "阿里云",
  "lat": 30.294,
  "lon": 120.162
}

也可以通过指定 keep_fields 参数来保留需要解析出哪些信息,来减少不需要的数据量,示例如下:

e_set("_geo_", geo_parse(v("client_ip"), keep_fields=("country", "province")))

2. 基于自选GeoIP库解析

如果我们已经购买了 GeoIP 库,想要在数据加工使用自选的 GeoIP 库。数据加工预定义韩式 res_oss_file 支持从 OSS 拉取自选 GeoIP 库文件,并进行解析,需要指定 ip_dbprovider 2 个参数,示例如下:

e_set(
    "geo",
    geo_parse(
        v("client_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",
        ),
        provider="ipip",
    ),
)

自选 GeoIP 库默认输出3个信息,countryprovincecity。如果需要输出更多信息,也可以通过指定 keep_fields 参数来实现。

3. 单事件多IP解析

有的时候,客户端的访问通过了一系列的代理服务器,这些路径上的 IP 地址都会被记录在访问日志中。所以访问日志如下:

client_ip: 101.37.0.0; 101.37.0.1; 101.37.0.2
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200

数据加工支持传入多 IP 的分隔符参数 ip_sep,然后对所有 IP 逐个解析,将解析结果打包在一个 JOSN 对象中。代码如下:

e_set("_geo_", geo_parse(v("client_ip"), ip_sep=";"))

返回结果如下:

client_ip: 101.37.0.0
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200
_geo_: {
  "101.37.0.0": {
    "country_en": "CN",
    "province_en": "330000",
    "city_en": "330100",
    "country": "中国",
    "province": "浙江省",
    "city": "杭州市",
    "isp": "阿里云",
    "lat": 30.294,
    "lon": 120.162
  },
  "101.37.0.1": {
    "country_en": "CN",
    "province_en": "330000",
    "city_en": "330100",
    "country": "中国",
    "province": "浙江省",
    "city": "杭州市",
    "isp": "阿里云",
    "lat": 30.294,
    "lon": 120.162
  },
  "101.37.0.2": {
    "country_en": "CN",
    "province_en": "330000",
    "city_en": "330100",
    "country": "中国",
    "province": "浙江省",
    "city": "杭州市",
    "isp": "阿里云",
    "lat": 30.294,
    "lon": 120.162
  }
}

威胁情报扫描

SLS 数据加工提供内置函数 e_threat_intelligence,可用于扫描数据内容是否存在威胁情报,比如检查访问 IP 是否存在威胁。
阿里云威胁情报服务提供最近30天出现的威胁情报信息,每天更新一次。

应用场景

实时数据审计

我们的服务系统可能时时刻刻接受着来自世界各地的访问、或者是文件上传,如何快速识别出访问者是否有可能怀有恶意、或者上传内容是有潜在风险,从而把风险带来的损失降到尽可能低。

历史事件溯源

当攻击行为已经发生,我们最急切要做的就是溯源整个事件,找出攻击者和被攻破的原因,确定其他可能处于风险中的IT资源,预测攻击的后续行为,从而达到相似或相关的攻击行为不会在我们在成损失。

数据加工调用

这里示例同样是对访问日志的 IP 地址做扫描,需要指定扫描数据类型为 ip、需要扫描的字段为 client_ip、扫描结果输出字段为 _ti_,数据加工调用代码如下:

e_threat_intelligence("ip", "client_ip", output_field="_ti_")

扫描结果如下:

client_ip: 101.37.0.0
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200
_ti_: {
  "confidence": 100,
  "severity": 4,
  "family": "",
  "ioc_raw": "203.0.113.1",
  "ioc_type": "ipv4",
  "intel_type": "web",
  "country": "中国",
  "province": "浙江省",
  "city": "杭州市",
  "isp": "电信"
}

如果所给定的需要扫描的内容最近30天没有出现过威胁情报信息,则结果字段不会输出内容。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
8月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
2322 99
|
8月前
|
数据采集 运维 监控
不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?
SLS 全新推出的「软删除」功能,以接近索引查询的性能,解决了数据应急删除与脏数据治理的痛点。2 分钟掌握这一数据管理神器。
775 48
|
12月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
本文介绍了阿里集团A+流量分析平台的日志查询优化方案,针对万亿级日志数据的写入与查询挑战,提出基于Flink、Paimon和StarRocks的技术架构。通过Paimon存储日志数据,结合StarRocks高效计算能力,实现秒级查询性能。具体包括分桶表设计、数据缓存优化及文件大小控制等措施,解决高并发、大数据量下的查询效率问题。最终,日志查询耗时从分钟级降至秒级,显著提升业务响应速度,并为未来更低存储成本、更高性能及更多业务场景覆盖奠定基础。
|
9月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
A+流量分析平台是阿里集团统一的全域流量数据分析平台,致力于通过埋点、采集、计算构建流量数据闭环,助力业务提升流量转化。面对万亿级日志数据带来的写入与查询挑战,平台采用Flink+Paimon+StarRocks技术方案,实现高吞吐写入与秒级查询,优化存储成本与扩展性,提升日志分析效率。
1201 1
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
857 118
|
9月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
844 0
|
9月前
|
数据采集 运维 监控
|
11月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
1269 4
|
存储 JSON Go
PHP 日志系统的最佳搭档:一个 Go 写的远程日志收集服务
为了不再 SSH 上去翻日志,我写了个 Go 小脚本,用来接收远程日志。PHP 负责记录日志,Go 负责存储和展示,按天存储、支持 API 访问、可远程管理,终于能第一时间知道项目炸了。
323 10