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

本文涉及的产品
对象存储 OSS,20GB 3个月
云解析 DNS,旗舰版 1个月
日志服务 SLS,月写入数据量 50GB 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天没有出现过威胁情报信息,则结果字段不会输出内容。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
152 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
2月前
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
139 12
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
2月前
|
数据采集 机器学习/深度学习 存储
使用 Python 清洗日志数据
使用 Python 清洗日志数据
49 2
|
2月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
42 1
|
2月前
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
203 0
|
3月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
254 3
|
4月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
66 0
|
4月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
72 0
|
4月前
|
存储 运维 监控
Entity Framework Core 实现审计日志记录超棒!多种方法助你跟踪数据变化、监控操作,超实用!
【8月更文挑战第31天】在软件开发中,审计日志记录对于跟踪数据变化、监控用户操作及故障排查至关重要。Entity Framework Core (EF Core) 作为强大的对象关系映射框架,提供了多种实现审计日志记录的方法。例如,可以使用 EF Core 的拦截器在数据库操作前后执行自定义逻辑,记录操作类型、时间和执行用户等信息。此外,也可通过在实体类中添加审计属性(如 `CreatedBy`、`CreatedDate` 等),并在保存实体时更新这些属性来记录审计信息。这两种方法都能有效帮助我们追踪数据变更并满足合规性和安全性需求。
118 0