Logstash,获取远程服务器名称

时间:2014-05-16 05:29:41

标签: logstash rsyslog

我有许多ESXi服务器将日志转发到中央日志主机。我的loghost正在运行rsyslog。这似乎一切正常。

我遇到的主要问题是Logstash将每条消息视为来自日志主机,而不是发送日志的远程ESXi服务器。

ESXi服务器的FQDN在消息中,但我真正喜欢的是它显示为来自该机器,因此我可以匹配[host]等等。

我需要的一个主要功能是能够匹配该名称并为其分配一个标记,例如服务器所在的园区。

Haven通过logstash真的遇到了一个很好的方法,我开始怀疑我是否需要在我的rsyslog.conf中进行此更改。

为清晰起见(简化),所有消息都显示为

datestamp loghost" esxiserver.domain.com消息"

我想要的是

datestamp esxiserver.domain.com" message"

这是我的配置,目前非常简单,只是想让它发挥作用。

input {
    file {
            type => "syslog"
            path => [ "/var/log/rsyslog/**/*.log" ]
            start_position => "beginning"
    }
}

filter {
  if [type] == "syslog" {
    grok {
      overwrite => "message"
      match => {
         "message" => "^(?:<%{POSINT:syslog_pri}>)?%{SYSLOGTIMESTAMP:timestamp} %
 {@source_host} %{IPORHOST:host} (?:%{PROG:program}(?:\[%{POSINT:pid}\])?: )?%{GR
 EEDYDATA:message}"
      }
    }
    syslog_pri { }
    date {
      match => [ "timestamp",  "MMM  d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601" ]

    }
  }
}

filter {
  multiline {
   pattern => "^\s"
   what => "previous"
 }
}

filter {
    multiline {
            pattern => "\\$"
            what => "next"
    }
}

output {
        stdout {
                                    codec => rubydebug
                                }
    #elasticsearch {
    #        cluster => "paoli"
    #}
}

示例输出:

 "syslog_severity_code" => 5,
"syslog_facility_code" => 1,
     "syslog_facility" => "user-level",
     "syslog_severity" => "notice"
}
{
             "message" => "May 18 00:48:27 lexington.amr.ch2m.com Vpxa: [FF98F780 verbose      'Default'] Set internal stats for VM: 7 (vpxa VM id), 444 (vpxd VM id). Is FT primary? 0",
            "@version" => "1",
          "@timestamp" => "2014-05-27T20:48:35.492Z",
                "type" => "syslog",
                "host" => "paoli",
                "path" => "/var/log/rsyslog/lexington.amr.ch2m.com/Vpxa.log",
                "tags" => [
    [0] "_grokparsefailure"
],

正如您在消息中看到的那样,实际计算机的FQDN紧跟在时间戳之后。但是,所有这些消息都出现在Elasticsearch / Kibana中,来自loghost(paoli)。

一旦我可以查出实际名称,我计划对邮件进行标记,以便我可以使用它们做更多的事情。

我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我得到了这个工作。不知怎的,我错过了我需要两个logstash实例,一个用于redis,另一个用于读取redis。

这个堆栈上的每个帖子/教程似乎都很快就过时了,所以我不知道这是新的还是我错过的东西。