logstash 问题集锦 自动重新加载配置


 

输入内容中最好不要出现 "type":"...",key为type的json。它会覆盖配置文件中的type。导致type不相等,不执行output es操作。

 

比如json:{"type":"123"}

logstash配置文件为:

input {
  kafka {
    bootstrap_servers => "111.111.1.1:9092"
    topics => ["test"]
    group_id => "test_group_main"
    client_id => "test_kafka_client_25"
    type => "test_logstash_25"
  }
}

filter {
  if [type] == "test_logstash_25" {
     json {
      source => "message"
      remove_field => ["message"]
    }
  }
}

output {

  if [type] == "test_logstash_25" { #这里的type值变成了123,取自json。导致不存es库。
    elasticsearch {
      hosts=> ["111.111.11.111:9200"]
      index=> "my_test-%{+YYYY.MM.dd}"
      codec => json
    }
  }
}

 

 


 

自动重新加载配置

为了可以自动检测配置文件的变动和自动重新加载配置文件,需要在启动的时候使用以下命令:

./bin/lagstash -f configfile.conf --config.reload.automatic
1
默认,检测配置文件的间隔时间是3秒,可以通过以下命令改变

--config.reload.interval <second>
1
如果已经运行了没有提供自动重启的logstash,可以发送一个挂起命令给logstash重新加载配置文件:

kill -1 <pid>
1
配置文件自动重载工作原理

检测到配置文件变化
通过停止所有输入停止当前pipline
用新的配置创建一个新的管道
检查配置文件语法是否正确
检查所有的输入和输出是否可以初始化
检查成功使用新的pipeline替换当前的pipeline,
检查失败,使用旧的继续工作.
在重载过程中,jvm没有重启.

注意事项

stdin输入插件不支持自动重启.
syslog作为输入源,当重载配置文件时,会崩溃.请看: https://github.com/logstash-plugins/logstash-input-syslog/issues/40
---------------------
作者:落叶下的光
来源:CSDN
原文:https://blog.csdn.net/qq_32292967/article/details/78622647
版权声明:本文为博主原创文章,转载请附上博文链接!

 

启动时加载目录下所有配置文件:配置文件必须要以 config 为后缀。 yml在指定单个可以执行,批量就不认了!!!

bin/logstash -f ./config/ (bin/logstash -f ./config/*还是启动第一个)

 需要用pipeline.xml

 


 验证正确性:

bin/logstash -f first-pipeline.conf --config.test_and_exit

bin/logstash -f first-pipeline.conf --config.reload.automatic  自动加载

./bin/logstash  --path.settings ./bak.config/ 自己设定config目录
posted @ 2019-04-25 14:09  Bigben  阅读(1825)  评论(0编辑  收藏  举报