日志处理与ETL
技术领域中有两类看起来有点类似的工具,日志处理工具与ETL工具。
有时会感觉者两类工具有一定相似性,但其面向的领域还是有明确的不同的。
日志处理#
Logstash,FluentD,Vector 这三个工具都是用来做日志处理的。
日志处理工具通常包含日志搜集,日志转换,日志输出三个步骤的抽象,在三个步骤中会有若干插件可以选择和配置,以完成任务。
例如:从Syslog接入日志,将日志按照JSON的格式解析,富化出一些字段,最后存储到ES中。
这个流程仅仅通过对日志处理工具进行配置就能实现,不用编写代码,这也正是日志处理工具的价值。
在日志处理领域,通常将每一条日志看作是独立的,对其进行的一些转换操作也仅参考单条日志的信息。
对多条日志进行上下文关联性的分析属于另外一个领域:关联分析,在SOC类系统中通常关联分析属于很重要的部分。
ETL#
ETL是数据处理中提出的概念由Extract,Transform,Load三个词的缩写组成。
这三个概念看起来与日志处理的三个步骤很相似,主要的区别是ETL面向的是数据处理领域,其操作对象是数据而不是日志。
例如其Extract步骤通常是从数据库或另外的系统中进行数据抽取,数据抽取的逻辑复杂度也会比单纯的日志搜集会复杂一些,因为其可能涉及到多个表的关联查询等操作。
ETL领域的工具较多,有传统的 Kettle,Apache Nifi,针对大数据的 Apache Flume,Apache Sqoop,还有云厂商提供的云上ETL工具,以流式ETL如StreamSets。
总结#
总体来讲ETL工具更加复杂,不少工具都包含一个可视化的ETL流程编辑器,同时ETL工具部署也更重一些。
而日志处理工具通常是用配置文件进行配置,为了便于部署工具也很轻量,通常通过命令行运行。