OpenSOC的核心价值是提供了一个综合的解决方案。 该方案依赖于flume,fafka,strom之类的开源组件,并架构其上。 它统一了各组件之间的配置和管理,封装后只将主要的接口后提供给用户。 这样,用户就从繁琐的配置中解脱出来,可以把主要精力放在业务逻辑的制定上。
目前流行的日志分析框架也是基于这些组件,只不过不同公司具体的组合方法不同(详情见后文)。这些组件按功能可分为如下几个类型:
数据传递
像蚂蚁一样,将数据从一个地方实时运输到另一个地方,可以对数据做简单的计算(筛选,变形,丰富)。 主要部署在各个原始数据源,将这些零散的数据发送到统一的数据中心。 常见的组件有Flume和logstash.
数据集散中心
像物流仓库一样,提供数据的集散服务。 目的是为数据的生产方和消费方提供一个缓冲区域。 实现上多为队列结构,常见的组件有kafka,redis,和其他消息队列。
数据持久化存储中心
存储各种需要长期存储的数据。 原始和初加工的数据由于量大,会存至hive或hbase. 最终的检测,处理和其他数量少的结果数据,会存至mysql或mongodb.
实时计算工具
提供长期不间断的计算服务,满足实时需求。 最出名的是strom.
批量计算工具
基于map reduce方法进行批量计算。 一种是编程实现map reduce算法,然后提交计算任务。 一种是使用封装好map reduce的工具,例如hive,spark,用更简单的语法实现计算逻辑,这些工具自动转化为map reduce算法。
数据可视化
常见的组合是Elastic Search + Kibana. 前者对数据进行索引,后者利用前者的api读取数据,用web呈现出来。
https://www.bro.org/brocon2014/brocon2014_grutzmacher_opensoc.pdf
http://opensoc.github.io/