You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Splunk中高效配置多过滤条件:批量排除519个IP的方法

在Splunk中高效添加大量IP过滤条件的方法

我太懂一个个写519个IP!=xxx有多折磨人了,这几个高效方案绝对能帮你省大把时间:

方案1:批量构造NOT IN列表(快速临时解决)

如果只是临时用一次这个IP列表,最快的方式就是批量生成NOT IN的参数:

  • 先把所有需要排除的IP整理成每行一个的文本(比如从Excel复制粘贴到记事本)
  • 用文本编辑器的「替换」功能(比如VS Code、Notepad++),把换行符替换成 ', '(注意是单引号+逗号+空格)
  • 把处理后的字符串放进NOT IP IN ('')中间,最终的查询会变成:
    index=indexer action=Null NOT IP IN ('10.34.67.32', '87.90.32.10', 'xxx.xxx.xxx.xxx', ...)
    
    这样几秒就能搞定519个IP的批量导入,完全不用手动逐个敲。

方案2:使用查找表Lookup Table(适合长期维护)

如果这个IP黑名单需要频繁更新或者多次使用,用查找表是更优的选择:

  1. 准备CSV文件:新建一个blocked_ips.csv,内容格式如下(第一行是表头,下面每行一个IP):
    blocked_ip
    10.34.67.32
    87.90.32.10
    xxx.xxx.xxx.xxx
    
  2. 上传查找表
    • 进入Splunk的「Settings」>「Lookups」>「Lookup table files」>「Add new」
    • 选择刚才创建的CSV文件,设置好应用权限后保存
  3. 编写查询:通过关联查找表来排除匹配的IP:
    index=indexer action=Null 
    | lookup blocked_ips.csv blocked_ip AS IP OUTPUT blocked_ip
    | where isnull(blocked_ip)
    
    原理是:lookup会把日志中的IP和查找表的blocked_ip匹配,匹配到的会输出blocked_ip字段,最后where isnull(blocked_ip)就只保留那些不在黑名单里的日志。

方案3:创建搜索宏(适合重复使用的场景)

如果这个IP排除规则需要在多个查询里重复使用,可以把它做成搜索宏:

  1. 整理IP列表字符串:先按照方案1的方式生成NOT IP IN ('x', 'y', ...)的完整字符串
  2. 创建宏
    • 进入Splunk的「Settings」>「Advanced Search」>「Search macros」>「Add new」
    • 宏名称设为exclude_blocked_ips(可以自定义),宏的定义内容填刚才的字符串,设置好应用权限后保存
  3. 使用宏:之后查询时直接调用宏即可:
    index=indexer action=Null `exclude_blocked_ips`
    
    以后如果要更新IP列表,只需要修改宏的定义,所有用到这个宏的查询都会自动生效。

额外提示

  • 当IP数量超过几百个时,查找表的性能会比NOT IN更好,因为Splunk对查找表的检索做了优化
  • 不管用哪种方法,都要注意IP格式的正确性,避免多余的空格、换行符或者错误的IP地址

内容的提问来源于stack exchange,提问作者Supriya Sharma

火山引擎 最新活动