我已经编写了一个Splunk使用查找命令启动的python脚本。
像这样:source="*" | lookup my_script
首先,此脚本创建一个客户端对象,稍后将其用于内部逻辑。该客户端连接到服务器并具有缓存层。此操作非常耗时,为了避免重复,我将客户端存储在python globals()
中。
我注意到,当我运行查找时,将splunk搜索的结果传递给它,每次搜索找到的结果都会被调用一次。如果不是每次都重新创建整个客户端,这将不是什么大问题,因为globals()
名称空间为空,因为整个python进程分别为每个记录调用,并在脚本处理完记录后销毁。
答案 0 :(得分:1)
我的理解与您的理解相同-该脚本将为每个结果调用一次。 Splunk通过分叉自身来执行脚本,这意味着调用之间不会保留任何内容。
考虑将全局对象保存在磁盘或KVStore中。参见https://dev.splunk.com/enterprise/docs/developapps/manageknowledge/kvstore/