我过去使用过 Logstash,但是已经有一段时间了,这是我第一次尝试从文件中读取。在我的一生中,我一直在一项绝对简单的任务上花费数小时。而不是阅读整个日志,我只是从一些小的东西开始,然后用它来构建我的代码。
我的日志文件名为 /home/shoresc/Desktop/logstash_config/sample.messages
它的内容如下所示:
Jan 15 00:33:48 "POST /service.php?session_name=sample_name HTTP/1.1"
我的 logstash 文件如下所示:
input {
file {
path => "/home/shoresc/Desktop/logstash_config/sample.messages"
}
}
filter {
grok {
patterns_dir => "/home/shoresc/Desktop/logstash_config/patterns"
match => [ "message", "%{SYSLOGBASE} %{GREEDYDATA:message1}"]
}
}
output {
stdout { codec => rubydebug }
}
最后,我使用此路径引用此代码:
/usr/bin/java -Xmx256m -Xms256m -jar logstash.jar agent -w 1 -f /home/shoresc/Desktop/logstash_config/syslog.conf
Syslog.conf 位于该目录中,我已经验证了 patterns 文件夹的路径以及 sample.messages 文件。奇怪的是,它实际上偶尔会解析它。像 20 次中的 1 次。
我几乎肯定这是logstash中的一个错误,但是我想由社区运行它,以防我遗漏了一些东西。
我在这里做错了吗?
在此先感谢科尔
我已经用这个更新了代码:
input {
file {
path => "/home/shoresc/Desktop/logstash_config/sample.messages"
type => syslog
start_position => "end"
}
}
filter {
if [type] == "syslog" {
grok {
patterns_dir => "/home/shoresc/Desktop/logstash_config/patterns"
match => [ "message", "%{SYSLOGBASE} %{GREEDYDATA:message1}"]
}
}
}
output {
stdout { codec => rubydebug }
}
涵盖我的所有基础(添加标签并将文件输入设置为结束。它仍然无法正常工作。有人有什么想法吗?
谢谢,科尔