基于分布式流计算平台(storm)的CGI采集与清理系统

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 博文作者:雕哥 发布日期:2014-01-09 阅读次数:56 博文内容:         CGI好比Web漏洞扫描器的眼睛,只有CGI更全更准,Web漏洞扫描器才能更好的“看到”漏洞,为业务的Web安全保驾护航。

博文作者:雕哥

发布日期:2014-01-09

阅读次数:56

博文内容:


        CGI好比Web漏洞扫描器的眼睛,只有CGI更全更准,Web漏洞扫描器才能更好的“看到”漏洞,为业务的Web安全保驾护航。本文简单介绍了基于分布式流计算平台Storm的海量CGI采集去重系统——Storm-Cgi。

1、开源分布式流计算平台Storm简介

        Storm是一个由Twitter公司开源的与Hadoop并驾齐驱的分布式,实时流计算系统。可以简单、可靠的处理大量的数据流。

1.1、Storm系统的主要特点

a、简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。

b、可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。

c、容错性。Storm会管理工作进程和节点的故障。

d、水平扩展。计算是在多个线程、进程和服务器之间并行进行的。

e、可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。

f、快速。系统的设计保证了消息能得到快速的处理,可以使用ØMQ或Netty作为其底层消息队列。

1.2、Storm的组成

        Storm编程中的主要术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。大体结构如下图:



1.3
、Storm的广泛应用


        Storm
在国内外的应用都相当广泛,包括Twitter,Yahoo等,国内公司有阿里,淘宝,腾讯,百度,360等。



2、Storm-Cgi系统整体架构


        Storm-Cgi
系统,采集CGI的来源主要有三种,分别是IDS光纤旁路出来HTTP请求日志文件,门神旁路的HTTP请求日志文件,还有Web2.0爬虫抓取的URL。Storm-Cgi中的Spout组件Valid_Rewrite_Spout从这些数据源中抓取CGI,并进行合法性过滤和Rewrite过滤, Http探测过滤,最终得到高质量的实际存在的CGI。Storm-Cgi系统还能从CGI库中读取库存CGI数据,进行迭代过滤,保证库存CGI数据的准确有效性。Storm-Cgi系统的整体架构如下图一所示。



图一 Storm-Cgi整体结构

 

3、主要模块的设计

3.1、Valid_Rewrite_Spout

        该模块负责从各数据源采集CGI,并做合法性过滤与Rewrite过滤。Valid_Rewrite_Spout会从不同格式的数据源中抓取出统一格式的CGI,并进行合法性验证与Rewrite过滤。合法性过滤包括:Host合法性验证,URL的Path段合法性过滤,请求的UA过滤,静态资源过滤等。Rewrite过滤能自动生成Rewrite规则,并迭代得过滤库存的CGI。

3.2、Pv_Bolt


        Storm-Cgi
系统读取的数据源包括了旁路的HTTP请求日志,在一段时间间隔内,必定有大量重复请求的CGI数据,这些数据其实只需要一个CGI走后续的过滤流程即可,避免重复CGI过滤带来的资源耗损。所以,Pv_Bolt模块的作用是拦截重复的CGI数据,起到降流去重的作用。数据显示,5分钟内,一个CGI被重复请求的次数有时可高达3万多次,平均10ms就被请求一次。

        Pv_Bolt就是CGI的统计缓存,缓存中统计了一个CGI在一段时间内的PV值和缓存它时的时间戳。该缓存中的CGI采用的淘汰算法为最近最少使用算法(LRU),将一段时间内PV小于3的CGI清理出去,避免缓存过大导致内存耗尽。同时,根据时间戳,将时间戳超过一定阈值的CGI也清理掉。这样,保证了CGI数据不会因后续流程故障等原因导致遗漏。

3.3、HttpAccess_Bolt


        HttpAccess_Bolt
的主要功能是对CGI进行HTTP探测过滤,探测一个CGI是否存在,即存在性验证。一个CGI的返回码HttpCode为404表示该CGI不存在,可以被过滤掉。还包括其他类型的CGI存在性验证过滤。比如公司不存在的页面都引用了一个公益404页面,这种CGI也可别过滤掉。

        HTTP探测过滤的规则可配置,能动态加载。过滤规则为一个JSON字符串。形式如图二所示


图二 HTTP探测规律规则形式


        HTTP
探过滤规则的设计,能支持全局过滤规则和特定域名的过滤规则两种,目前通用的HTTP探测规则主要有:公益404,图片404,HttpCode过滤等。HTTP探测过滤规则中最主要的是rule字段,它由多个规则子项组成,各规则子项是逻辑与的关系。只有当所有规则子项都为真时,该条HTTP探测规律规则才匹配。匹配了过滤规则的CGI将认为不存在,将被过滤掉。公益404页面的过滤规则可写成图三形式:


图三 公益404过滤规则

4、效果


        目前,Storm-Cgi是由分布在不同IDC机房的13台机器组成的小分布式集群,每天可处理2T左右的日志文件,每天平均过滤4亿个CGI数据,从中采集到5万左右准确的CGI(部分CGI在CGI库中已经存在)。整体效果如下图。


图四 Storm-Cgi分布式集群列表



图五 Storm-Cgi各组件过滤情况


5、
总结


        Storm-Cgi
能从大量的数据中实时地采集出海量的CGI数据,并通过合法性过滤,Rewrite过滤,HTTP探测过滤,最终得到准确的CGI数据,供Web漏洞扫描器做安全漏洞扫描。它好比Web漏洞扫描器的眼睛,能让Web漏洞扫描器透过海量脏的URL数据,看到真实准确的CGI,从而发现Web安全漏洞,使漏洞无处遁形。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2天前
|
数据采集 监控 数据可视化
11.7K Star!这个分布式爬虫管理平台让多语言协作如此简单!
分布式爬虫管理平台Crawlab,支持任何编程语言和框架的爬虫管理,提供可视化界面、任务调度、日志监控等企业级功能,让爬虫开发管理效率提升300%!
|
1月前
|
Java 调度 Maven
新一代 Cron-Job 分布式任务调度平台 正式发布!
简单易用、超低延迟,支持用户权限管理、多语言客户端和多租户接入的分布式任务调度平台。 支持任何Cron表达式的任务调度,支持常用的分片和随机策略;支持失败丢弃、失败重试的失败策略;支持动态任务参数。
128 15
|
1月前
|
Java 关系型数据库 MySQL
新一代 Cron-Job分布式任务调度平台 部署指南
简单易用、超低延迟,支持用户权限管理、多语言客户端和多租户接入的分布式任务调度平台。 支持任何Cron表达式的任务调度,支持常用的分片和随机策略;支持失败丢弃、失败重试的失败策略;支持动态任务参数。
81 11
|
21天前
|
测试技术 调度
新一代 Cron-Job分布式调度平台,v1.0.5版本发布!
增加标签路由能力和多项功能优化!其中Tag标签路由的功能,测试环境多迭代场景下,可通过给任务配置Tag标签,实现任务路由到不同的执行器上。
23 0
|
2月前
|
存储 运维 安全
盘古分布式存储系统的稳定性实践
本文介绍了阿里云飞天盘古分布式存储系统的稳定性实践。盘古作为阿里云的核心组件,支撑了阿里巴巴集团的众多业务,确保数据高可靠性、系统高可用性和安全生产运维是其关键目标。文章详细探讨了数据不丢不错、系统高可用性的实现方法,以及通过故障演练、自动化发布和健康检查等手段保障生产安全。总结指出,稳定性是一项系统工程,需要持续迭代演进,盘古经过十年以上的线上锤炼,积累了丰富的实践经验。
116 7
|
2月前
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
81 7
|
4月前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
3月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
191 4
|
4月前
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
294 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
4月前
|
机器学习/深度学习 人工智能 分布式计算
【AI系统】分布式通信与 NVLink
进入大模型时代后,AI的核心转向大模型发展,训练这类模型需克服大量GPU资源及长时间的需求。面对单个GPU内存限制,跨多个GPU的分布式训练成为必要,这涉及到分布式通信和NVLink技术的应用。分布式通信允许多个节点协作完成任务,而NVLink则是一种高速、低延迟的通信技术,用于连接GPU或GPU与其它设备,以实现高性能计算。随着大模型的参数、数据规模扩大及算力需求增长,分布式并行策略,如数据并行和模型并行,变得至关重要。这些策略通过将模型或数据分割在多个GPU上处理,提高了训练效率。此外,NVLink和NVSwitch技术的持续演进,为GPU间的高效通信提供了更强的支持,推动了大模型训练的快
108 0

热门文章

最新文章