Splunk 搜索宏17 Mar 2025 | 5 分钟阅读 在本节中,我们将学习 Splunk 中的 搜索宏。我们还将学习 如何将宏插入到搜索字符串,在搜索字符串中预览搜索宏,创建搜索宏的步骤,设计搜索宏定义。 搜索宏 是可以重用并插入到其他搜索中的搜索处理语言 (SPL) 代码块。 搜索宏可以是搜索的任何部分,例如求值语句或搜索词,并且不必按完整顺序排列。 此外,我们可以指定宏字段是否接受任何参数。 将宏插入到搜索字符串当我们将搜索宏放入搜索字符串中时,在宏名称前后放置一个反引号 (')。 在大多数英语键盘上,该字符与波浪号 (~) 位于同一键上。 使用相同的语法,我们可以在其他搜索宏中引用搜索宏。 例如,如果我们有一个名为 mymacro 的搜索宏,当在搜索中引用它时,它看起来如下 sourcetype=access_* | `mymacro` 宏不会在带引号的值内展开。 搜索宏 bar 不会在下面的示例中扩展。 "foo`bar`baz" 在搜索字符串中预览搜索宏使用搜索页面上搜索栏中的以下键盘快捷键检查搜索宏的内容
该快捷方式会打开扩展搜索字符串的预览,其中包含所有嵌套的搜索宏和保存的结果。 如果允许语法标记或行编号,这些功能也会出现在预览中。 我们可以复制要扩展的搜索字符串的部分内容。 现在,要在新窗口中运行扩展的搜索字符串,我们可以单击“在 搜索显示我们的结果 预览中打开”。 包含生成命令的搜索宏通过在搜索字符串中使用搜索宏,请考虑宏是否扩展为以请求、metadata、inputlookup、pivot 和 tstats 顺序开头的 SPL 字符串。 当它这样做时,我们需要在搜索宏前面放置一个管道字符。 例如,如果我们知道搜索宏 mygeneratingmacro 以命令 tstats 开头,我们将如下所示将其插入到我们的搜索字符串中 | `mygeneratingmacro` 搜索宏何时接受参数如果我们的搜索宏接受参数,则在将它们插入到 Splunk 中的搜索字符串时定义这些参数。 例如,如果搜索宏 argmacro(2) 包含两个整数参数,我们可以如下所示插入该宏: 'argmacro(120,300)' 在我们的搜索字符串中。 如果我们的搜索宏参数中包含引号,请在调用宏时转义搜索中的引号。 例如,如果我们传递一个带引号的字符串作为我们的宏参数,我们将使用: 'mymacro('He said \'hello!\').' 我们的搜索宏定义可以包括以下内容
创建搜索宏的步骤。
设计搜索宏定义搜索宏的基本部分是其含义,即当我们以另一种搜索引用它时宏扩展到的 SPL 代码块。 如果我们的搜索宏定义中存在变量,那么宏用户必须将变量输入到搜索宏的定义中,作为两侧带有美元符号的标记。 例如,$arg1 $可能是搜索宏定义中的第一个参数。 宏定义中的管道字符和生成命令当我们在 Splunk Web 中使用生成命令,如搜索、inputlookup 或 tstats 时,将它们放在搜索的开头,并带有前导管道字符。 如果我们希望我们的搜索宏使用生成命令,请从宏定义中删除前导管道字符。 将它放在我们将搜索宏插入到的搜索字符串的开头,位于搜索宏引用之前。 例如,我们有一个名为 mygeneratingmacro 的搜索宏,其定义为 tstats latest(_time) as latest where index!=filemon by index host source sourcetype mygeneratingmacro 的概念以生成命令 tstats 开头。 我们没有在宏描述中用管道字符前导 tstats,而是将管道字符放在搜索字符串中,在搜索宏引用之前。 例如 | `mygeneratingmacro` 验证搜索宏参数。如果我们创建一个包含要由用户输入的参数的 搜索宏,我们将创建一个 验证表达式,该表达式将确定用户的参数是否正确。 我们可以描述一个验证错误消息,当搜索宏参数的验证失败时会发生该错误消息。 验证表达式必须是评估为布尔值或字符串的表达式。 如果验证表达式是布尔值,则如果验证表达式返回 true,则验证成功。 如果它返回 false 或返回 null,则验证失败。 下一主题Splunk 事件类型 |
我们请求您订阅我们的新闻通讯以获取最新更新。