Logstash,正在获取远程服务器名称

Logstash,正在获取远程服务器名称,logstash,rsyslog,Logstash,Rsyslog,我有许多ESXi服务器将日志转发到中央日志主机。我的日志主机正在运行rsyslog。这一切似乎都运作良好 我遇到的主要问题是,Logstash认为每条消息都来自loghost,而不是发送日志的远程ESXi服务器 ESXi服务器的FQDN在消息中,但我真正希望它显示为来自该计算机,以便我可以在[host]上进行匹配,等等 我需要的一个主要特性是能够匹配该名称并为其分配一个标记,比如服务器所在的校园 我还没有找到一个使用logstash的好方法,我开始怀疑是否需要在rsyslog.conf中做这个更

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

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

ESXi服务器的FQDN在消息中,但我真正希望它显示为来自该计算机,以便我可以在[host]上进行匹配,等等

我需要的一个主要特性是能够匹配该名称并为其分配一个标记,比如服务器所在的校园

我还没有找到一个使用logstash的好方法,我开始怀疑是否需要在rsyslog.conf中做这个更改

为了清晰(简化),所有消息显示为

日期戳日志主机“esxiserver.domain.com消息”

我想要的是

日期戳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"
    #}
}
正如您在消息中看到的,实际机器的FQDN列在时间戳之后。然而,所有这些消息在Elasticsearch/Kibana中显示为来自loghost(paoli)

一旦我可以grep出实际的名字,我计划标记这些消息,这样我就可以对它们做更多的事情


如果您能在这里提供任何帮助,我们将不胜感激。

我的工作顺利进行。不知何故,我忽略了我需要两个logstash实例,一个用于输入redis,另一个用于读取redis


此堆栈上的每一篇文章/教程似乎很快就过时了,所以我不知道这是新的还是我错过的东西。

您可以添加当前的日志存储配置吗?或者至少是相关部分?嗨,我基本上是把logstash指向/var/log/rsyslog/***.log。它工作得很好,我只想看到日志来自日志所属的实际机器,而不是日志主机。你需要解析你的消息。例如,从消息中获取FQDN。你能给出日志格式吗?这样我们就可以讨论你是如何解析它的。添加了我目前正在使用的配置。还包括输出的外观。我在搜索中没有看到很多这样做的例子,所以我想知道我是不是很难做到这一点。似乎许多配置不需要这样做?
 "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"
],