geerlingguy.logstash
Ansible Rolle: Logstash
Eine Ansible Rolle, die Logstash auf RedHat/CentOS Debian/Ubuntu installiert.
Beachte, dass diese Rolle standardmäßig ein Syslog Grok-Muster installiert; wenn du weitere Filter hinzufügen möchtest, füge sie im Verzeichnis /etc/logstash/conf.d/
hinzu. Zum Beispiel könntest du eine Datei namens 13-myapp.conf
mit dem entsprechenden Grok-Filter erstellen und Logstash neu starten, um sie zu verwenden. Teste deinen Grok-Regex mit dem Grok Debugger.
Anforderungen
Obwohl andere Methoden möglich sind, wurde diese Rolle entwickelt, um mit Elasticsearch als Backend zur Speicherung von Protokollnachrichten zu arbeiten.
Rollenvariablen
Verfügbare Variablen sind unten aufgelistet, zusammen mit Standardwerten (siehe defaults/main.yml
):
logstash_version: '7.x'
Die Hauptversion von Logstash, die installiert werden soll.
logstash_package: logstash
Das spezifische Paket, das installiert werden soll. Du kannst eine Version des Pakets angeben, indem du den Paketnamen entsprechend deiner Plattform und deines Paketmanagers änderst.
logstash_listen_port_beats: 5044
Der Port, über den Logstash auf Beats hören wird.
logstash_elasticsearch_hosts:
- http://localhost:9200
Die Hosts, an die Logstash Protokolle an Elasticsearch senden soll.
logstash_dir: /usr/share/logstash
Das Verzeichnis, in dem Logstash installiert ist.
logstash_ssl_dir: /etc/pki/logstash
logstash_ssl_certificate_file: logstash-forwarder-example.crt
logstash_ssl_key_file: logstash-forwarder-example.key
Lokale Pfade zu den SSL-Zertifikat- und Schlüsseldateien, die in das logstash_ssl_dir
kopiert werden.
Siehe Generierung eines selbstsignierten Zertifikats für Informationen zur Erstellung und Verwendung von selbstsignierten Zertifikaten mit Logstash und Filebeat.
logstash_local_syslog_path: /var/log/syslog
logstash_monitor_local_syslog: true
Ob die Konfiguration für die lokale Syslog-Datei (definiert als logstash_local_syslog_path
) zu Logstash hinzugefügt werden soll. Setze dies auf false
, wenn du das lokale Syslog anders überwachst oder wenn dir die lokale Syslog-Datei egal ist. Weitere lokale Protokolle können durch deine eigenen Konfigurationsdateien in /etc/logstash/conf.d
hinzugefügt werden.
logstash_enabled_on_boot: true
Setze dies auf false
, wenn du nicht möchtest, dass Logstash beim Systemstart ausgeführt wird.
logstash_install_plugins:
- logstash-input-beats
- logstash-filter-multiline
Eine Liste von Logstash-Plugins, die installiert werden sollen.
logstash_setup_default_config: true
Setze dies auf false
, wenn du die standardmäßig mit dieser Rolle gelieferten Konfigurationsdateien (im Verzeichnis files/filters
) nicht hinzufügen möchtest. Du kannst deine eigenen Konfigurationsdateien im Verzeichnis /etc/logstash/conf.d
hinzufügen.
Generierung eines selbstsignierten Zertifikats
Für höchste Sicherheit solltest du dein eigenes gültiges Zertifikat und Schlüssel verwenden und die Variablen logstash_ssl_*
in deinem Playbook anpassen, um dein Zertifikat zu verwenden.
Um ein selbstsigniertes Zertifikat/Schlüsselpaar zu erstellen, kannst du den Befehl verwenden:
$ openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout logstash.key -out logstash.crt -subj '/CN=example.com'
Beachte, dass Filebeat und Logstash möglicherweise nicht korrekt mit selbstsignierten Zertifikaten funktionieren, es sei denn, du hast auch die gesamte Vertrauenskette (einschließlich der Zertifizierungsstelle für dein selbstsigniertes Zertifikat) auf deinem Server hinzugefügt. Siehe: https://github.com/elastic/logstash/issues/4926#issuecomment-203936891
Neuere Versionen von Filebeat und Logstash benötigen außerdem einen im pkcs8-Format formatierten privaten Schlüssel, der z.B. durch Konvertierung des zuvor erstellten Schlüssels generiert werden kann:
openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.p8
Weitere Hinweise
Wenn du eine hohe CPU-Auslastung von einem der logstash
-Prozesse siehst und Logstash zusammen mit einer anderen Anwendung auf Port 80 auf einer Plattform wie Ubuntu mit Upstart verwendest, kann der Prozess logstash-web
in einer Schleife stecken bleiben, während er versucht, auf Port 80 zu starten, scheitert und es erneut versucht, weil das restart
-Flag in /etc/init/logstash-web.conf
vorhanden ist. Um dieses Problem zu vermeiden, ändere diese Zeile, um eine limit
-Einstellung zur Wiederherstellung hinzugefügt, oder setze den Dienst logstash-web
in deinem Playbook auf enabled=no
, z.B.:
- name: Sicherstellen, dass der logstash-web-Prozess gestoppt und deaktiviert ist.
service: name=logstash-web state=stopped enabled=no
Beispiel-Playbook
- hosts: search
pre_tasks:
- name: Java 8 auf Debian/Ubuntu verwenden.
set_fact:
java_packages:
- openjdk-8-jdk
when: ansible_os_family == 'Debian'
roles:
- geerlingguy.java
- geerlingguy.elasticsearch
- geerlingguy.logstash
Lizenz
MIT / BSD
Autoreninformationen
Diese Rolle wurde 2014 von Jeff Geerling erstellt, dem Autor von Ansible for DevOps.
ansible-galaxy install geerlingguy.logstash