如何设置 Logstash 以便在它作为服务自动启动时读取默认配置文件

How to setup Logstash so that default configure file is read when it start up automatically as a service

我正在尝试设置 Logstash,因为我想将 Apache 日志信息转发到 Elasticsearch。 我想在服务器启动时自动启动 Logstash 进程。

我可以拒绝 Logstash 作为服务并自动启动进程,但服务似乎没有读取配置文件。 当我使用 -f 选项启动 logstash 时它工作正常,因此,我可以说配置文件的内容没有问题。

手册说,如果我将 *.conf 文件放在 /etc/logstash/conf.d/ 下,服务会在启动时读取配置文件,但它永远不会像我预期的那样工作。

我应该如何配置 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 {}
}

很确定用户 运行 logstash 作为服务没有读取您的 Apache 日志文件的权限。

您需要 chmod 755 您的 Apache 日志文件夹(在 /etc/httpd/logs 中),然后它应该工作得更好。

这对我们也有用。使用命令ll查看文件夹的权限,看到文件夹有root权限。然后更改了 /etc/logstash 和 /usr/share/logstash 文件夹的权限。使用命令; sudo chown -R logstash:logstash logstash 在 /etc 文件夹中。对于我们的 /usr/share/logstash 文件夹,只有一个文件没有正确的权限,所以我们使用了 cmd; sudo chown logstash:logstash 更改该文件的权限。当我们在更新权限后使用 sudo systemctl start logstash 命令时,一切都正确启动。