热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于ScheduledSQL对VPCFlowLog实现细粒度时间窗口分析

背景阿里云专有网络(VPC)提供流日志功能,支持VPC网络中弹性网卡流量、VPC流量及交换机流量的记录与存储。对流日志分析可以监控访问控

背景

阿里云专有网络(VPC)提供流日志功能,支持VPC网络中弹性网卡流量、VPC流量及交换机流量的记录与存储。对流日志分析可以监控访问控制规则、监控网络流量和排查网络故障。

流日志功能捕获的流量信息以日志方式写入SLS(阿里云日志服务)中。每条日志会捕获特定捕获窗口中的特定五元组网络流,捕获窗口大约为10分钟,该段时间内流日志功能先聚合数据,再发布日志。

在 SLS 上可以通过关键词搜索对指定目标地址被拒绝的请求:

也可以通过 SLS 的 SQL 进行统计分析,但这里涉及一个捕获窗口的问题,例如下面两条流日志(字段做了简化):

Log#1
start: 2021-05-31 00:00:00
end: 2021-05-31 00:08:30
bytes: 9000
packets: 18Log#2
start: 2021-05-31 00:02:30
end: 2021-05-31 00:03:15
bytes: 5000
packets: 10

采集窗口内产生的 bytes,落到 start 时间点上去或是平均落到整个采集窗口,对于流量分析结果会产生明显的差异:

根据不同的业务背景,可以有不同的选择:

一种方法是按采集窗口开始时间计算,方法简单,select from_unixtime(start - start % 60) as dt, sum(bytes) as total_bytes group by dt order by dt asc limit 1000。

另一种较为复杂,拆分采集窗口后计算,本文介绍基于 SLS SQL 拆分日志后重新聚合的分析实践。

方案

如下是一条 start 与 end 相差501的日志,表示采集窗口横跨了 502 个秒级时间段(start、end 是左闭右闭区间):

利用数据函数 sequence 可以生成一个时间序列到 ta 字段:

接着将 ta 序列做 unest 展开,得到 502 条日志:

到这里,基本思路就有了。但一定请注意:

  1. packets、bytes 字段是在一个捕获窗口中获得的,所以展开后的每条日志,应该将指标值均分到每个拆分后的时间段。
  2. 窗口数据展开后,意味着日志量会膨胀,可能产生很大的计算压力与存储成本,建议减少聚合指标分组数目。

为了减少日志条数,我们将拆分后的秒级日志再按照10秒级粒度重新聚合,502 条秒级日志变为 51 条十秒级日志:

Scheduled SQL 实践

将以上方案常驻执行,就可以实现对于新日志的增量处理,如果将预处理结果保存到 Logstore,我们就可以在新的 Logstore 上做分析,可以做到更低的延迟。

Scheduled SQL 是一项由 SLS 全托管的功能,主要的场景包括:

  • 定时分析数据:根据业务需求设置 SQL 语句或查询分析语句,定时执行数据分析,并将分析结果存储到目标库中。
  • 全局聚合:对全量、细粒度的数据进行聚合存储,汇总为存储大小、精度适合的数据,相当于一定程度的有损压缩数据。

执行如下 SQL 预览并确认结果符合预期(如果希望预处理后的数据量更少一些,可以按照分钟粒度做聚合,将 10 替换为 60),SQL 代码:

* | select (t.time - t.time % 10) as __time__, srcaddr, srcport, dstaddr, dstport, action, protocol,sum(bytes * 1.0 / ("end"-start + 1)) as bytes, sum(packets * 1.0 / ("end"-start + 1)) as packetsfrom (select start, "end", srcaddr, srcport, dstaddr, dstport, action, protocol, bytes, packets,sequence(start, "end", 1) as ta from log), unnest(ta) as t(time)group by time, srcaddr, srcport, dstaddr, dstport, action, protocol order by __time__ asc limit 1000000

紧接着创建 Scheduled SQL 作业:

保存作业,选择”增强型资源池“(收费、但资源可扩展,适用于有 SLA 要求的业务场景),设置存储预处理结果到目标 Logstore aligned_vpc_flowlog。

接下来,设置 SQL 作业从 5/28 日的数据开始处理,在存量数据追上进度后,新数据每 5 分钟执行一次,每次查询 5 分钟的数据做处理。

注意延迟执行参数,如果上游 Logstore 的数据到来可能延迟,建议设置大一些的值来保证计算数据的完整性。

Scheduled SQL 作业每 5 分钟一次的实例,可以在控制台上查看到。对于 SQL 执行失败(权限、SQL 语法等原因)或者数据迟到导致空跑情况,可以对指定实例做重试运行。

效果

在 SLS 上制作一个仪表盘对比两种计算方式的流量特征。

  • 10秒聚合-原始窗口

* | select from_unixtime(start - start % 10) as dt, sum(packets) as packets, round(sum(bytes)/1024.0/1024.0, 3) as MB group by dt order by dt asc limit 10000

  • 10秒聚合-拆分窗口数据

* | select from_unixtime(__time__ - __time__ % 10) as dt, sum(packets) as packetes, round(sum(bytes)/1024.0/1024.0, 3) as MB group by dt order by dt asc limit 10000

通过对比可以看到,拆分窗口后的数据统计更加均匀。

原文链接

本文为阿里云原创内容,未经允许不得转载。


推荐阅读
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • 2019-2020学年 20174325 叶竞蔚 《网络对抗技术》实验六:Metasploit基础应用
    本实验旨在掌握Metasploit框架的基本应用方法,重点学习三种常见的攻击方式及其实施思路。实验内容包括一次主动攻击(如MS08-067)、一次针对浏览器的攻击(如MS11-050)以及一次针对客户端的攻击(如Adobe漏洞利用)。此外,还包括成功应用一个辅助模块。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 近期尝试从www.hub.sciverse.com网站通过编程手段获取数据时遇到问题,起初尝试使用WebBrowser控件进行数据抓取,但发现使用GET方法翻页时,返回的HTML代码始终相同。进一步探究后了解到,该网站的数据是通过Ajax异步加载的,可通过HTTP查看详细的JSON响应。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
  • 探讨低代码行业发展现状,分析其未能催生大型企业的原因,包括市场需求、技术局限及商业模型等方面。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • 本文详细解析了神州数码DCRS5980交换机的基础配置流程和技术要点。首先,通过进入配置模式(`enable`),设置主机名(`hostname 5980`),并创建VLAN,逐步介绍了设备的初始设置步骤。此外,还涵盖了端口配置、IP地址分配及安全设置等关键环节,为用户提供了全面的配置指导。 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • DHCP三层交换机设置方式全局模式和接口模式设置方式和命令resetsave回车输入yreboot输入n输入y重启后就恢复默认设置了默认用户名密码adminAdmin@huawei ... [详细]
author-avatar
56修行者场_872
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有