【问题标题】:Reload logstash config files even the file hasn't changed即使文件没有更改,也重新加载logstash配置文件
【发布时间】:2019-04-19 14:11:22
【问题描述】:

我正在使用 logstash 将消息发送到 AWS Kinesis 流,并且输出插件需要身份验证,此身份验证将引用环境变量或来自文件。我们不必在 logstash 配置中设置用户和访问密钥,默认情况下它将引用 env 变量或文件。现在这个凭证将会改变,我必须重新加载 logstash 管道。通过热重载或自动重载,我认为 logstash 会查找配置中的任何更改,但在我的情况下,logstash 配置不会更改,环境变量或文件会更改。在这种情况下我们如何强制logstash重新加载配置文件。

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
   file {
    path => "\xx\\elk.log"
  }
}

output {
 kinesis {
    stream_name => "acars-stream"
    region => "us-east-2"
  }
}

使用的插件 - https://github.com/samcday/logstash-output-kinesis

【问题讨论】:

    标签: logstash logstash-configuration


    【解决方案1】:

    由于您提到可以使用环境变量传递凭据,因此您可以在输出插件中使用环境变量,并为 logstash 启用自动重新加载配置。大致如下:

    output {
     kinesis {
        stream_name => "acars-stream"
        region => "us-east-2"
        access_key => "${AWS_ACCESS_KEY}"
        secret_key => "${AWS_SECRET_KEY}"    
      }
    }
    

    如果这不是选项,那么您可以扩展更新凭据文件的过程,当需要更新凭据时,也可以重新加载 Logstash 配置。

    请参阅重新加载文档:https://www.elastic.co/guide/en/logstash/6.4/reloading-config.html 你会做这样的事情:

    kill -1 PID_OF_YOUR_LOGSTASH_PROCESS
    

    【讨论】:

    • 感谢您的回复,我会选择第二个选项,请告诉我如何在不停止和启动 logstash 的情况下重新加载 Logstash 配置
    • @Developer 我添加了从logstash重新加载配置文档到答案的链接,供您参考。
    • 谢谢@Furhan S。我还有另一个问题,因为管道没有改变,所以logstash 没有重新加载管道。我可以通过重新启动logstash来实现这一点。即使配置更改不可见,我们是否可以强制logstash重新加载配置,根据 Kinesis 插件它会在目录中查找凭据文件
    • @Developer 很晚才跟进,但只是想知道你是否能够解决这个问题。即使配置没有改变,当你强制重新加载配置(kill -1 $PID)时会发生什么?
    猜你喜欢
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多