Конфигурация 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