0

我正在使用 logstash 进行集中式日志记录。我在托运人节点上使用logstash-forwarder,在收集器节点上使用ELK堆栈。问题是我希望logstash从一开始就解析托运人节点上的文件。托运人上的配置文件 logstash-forwarder.conf 具有以下配置:

       {
          "network": {
            "servers": [ "XXX.XX.XX.XXX:5000" ],
            "timeout": 15,
            "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
          },
          "files": [
            {   
              "paths": [
                "/apps/newlogs.txt"
               ],
              "fields": { "type": "syslog" }
            }
           ]
        }

收集器配置为:

input { 
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }   
}
filter {
if [type] == "syslog" {
grok {
     match => { "message" => "%{TIMESTAMP_ISO8601:logdate}\s%{LOGLEVEL:level}\s-\s%{WORD:USE_CASE}\s:\s%{WORD:STEP_DETAIL}\s:\s\[%{WORD:XXX}\]\s:\s(?<XXX>([^\s]+))\s:\s%{GREEDYDATA:MESSAGE_DETAILS}" }
     add_field => [ "received_at", "%{@timestamp}" ]
     add_field => [ "received_from", "%{host}" ]
     add_tag => [ "level:%{level}" ]
     add_tag => [ "USE_CASE:%{USE_CASE}" ]

   }
}
}
output {
  elasticsearch { host => localhost}
  stdout { codec => rubydebug }
}

我希望应该从乞求中解析文件,而不是针对生成的每个事件,我们通过指定 start_position => 开始在logstash.conf中轻松完成,但我无法在logstash-forwarder中找到直接的方法,因为文件将出现在托运人一侧。

谢谢。

4

1 回答 1

0

据我所知,logstash-forwarder 的默认行为是从文件的开头开始 - 所以托运人应该已经按预期从头开始读取。

你还没有说你试图做什么来诊断问题。如果您还没有这样做,我会暂时绕过收集器以确认托运人按预期工作并排除证书的潜在问题。

于 2015-04-21T15:38:46.403 回答