Comment référencer les variables d'environnement dans le fichier de configuration de logstash?
Est-il possible de référencer des variables d'environnement dans logstash de configuration?
Dans mon cas, je veux faire mon elasticsearch adresse configurable que j'ai mis dans l'environnement.
source d'informationauteur Julio_AWS_DevRel
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser cette syntaxe pour utiliser des variables d'environnement:
Maintenant, nous allons définir la valeur de TCP_PORT:
export TCP_PORT=12345
Au démarrage, Logstash utilise la configuration suivante:
Si le TCP_PORT variable d'environnement n'est pas définie, Logstash renvoie une erreur de configuration.
Vous pouvez résoudre ce problème en donnant une valeur par défaut:
Avec logstash 2.3, vous pouvez définir la variable d'environnement références dans Logstash de configuration des plugins à l'aide de ${var} ou $var.
https://www.elastic.co/guide/en/logstash/current/environment-variables.html
Avant de logstash 2.3, vous pouvez utiliser le bouton "environnement" filtre plugin qui est de la communauté maintenu.
De la Documentation à : https://www.elastic.co/guide/en/logstash/current/plugins-filters-environment.html#plugins-filters-environment-add_field_from_env
Comment installer ce plugin:
Code Source : https://github.com/logstash-plugins/logstash-filter-environment
La partie principale est:
J'ai peine à croire, que ce sont les seules solutions de gauche: le Piratage logstash ou en utilisant une sorte de système de template pour ré-écrire le fichier de configuration.
En fait, je ne veux pas toucher ou modifier la config pour de déploiement différents scénarios: Tout ce que je veux, c'est passer dans certains paramètres pour vous connecter logstash pour le monde extérieur (par exemple lorsque elasticsearch est situé, les noms d'utilisateur/informations d'identification pour vous connecter à d'autres systèmes). J'ai googlé pour une heure maintenant tout ce que je pouvais trouver ces maladroitement compliqué de solutions très simples et communs de problème.
J'espère sincèrement, que quelqu'un arrive avec une idée comme
%{ENV[ELASTICSEARCH_HOST]}}
Qui n'est pas directement pris en charge, pas de.
Toutefois, si vous utilisez une version plus récente que 1.4.0, il serait assez trivial pour modifier
elasticsearch.rb
pour ajouter cette fonctionnalité. Autour de ligne 183:Vous pourrait l'ajuster à lire une variable d'environnement:
Si vous préférez, vous pouvez exécuter Logstash avec le
-e
option de ligne de commande pour passer de la configuration via l'entrée standard. Vous pourriezcat
dans certains fichier avec des jetons spéciaux que vous avez remplacé votre variable d'environnement(s).La logstash configuration de cette écriture est juste un fichier de configuration, mais ce n'est pas une programmation de langue. Ainsi, il a quelques raisonnable "limites", par exemple, il ne peut pas référencer des variables d'environnement, ne peut pas passer des paramètres, difficile de réutiliser autre fichier de configuration. Ces limites font l'logstash fichier de configuration difficile à maintenir lorsque le fichier de configuration se développe ou que vous souhaitez ajuster son comportement à la volée.
Mon approche est d'utiliser le moteur de modèle pour générer le logstash fichier de configuration. J'ai utilisé Jinja2 en Python.
Par exemple, l'élastique à la recherche de la production pourrait être modélisé comme
Ensuite, j'ai écrit un simple code python à l'aide de Jinja2 pour générer le logstash fichier de configuration, et la valeur de es_index_name et es_hostname peut être transmise via le script Python argument. Voir ici pour Jiaja2 tutoriel: http://kagerato.net/articles/software/libraries/jinja-quickstart.html
De cette façon, un grand logstash configuration pourrait être découpé en pièces réutilisables et son comportement peut être ajustée à la volée.
Comme expliqué dans logstash-questions
De sorte que si l'entrée ou la sortie plugin supporte nativement
%{foo}
de la syntaxe, de faire toutes les variables d'environnement d'évaluation à l'étape de filtrage d'événements est trop tard pour l'entrée et la sortie du plugin pour en profiter.