Конфигурация Logstash

Я запустил конфигурационный файл службы logstash, но указанная ошибка:

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: -

[email protected]:/# 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" ]
    }
  }
}

Ответ 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>

Ответ 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

Я использую ELK + filebeat начиная с Ubuntu Server 16.04, и мой результат был следующим: Отправка журналов Logstash в /var/log/logstash, который теперь настроен через log4j2.properties Конфигурация OK

Источники: https://www.elastic.co/guide/en/logstash/current/running-logstash.html; https://github.com/elastic/logstash/issues/6161

Ответ 3

Использование официального изображения logstash Docker для проверки локального файла:

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

Предполагается, что ваш файл конфигурации локально находится в /etc/logstash, затем монтирует эту папку в контейнер под одним и тем же путем. Затем двоичный файл может найти файл конфигурации внутри контейнера.

Может быть, лучший способ запустить эту команду, это сработало для меня.

Ответ 4

для logstash 5.1 его

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

Ответ 5

Вы должны сделать это на CentOS версии 7:

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

Ответ 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