Logstash保持syslog主机

时间:2016-08-10 13:07:00

标签: logstash syslog

我在同一台服务器上有一个syslog服务器和一个ELK堆栈。我有一个每个syslog源的目录。 我尝试使用Logstash解析syslog文件,并且我想在#34; host"中保留sys地址源的ip地址或主机名。领域。目前,我在Logstash解析后拥有0.0.0.0源代码。

我的logstash.conf:

input {
  file {
    path => ["path/to/file.log"]
    start_position => "beginning"
    type => "linux-syslog"
    ignore_older => 0
  }
}

filter {
  if [type] == "linux-syslog" {
    grok {
      match => {"message" => "<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:[%{POSINT:syslog_pid}])?: %{GREEDYDATA:syslog_message}" }
    }
  }
}

output {
  elasticsearch {
    hosts => ["@IP_Elastic:Port_Elastic"]
  }
stdout { codec => rubydebug }
}

1 个答案:

答案 0 :(得分:0)

解析后,您可以使用ip变量覆盖主机。考虑这个例子:

Pipeline main started
{"ip":"1.2.3.4"}
{
       "message" => "{\"ip\":\"1.2.3.4\"}",
      "@version" => "1",
    "@timestamp" => "2016-08-10T13:36:18.875Z",
          "host" => "pandaadb",
            "ip" => "1.2.3.4",
         "@host" => "1.2.3.4"
}

我正在解析json以获取IP。然后我将IP字段写入主机。

过滤器:

filter {
    # this parses the ip json
    json {
        source => "message"
    }

    mutate {
        add_field => { "@host" => "%{ip}" }
    }
}

将%{ip}替换为包含您的IP地址的任何字段。

干杯, 阿图尔