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

时间:2016-08-08 23:18:04

标签: elasticsearch logstash logstash-grok logstash-configuration

我正在尝试设置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 {}
}

2 个答案:

答案 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命令时,一切都正常启动。