Splunk - 命令类型

17 Mar 2025 | 5 分钟阅读

在本节中,我们将学习 Splunk 搜索中存在的命令类型。我们将要介绍的命令有:流式命令和非流式命令、可分发流式命令、集中式流式命令、转换命令、生成命令、编排命令、数据集处理命令

命令类型

当我们学习 Splunk SPL 时,我们可能会听到一些用于定义流式传输、创建、转换、编排和处理数据的搜索命令类型。 每个部分列出了属于每个类别的命令,并讨论了这些词的含义。

基本上有六种搜索命令

  • 可分发流式命令
  • 集中式流式命令
  • 转换命令
  • 生成命令
  • 编排命令
  • 数据集处理命令

在 Splunk Web 应用程序中,这种分类不是唯一的。 有些命令只属于一个组。 例如,stats 命令只适合转换器的分类。 某些命令可能适合多个类别。 例如,一个命令可以流式传输并生成。

流式命令和非流式命令

在每个事件上,流式命令在其从扫描返回时运行。 本质上,一个参与者参与,一个(或没有)输出。

例如,eval 命令将创建一个新字段,全名,其中将包含名字字段、空格和姓氏值的连接值。

eval 命令测试每个事件,而不考虑其他事件。

非流式命令 允许所有索引器在命令可以运行在整个事件集之前获取事件。 一些转换命令是非流式命令。 也有几个命令不转换命令,而是非流式命令。

这些非转换、非流式命令通常被称为基于事件的非流式命令。

例如,整个事件集必须由 sort 命令接收,然后 sort 命令才能开始对事件进行排序。 一些非流式命令的示例包括 dedup(在某些模式下)、data 和 top。

非流式命令将搜索头推向整个事件序列。 这需要大量的数据传输和平行损失。

处理属性

下表概述了某些命令类型的处理差异。

可分发流式传输集中式流式传输数据处理(非流式)转换
可以在索引器上运行YNNN
可以在最终输入之前输出YYNN
如果输入是事件,则输出事件YYYN

执行命令时,它会根据命令类型生成事件或结果。 例如,当我们执行 sort 命令时,输入是事件,输出是按我们选择的排序顺序排列的事件。 但是,转换指令不会发出事件。 转换会导致处理命令。 例如,命令 stats 输出一个测量结果的表。

用于测量这些结果的活动不再存在。 在执行转换命令后,我们无法运行使用事件作为输入的命令。

用于处理数据的命令是非流式命令,允许在命令可以运行之前获取整个数据集。 这些命令不转换、不可分发、不流式传输且不编排。 Sort 命令是处理数据的命令的示例。

可分发流式传输

在搜索返回的每个事件上,流式命令都会运行。 事件的顺序对于可分发流式传输并不重要。 可以分发的流式命令是可以 在索引器上运行的命令,这可以提高处理时间。 请求中的其他命令决定了要传输的流式命令是否在索引器上运行

  • 如果所有命令都可以在可分发流式命令之前在索引器上运行,则可分发流式命令将在索引器上执行。
  • 如果某些命令需要在可分发流式命令之前在搜索头 上运行,则搜索中的其余命令将需要在搜索头 上运行。 当搜索的处理转移到搜索头 时,它无法再次移动到索引器。
  • 可分发流式命令可以以并行方式用于索引数据的子集。 例如,它流式传输 rex 它在搜索时提取字段并将它们应用于事件。
  • Sds 交付时提供的一些流行的流式命令是:eval、fields、makemv、rename、regex、substitute、strcat、typer 和 where。

集中式流式传输

事件的顺序对于统一流式命令计数。 集中式流式命令将转换应用于搜索返回的任何情况。 但与分布式流式命令不同,集中式流式命令仅在搜索的头部工作。 我们也可以使用“有状态流式传输”一词来解释这些顺序。

集中式流式命令包括:head、streamstats 和某些集群模式。

转换

转换命令将搜索结果命令到数据表中。 这些命令“转换”每个事件的指定单元格值转换为数值,Splunk 软件可以将这些数值用于统计目的。 不要流式传输命令进行转换。 转换命令对于将搜索结果数据转换为可视化(例如列、条形、折线图、面积图和饼图)所需的数据结构也是必要的。

用于测量列总计(不是行总计)时,转换命令包括:map、timecart、details、top、uncommon 和 addtotals。

生成

命令生成 从索引获取信息,没有任何转换。 生成命令可以生成事件(可分发或集中式)或生成报告。 大多数生成信息的命令也是集中式的。 结果以列表或表格形式返回,具体取决于命令的形式。

不要期望或需要输入来生成命令。 生成命令通常以搜索开始处的引导管道调用。 也就是说,无法执行通过管道传输到生成命令的 quest。 此规则的例外是搜索指令,因为它隐含在搜索的开头,因此不需要调用。

命令生成类型包括:dbinspect、datamodel、inputcsv、metadata、pivot、search 和 tstats

编排

编排命令控制 quest 处理的某些部分。 它对搜索的最终结果集合没有任何影响。 例如,我们可以在搜索中添加编排命令以启用或禁用搜索优化,以帮助更快地完成整个搜索。

编排中的命令类型包括 redistribute、noop 和 localop。 如果我们将它与 local = t 语句一起使用,则 lookup 命令通常会变成编排函数。

数据集处理

有一些命令在运行之前需要整个数据集。 这些命令称为数据集处理命令。 这些命令不转换、不可分发、不流式传输且不编排。 在特定情况下,其中一些命令适合某些形式或使用特定参数。


下一个主题Splunk Sort 命令