我正在尝试设置Logstash,因为我想将Apache日志信息转发到Elasticsearch。 我想在服务器启动时自动启动Logstash进程。
我可以将Logstash作为服务重新启动并自动启动该过程,但似乎服务尚未读取配置文件。 当我使用-f选项启动logstash时它可以正常工作,所以,我可以说配置文件的内容没有问题。
它的手册说,如果我在/etc/logstash/conf.d/下放置* .conf文件,该服务在启动时会读取配置文件,但它永远不会像我预期的那样工作。
如何配置logstash以便在启动时读取我的配置文件?
这是我的配置文件,它已放在/etc/logstash/conf.d/01-httpdlog.conf
input {
file {
path => "/etc/httpd/logs/access_log"
start_position => beginning
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
}
output {
elasticsearch {
hosts => ["xxx.xxx.xxx.xxx:9200"]
}
file{
path => "/tmp/result.txt"
}
stdout {}
}
答案 0 :(得分:1)
非常肯定运行logstash作为服务的用户没有读取Apache日志文件的权限。
您需要chmod 755
您的Apache日志文件夹(在/etc/httpd/logs
中)然后它应该可以更好地工作。
答案 1 :(得分:1)
这也对我们有用。使用命令ll检查了文件夹的权限,发现该文件夹具有root权限。然后更改/ etc / logstash和/ usr / share / logstash文件夹的权限。使用命令; sudo chown -R logstash:logstash在/ etc文件夹中的logstash。对于我们的/ usr / share / logstash文件夹,只有一个文件没有正确的权限,因此我们使用了cmd。 sudo chown logstash:logstash更改该文件的权限。权限更新后,当我们使用sudo systemctl start logstash命令时,一切都正常启动。