【问题标题】:Logstash configtestLogstash 配置测试
【发布时间】:2016-12-26 20:39:23
【问题描述】:

我运行了 service logstash configtest,但给出的错误是:

logstash:无法识别的服务

我能够单独运行 logstash 服务,但不能使用“configtest”。在 etc/logstash/conf.d/ 我创建了 logstash.conf 文件,其中包含如下代码:-

附加信息:-

service logstash status
● logstash.service - logstash
   Loaded: loaded (/etc/systemd/system/logstash.service; disabled)
   Active: active (running) since Mon 2016-12-26 12:40:58 PST; 6s ago
 Main PID: 3512 (java)
   CGroup: /system.slice/logstash.service
           └─3512 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX...

Dec 26 12:40:58 Mr systemd[1]: Started logstash.

使用 configtest 运行时的服务:-

root@Mr:/# service logstash configtest
logstash: unrecognized service

我在 debian8 机器上运行这个,希望我能从你们那里得到一个好的解决方案。

# This input block will listen on port 10514 for logs to come in.
# host should be an IP on the Logstash server.
# codec => "json" indicates that we expect the lines we're receiving to be in JSON format
# type => "rsyslog" is an optional identifier to help identify messaging streams in the pipeline.

input {
  udp {
    host => "logstash_private_ip"
    port => 10514
    codec => "json"
    type => "rsyslog"
  }
}

# This is an empty filter block.  You can later add other filters here to further process
# your log lines

filter { }

# This output block will send all events of type "rsyslog" to Elasticsearch at the configured
# host and port into daily indices of the pattern, "rsyslog-YYYY.MM.DD"

output {
  if [type] == "rsyslog" {
    elasticsearch {
      hosts => [ "elasticsearch_private_ip:9200" ]
    }
  }
}

【问题讨论】:

    标签: logstash logstash-configuration


    【解决方案1】:

    旧的logstash

    /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/ 
    

    后来,它安装在 /usr/share/logstash 中,所以尝试一下

    /usr/share/logstash/bin/logstash --configtest -f <the config file/folder>
    

    或者如果运行 5.1+ 版本,请使用 --config.test_and_exit

    /usr/share/logstash/bin/logstash --config.test_and_exit -f <the config file/folder>
    

    【讨论】:

    • -bash: /usr/share/logstash: 是一个目录。我想你的意思是“/usr/share/logstash/bin/logstash”
    • logstash 版本 5 中也没有 --configtest。现在是:“ -t, --config.test_and_exit 检查配置是否有效,然后退出。”
    • 我正在使用带有管道的 logstash 6.0。如何对不同的管道进行配置测试? --config.test_and_exit -f 完全忽略 pipelines.yml 文件。
    • 嗨@cybervedaa,您是使用-f 一次还是多次,因为它忽略了设置文件夹的多个声明。此外,使用 --log.level=debug 检查调试标志 - 以获取更多详细信息。
    • 您可以通过在此解决方案@cybervedaa 中将-f ... 替换为--path.settings /etc/logstash 来测试管道
    【解决方案2】:

    我遇到了同样的问题,这对我帮助很大:

    如果您运行的是 Logstash 版本 5,则以下用于测试配置的命令会给您一个错误:

    sudo /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/
    

    测试它的正确命令是:

    sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
    

    我从 Ubuntu Server 16.04 开始运行 ELK + filebeat,结果是: 将 Logstash 的日志发送到现在通过 log4j2.properties 配置的 /var/log/logstash 配置OK

    来源: https://www.elastic.co/guide/en/logstash/current/running-logstash.html; https://github.com/elastic/logstash/issues/6161

    【讨论】:

      【解决方案3】:

      对于logstash 5.1

      /usr/share/logstash/bin/logstash --config.test_and_exit -f logstash.yml
      

      【讨论】:

        【解决方案4】:

        使用官方logstash Docker 镜像验证本地文件:

        docker run -it -v /etc/logstash:/etc/logstash logstash /usr/share/logstash/bin/logstash -t -f /etc/logstash/logstash.conf
        

        这假定您的配置文件在本地 /etc/logstash 中,然后将该文件夹安装到容器中,在同一路径下。然后二进制可以在容器内找到配置文件。

        可能有更好的方法来运行该命令,这对我有用。

        【讨论】:

        • 这对我有用,但必须为 Mac 更改它docker run -it -v $PWD:/lsconfigs logstash /usr/share/logstash/bin/logstash -t -f /lsconfigs/logstash.conf 注意:确保 logstash.config 位于您正在运行 docker 命令的根目录中
        【解决方案5】:

        您应该在 CentOS 版本 7 上执行此操作:

        /etc/rc.d/init.d/logstash configtest /etc/logstash/conf.d/test.conf
        

        【讨论】:

        • /usr/share/logstash/bin 看看这个目录,如果你是用rpm包安装的
        【解决方案6】:

        如果您想使用 docker 容器 logstash 6.x 测试您的配置

        docker run -it -v $PWD:/etc/logstash/conf.d --entrypoint "bin/logstash" logstash "--config.test_and_exit"
        

        【讨论】:

          【解决方案7】:

          在 Centos 7 上,您还可以使用以下命令:

          /usr/share/logstash/bin/logstash --path.settings /etc/logstash/
          --config.test_and_exit /etc/logstash/conf.d/logstash.conf
          

          【讨论】:

          • 这是使用 Ansible ELK 设置的 logstash 版本 6.5.1
          • ./logstash -f /etc/logstash/conf.d/fileb..conf --config.test_and_exit
          猜你喜欢
          • 1970-01-01
          • 2015-05-30
          • 1970-01-01
          • 1970-01-01
          • 2017-03-20
          • 2020-01-11
          • 2019-10-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多