Splunk查找脚本生命周期

问题描述

我已经编写了一个Splunk使用查找命令启动的python脚本。

像这样:source="*" | lookup my_script

首先,此脚本创建一个客户端对象,稍后将其用于内部逻辑。该客户端连接到服务器并具有缓存层。此操作非常耗时,为了避免重复,我将客户端存储在python globals()中。

我注意到,当我运行查找时,将splunk搜索的结果传递给它,每次搜索找到的结果都会被调用一次。如果不是每次都重新创建整个客户端,这将不是什么大问题,因为globals()名称空间为空,因为整个python进程分别为每个记录调用,并在脚本处理完记录后销毁。

  • 有人知道查询脚本生命周期的详细信息吗?
  • 每个记录是否传递给单独的python调用
  • 是否有一种存储客户端对象的方法,以使它在每次查找脚本调用后都可以生存?

解决方法

我的理解与您的理解相同-该脚本将为每个结果调用一次。 Splunk通过分叉自身来执行脚本,这意味着调用之间不会保留任何内容。

考虑将全局对象保存在磁盘或KVStore中。参见https://dev.splunk.com/enterprise/docs/developapps/manageknowledge/kvstore/