J'ai couru le service configtest de logstash mais l'erreur donnée était:
logstash: service non reconnu
J'ai pu exécuter le service logstash individuellement, mais pas avec "configtest". Dans etc/logstash/conf.d/j'ai créé le fichier logstash.conf contenant le code ci-dessous:
Information additionnelle:-
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.
Service en cours d'exécution avec configtest: -
root@Mr:/# service logstash configtest
logstash: unrecognized service
J'exécute ceci sur la machine debian8, j'espère que vous obtiendrez une bonne solution.
# 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" ]
}
}
}
pour l'ancien logstash
/opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/
Plus tard, il est devenu installé dans/usr/share/logstash, alors essayez soit
/usr/share/logstash/bin/logstash --configtest -f <the config file/folder>
Ou si vous utilisez la version 5.1+, utilisez --config.test_and_exit
/usr/share/logstash/bin/logstash --config.test_and_exit -f <the config file/folder>
J'ai eu le même problème et cela m'a beaucoup aidé:
Si vous exécutez Logstash version 5, la commande suivante pour tester la configuration vous donnera une erreur:
Sudo /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/
La bonne commande pour le tester est:
Sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
J'utilise ELK + filebeat depuis Ubuntu Server 16.04 et mon résultat était: Envoi des journaux de Logstash à/var/log/logstash, qui est maintenant configuré via log4j2.properties Configuration OK
Sources: https://www.elastic.co/guide/en/logstash/current/running-logstash.html ; https://github.com/elastic/logstash/issues/6161
Utilisation de l'image logstash
Docker officielle pour valider un fichier local:
docker run -it -v /etc/logstash:/etc/logstash logstash /usr/share/logstash/bin/logstash -t -f /etc/logstash/logstash.conf
Cela suppose que votre fichier de configuration se trouve localement dans /etc/logstash
, puis monte ce dossier dans le conteneur, sous le même chemin. Ensuite, le binaire peut trouver le fichier de configuration dans le conteneur.
Il pourrait y avoir un meilleur moyen d’exécuter cette commande, cela a fonctionné pour moi.
pour logstash 5.1 sa
/usr/share/logstash/bin/logstash --config.test_and_exit -f logstash.yml
Vous devriez le faire sur la version 7 de CentOS:
/etc/rc.d/init.d/logstash configtest /etc/logstash/conf.d/test.conf
Si vous voulez tester vos configurations avec un conteneur docker logstash 6.x
docker run -it -v $PWD:/etc/logstash/conf.d --entrypoint "bin/logstash" logstash "--config.test_and_exit"
Sur Centos 7, vous pouvez également l'utiliser.
/ usr/share/logstash/bin/logstash --path.settings /etc/logstash/ --config.test_and_exit /etc/logstash/conf.d/logstash.conf