Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch ELK堆栈过滤器和输出部分中的If语句_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash_Kibana - Fatal编程技术网 elasticsearch ELK堆栈过滤器和输出部分中的If语句,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" /> elasticsearch ELK堆栈过滤器和输出部分中的If语句,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" />

elasticsearch ELK堆栈过滤器和输出部分中的If语句

elasticsearch ELK堆栈过滤器和输出部分中的If语句,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana,我有很多主机要通过ELK堆栈可视化来记录。(~1000台机器),所以我需要在X上完成这一部分。1000次,如下所示 filter { if [host] =~ /10\.1\.1\.5/ { grok { add_tag => [ "firewall" ] match => [ "message", "<(?<evtid>.*)>(?<datetim

我有很多主机要通过ELK堆栈可视化来记录。(~1000台机器),所以我需要在X上完成这一部分。1000次,如下所示

filter { 
        if [host] =~ /10\.1\.1\.5/ {
            grok {
                add_tag => [ "firewall" ]
                match => [ "message", "<(?<evtid>.*)>(?<datetime>(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s+(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9]) (?:2[0123]|[01]?[0-9]):(?:[0-5][0-9]):(?:[0-5][0-9])) (?<prog>.*?): (?<msg>.*)" ]
            }
            mutate {
                gsub => ["datetime","  "," "]
            }
            date {
                match => [ "datetime", "MMM dd HH:mm:ss" ]
                timezone => "Europe/Istanbul"
            }
            mutate {
                replace => [ "message", "%{msg}" ]
            }
            mutate {
                remove_field => [ "msg", "datetime" ]
            }
        }
    }
我想在if语句中这样做,我怎么能做到,和,或,等等

if [host] =~ /10\.1\.1\.5/ && /10\.1\.1\.6/ && /10\.1\.1\.7/ && /10\.1\.1\.8/ ... {}
或者任何其他方法来实现这一点。

Logstash支持条件表达式中的
,因此您可以说

但这并不是很有效。相反,尝试找到一个匹配多个主机的正则表达式(可能同时匹配1000个主机)。例如,如果要包括整个10.1.1.0/24子网,请执行以下操作:

if [host] =~ /^10\.1\.1\./ {
  ...
}
如果不可能,另一个选项是枚举所有IP地址并使用
中的

if [host] in ["10.1.1.5", "10.1.1.6", "10.1.1.7"] {
  ...
}
最后一个选择是以某种方式标记来自这些主机的消息,这样就不必在IP地址上设置条件。这似乎是最好的选择,但其可行性取决于如何收集和发送日志

if [host] =~ /^10\.1\.1\./ {
  ...
}
if [host] in ["10.1.1.5", "10.1.1.6", "10.1.1.7"] {
  ...
}