geerlingguy.logstash
Rola Ansible: Logstash
Rola Ansible, która instaluje Logstash na systemach RedHat/CentOS Debian/Ubuntu.
Należy pamiętać, że ta rola domyślnie instaluje wzór grok dla sysloga; jeśli chcesz dodać więcej filtrów, dodaj je do katalogu /etc/logstash/conf.d/
. Na przykład możesz stworzyć plik o nazwie 13-myapp.conf
z odpowiednim filtrem grok i zrestartować logstash, aby zaczął go używać. Przetestuj swoje wyrażenie grok za pomocą Grok Debugger.
Wymagania
Chociaż inne metody są możliwe, ta rola jest zaprojektowana do pracy z Elasticsearch jako zapleczem do przechowywania komunikatów logów.
Zmienne roli
Dostępne zmienne zostały wymienione poniżej, wraz z wartościami domyślnymi (zobacz defaults/main.yml
):
logstash_version: '7.x'
Główna wersja Logstash do zainstalowania.
logstash_package: logstash
Specyficzny pakiet do zainstalowania. Możesz określić wersję pakietu, zmieniając nazwę pakietu zgodnie z poprawną składnią dla swojej platformy i menedżera pakietów.
logstash_listen_port_beats: 5044
Port, na którym Logstash będzie nasłuchiwał na bezwładne połączenia.
logstash_elasticsearch_hosts:
- http://localhost:9200
Hosty, do których Logstash powinien wysyłać logi do Elasticsearch.
logstash_dir: /usr/share/logstash
Katalog, w którym jest zainstalowany Logstash.
logstash_ssl_dir: /etc/pki/logstash
logstash_ssl_certificate_file: logstash-forwarder-example.crt
logstash_ssl_key_file: logstash-forwarder-example.key
Ścieżki lokalne do plików certyfikatu SSL i klucza, które zostaną skopiowane do logstash_ssl_dir
.
Zobacz Generowanie certyfikatu własnoręcznego, aby uzyskać informacje na temat generowania i używania certyfikatów własnoręcznych z Logstash i Filebeat.
logstash_local_syslog_path: /var/log/syslog
logstash_monitor_local_syslog: true
Czy konfiguracja lokalnego pliku syslog (zdefiniowana jako logstash_local_syslog_path
) powinna być dodana do logstash. Ustaw to na false
, jeśli monitorujesz lokalny syslog w inny sposób lub jeśli lokalny plik syslog nie jest dla Ciebie istotny. Inne lokalne logi można dodać za pomocą własnych plików konfiguracyjnych umieszczonych w /etc/logstash/conf.d
.
logstash_enabled_on_boot: true
Ustaw to na false
, jeśli nie chcesz, aby logstash uruchamiał się przy starcie systemu.
logstash_install_plugins:
- logstash-input-beats
- logstash-filter-multiline
Lista pluginów Logstash, które powinny zostać zainstalowane.
logstash_setup_default_config: true
Ustaw to na false
, jeśli nie chcesz dodać domyślnych plików konfiguracyjnych dostarczanych z tą rolą (w katalogu files/filters
). Możesz dodać własne pliki konfiguracyjne do /etc/logstash/conf.d
.
Generowanie certyfikatu własnoręcznego
Dla maksymalnego bezpieczeństwa powinieneś używać swojego własnego ważnego certyfikatu i pliku klucza oraz zaktualizować zmienne logstash_ssl_*
w swoim playbooku, aby używać swojego certyfikatu.
Aby wygenerować parę certyfikatów/własnoręcznego klucza, możesz użyć komendy:
$ openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout logstash.key -out logstash.crt -subj '/CN=example.com'
Należy zauważyć, że Filebeat i Logstash mogą nie działać poprawnie z certyfikatami własnoręcznymi, chyba że masz również pełny łańcuch zaufania (w tym Wydawcę Certyfikatów dla Twojego własnoręcznego certyfikatu) dodany na swoim serwerze. Zobacz: https://github.com/elastic/logstash/issues/4926#issuecomment-203936891
Nowsze wersje Filebeat i Logstash wymagają również klucza prywatnego w formacie pkcs8, który można wygenerować, konwertując wcześniej wygenerowany klucz, np.:
openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.p8
Inne uwagi
Jeśli zauważysz duże zużycie CPU przez jeden z procesów logstash
, a używasz Logstash razem z inną aplikacją działającą na porcie 80 na platformie takiej jak Ubuntu z upstart, proces logstash-web
może utknąć w pętli próbując uruchomić się na porcie 80, nie udaje mu się to i próbuje ponownie, z powodu flagi restart
w pliku /etc/init/logstash-web.conf
. Aby uniknąć tego problemu, zmień tę linię, aby dodać limit
do instrukcji respawn lub ustaw usługę logstash-web
na enabled=no
w swoim playbooku, np.:
- name: Upewnij się, że proces logstash-web jest zatrzymany i wyłączony.
service: name=logstash-web state=stopped enabled=no
Przykładowy Playbook
- hosts: search
pre_tasks:
- name: Użyj Javy 8 na Debianie/Ubuntu.
set_fact:
java_packages:
- openjdk-8-jdk
when: ansible_os_family == 'Debian'
roles:
- geerlingguy.java
- geerlingguy.elasticsearch
- geerlingguy.logstash
Licencja
MIT / BSD
Informacje o autorze
Ta rola została stworzona w 2014 roku przez Jeff Geerling, autora Ansible for DevOps.
ansible-galaxy install geerlingguy.logstash