0.提要
本篇主要从技术层面针对Splunk Enterprise中关于数据处理的概念、过程与部件进行了概要性总结。
1.数据管理基本概念
索引(index):Splunk用于存储事件的数据仓库;
索引服务实例(indexer):管理Splunk索引的(软件部署)实例,同时也可能肩负数据导入处理与执行检索的工作;
索引服务集群(indexer cluster):关于Splunk服务实例的复制集形态集群。
1.1 索引
从表面上看,“索引”就是一系列的文件。这些文件分为两大类:
存储原始数据(原始数据已被压缩)的文件(rawdata files)
指向原始数据的索引文件(tsidx files)与一些保存元数据信息的文件
Splunk使用这些文件管理了所有的相关数据,不依赖任何第三方的数据库环境。此类文件被组织到一系列按照时间分代管理的目录中,这些目录被称作buckets。
1.1.1 分代数据管理
Splunk的索引服务实例会按照默认的时间分代策略来管理buckets。随着buckets年龄增长(从创建到当前),会经历如下阶段:
hot
warm
cold
frozen
thawed
每个bucket都会从上到下地经历上述各个时间代。
当数据刚被索引时,会进入到一个hot bucket。hot bucket内的数据既可读(检索)亦可写(索引变更)。一个Splunk索引内可包含数个(不会太多)处于hot阶段的bucket。
当hot bucket满足一定的条件时,比如数据量增长到一定大小,就会转为warm阶段。此时新的hot
bucket将会被创建,以继续接收新数据到来。转换为warm阶段的bucket是只可读而不可写的。在一个Splunk索引里可能包含许多个warm
bucket。
接着,当达到一定条件后,比如warm bucket的数量达到设定数目后,warm bucket将会被按照时间老幼顺序陆续转为cold阶段。cold阶段的数据也是可读不可写的。在一个Splunk索引里可能包含许多个cold bucket。
从cold再往后的阶段就是frozen了。frozen阶段的数据默认是进行删除处理的,同样也可以通过配置,将frozen阶段的数据做归档处理。frozen阶段的数据是既不可读亦不可写的。对此更进一步地解释是cold阶段的数据已经不再索引之中了。
cold阶段被归档的数据可以被恢复(thawed)。将cold阶段的归档数据再重新加入到索引之中,即为thawed数据。
正如前文所述,Splunk通过不同的目录来管理数据,各时间代的bucket对应了不同的文件目录路径,这些均可通过配置文件来进行设定;同样可以配置的参数还有诸如各时间代最大数据容量、bucket数量、转换检查周期等。
1.2 概念关系图
本章节所涉概念简要关系示意图如下:
总结来看,基于事件数据固有的时间序性,Splunk对其所管理数据进行了垂直于时间轴的划分;并且,这种划分在逻辑上与物理上是对应的。如此做法的优势在于:
通过不同的数据分代策略配置,能够更灵活地适应不同的计算环境条件;
清晰明确的数据物理结构,能够更方便的应对数据管理:迁移、备份、安全防护等。
2.数据传输处理
进入到Splunk的数据在最终的持久化工作尘埃落定之前,都会经过相当繁杂的处理工作。如前文所述,索引服务实例(indexer)除了负责管理数据索引,同时也可能肩负 “数据导入处理” 与执行检索的工作。那么所谓的 “数据导入处理” 都包括哪些内容呢?
从更高的逻辑视角来看,Splunk采用了“管道-过滤器”架构风格来处理数据,处于管道起点的数据就是从原始数据源产出的数据,而处于管道终点的数据就是可以被检索并且封装了各种数据属性与对象的事件数据;相应地,数据