2015-07-03 50 views
0

我想知道是否可以创建一个服务器的IP地址阵列,以使Logstash配置文件更容易编辑和读取。我用“linux”标记我们的CentOS盒子,用“联网”标记我们的ASA盒子。现在,我的配置的过滤器部分看起来是这样的:在Logstash配置中创建服务器IP数组?

filter { 
    if [host] == “10.x.x.1” or [host] == “10.x.x.2” or … or [host] “10.x.x.30” { 
     mutate { 
      add_tag => “linux” 
     } 
    } 

    if [host] == “10.x.x.200” or [host] == “10.x.x.201” or … or [host] “10.x.x.250” { 
     mutate { 
      add_tag => “networking” 
     } 
} 

这工作,但因为我在每个类别30多个节点,线极长。我想这样做而不是(伪代码):

array [linux_hosts] = [“10.x.x.1”, 
         “10.x.x.2”, 
         “10.x.x.3”] 

if [host] in [linux_hosts] { 
    mutate { 
     add_tag => “linux” 
    } 
} 

是这样的可能吗?有一个更好的方法吗?

+0

你是如何将日志发送到logstash的? –

+0

我正在使用rsyslog转发来自CentOS盒子的日志,并且我在ASA上使用了内置syslog转发功能。我在Logstash中使用TCP和UDP(都在端口514上监听)输入插件,因为Syslog输入插件似乎会创建grok解析错误。让我知道你是否需要我澄清任何事情。 –

+0

如果您一直在运输logstash或logstash-forwarder,您可以在客户端设置这些字段。 –

回答

0

鉴于您的其他限制条件,我会说translate {}可能是最佳选择。不是很好,但也许最好...

translate { 
    dictionary => [ 
     "10.1.1.1", "linux", 
     "10.1.1.200", "networking" 
    ], 
    destination => "source_type" 
} 

你也可以从文件中读取字典,如果有帮助。

+0

我会给它一个机会!谢谢您的帮助! –