当没有报告错误时,如何在 Windows 上排除 LogStash 故障?

当没有报告错误时,如何在 Windows 上排除 LogStash 故障?

我正在 Windows 上设置 LogStash,并从控制台测试启动 logstash.bat,以查看它是否处理来自 log4net 文件的记录。这是它报告的内容,但我没有在目标 ES 中看到任何记录,尽管日志文件中有记录:

C:>logstash.bat agent -f logstash.conf

Using JAVA_HOME=C:\Program Files\Java\jre1.8.0_102 retrieved from C:\ProgramData\Oracle\java\javapath\java.exe
io/console not supported; tty will not be manipulated
Settings: Default pipeline workers: 4
Pipeline main started

logstash.conf(主机、uid 和密码正确,因此不是连接问题):

 input { 
    file {
       path => "C:\LogStash\logs\logfile"
type => "log4net"
       codec => multiline {
                pattern => "^(DEBUG|WARN|ERROR|INFO|FATAL)"
                negate => true
                what => previous
            }
       }
 }
 filter {
   if [type] == "log4net" {
    grok {
       match => [ "message", "(?m)%{TIMESTAMP_ISO8601:sourceTimestamp} \[Worker #%{NUMBER:threadId}\] %{LOGLEVEL:level} %{GREEDYDATA:tempMessage}" ]
     }
     mutate {
         replace => [ "message" , "%{tempMessage}" ]
         remove_field => [ "tempMessage" ]
     }
   }
 }
 output {
   elasticsearch {
     hosts => ["http://XXXXX:9200"]
     user => "XXXXX"
     password => "XXXXX"
     index => "logstash-%{+YYYY.MM.dd}"
     template_overwrite => true
   }
 }

答案1

事实证明,LogStash 在处理“历史”日志文件(即已经查看过的文件或超过 24 小时的文件)时需要特殊处理。

start_position => "beginning" - 强制 LS 从头开始​​查看文件,假设您的 profile/HOME 目录中的所有 .sincedb* 都已被删除。

ignore_older => 86400(默认!) - 强制 LS 忽略任何超过 24 小时的文件。

相关内容