geerlingguy.logstash

Rola Ansible: Logstash

CI

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.

Zainstaluj
ansible-galaxy install geerlingguy.logstash
Licencja
mit
Pobrania
247.7k
Właściciel
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns