我正在 splunk 中构建一个查询,以过滤以
INFO:__main__:TABLE:
开头且“NOT”以 INFO:__main__: Done
结尾的日志
我想要所有最终不记录Done
的交易。 !
/ Not
似乎不起作用。
我遇到的部分查询:
| rex field=log "INFO:__main__:TABLE: (?<table_name>[A-Za-z_]*)"
| transaction container_name startswith="INFO:__main__:TABLE:" endswith="INFO:__main__: Done"
当前查询将为我提供正确终止/状态为“完成”的交易。我对具有
NOT "DONE"
状态的人感兴趣。
我想要类似的东西:
| transaction container_name startswith="INFO:__main__:TABLE:" endswith!="INFO:__main__: Done"
正如您所发现的,
transaction
命令的endwith
选项不支持NOT。这没有多大意义。更重要的是,它会使低效的命令变得更加低效,因为 Splunk 中的否定搜索比肯定搜索成本更高。
您需要找到不同的方式来定义事务或使用不同的命令。
您可以在
eval
语句中使用正则表达式,这对 startswith
有效。这是一个例子:
... | transaction field startswith="xyz" endswith=eval(match(_raw, "\d\d\s+start"))
根据您的要求使用正则表达式。