freedomofpress.elk
Rola Ansible dla ELK
Instaluje stak ELK (Elasticsearch, Logstash i Kibana) do agregacji i monitorowania logów. Przeznaczona do integracji z Riemann w celu funkcjonalności powiadamiania.
Wymagania
- Rola freedomofpress.generate-ssl-cert
- 2GB pamięci RAM dla serwera logów
- Klienci logów do przesyłania logów
Zmienne roli
elk_kibana_user: "kibana"
elk_kibana_logfile: "/var/log/kibana.log"
# Umożliwia wyłączenie funkcjonalności snapshot. Nie jest dobrze
# przetestowana, więc domyślnie ustawiona na false. Jeśli ustawiona na true przy pierwszym
# uruchomieniu, należy dodać `meta: flush_handlers` przed uruchomieniem, aby upewnić się
# że zmienna `path.repo:` jest rozpoznawana przez działający serwis elasticsearch.
elk_elasticsearch_snapshot: false
elk_elasticsearch_snapshot_directory: /var/lib/elasticsearch/backups
elk_elasticsearch_snapshot_repository: es_backup
elk_elasticsearch_snapshot_initialization:
type: fs
settings:
location: "{{ elk_elasticsearch_snapshot_directory }}"
compress: yes
_hack: null
# Byłoby dobrze użyć iso8601 zamiast epoki, ale API ElasticSearch
# zgłasza błąd invalid_snapshot_name z formatem iso8601.
elk_elasticsearch_snapshot_name: "snapshot-{{ ansible_date_time.epoch }}"
# Limity do ustawienia w /etc/security/limits.conf. Upewnij się, że skopiujesz
# całą listę, jeśli nadpisujesz jakikolwiek z elementów.
elk_elasticsearch_pam_limits:
- domain: elasticsearch
limit_item: memlock
limit_type: hard
value: unlimited
- domain: elasticsearch
limit_item: memlock
limit_type: soft
value: unlimited
- domain: elasticsearch
limit_item: nofile
limit_type: soft
value: 65535
- domain: elasticsearch
limit_item: nofile
limit_type: hard
value: 65535
# Wtyczka Riemann do powiadamiania, filtr de-dot dla zgodności z ElasticSearch v2.
# Zobacz: https://www.elastic.co/blog/introducing-the-de_dot-filter
elk_logstash_plugins:
- logstash-output-riemann
- logstash-filter-de_dot
# Interfejs używany do ograniczeń zapory i wyszukiwań IPv4
elk_network_interface: eth0
elk_cluster_name: elk-logging
# SSL jest domyślnie wyłączony. Ustaw te zmienne na pełne ścieżki do certyfikatów SSL,
# które chcesz użyć, a Nginx wymusi połączenia HTTPS.
# Musisz umieścić certyfikaty SSL w osobnym odtwarzaniu.
elk_nginx_ssl_certificate: ""
elk_nginx_ssl_certificate_key: ""
elk_nginx_server_name: localhost
# Niebezpieczne w użyciu produkcyjnym! Nadpisz, aby zabezpieczyć loginy.
elk_kibana_username: kibana
elk_kibana_password: kibana
# Nadpisz, aby zmienić stronę powitalną, np. na niestandardowy pulpit:
# "dashboard/Twoja-Nazwa-Pulpitu". Musisz zamienić spacje w
# nazwach pulpitów na myślniki, ponieważ Kibana tego oczekuje.
elk_kibana_default_app: discover
# Włącz automatyczną konfigurację białej listy IP dla "logclients".
# Używa ufw. Wyłącz, jeśli używasz innej roli do konfiguracji zapory.
elk_configure_firewall: true
# Pozwól na korzystanie z konfiguracji serwera internetowego w dalszych odtwarzaniach
# Ustaw to na false, aby pominąć wdrożenie nginx w tej roli.
elk_configure_nginx: true
# Pozwól na nadpisanie wzorców i listy filtrów dla dalszych odtwarzaniach
elk_logstash_patterns:
- logstash-patterns/*
elk_logstash_filters:
- logstash-configs/*
# Deklaruj glob plików baz danych GeoIP do skopiowania. Domyślnie wyłączone.
elk_logstash_geoipdbs: []
Użytkowanie
Użyj roli w pliku odtwarzania w ten sposób:
- hosts: logserver
roles:
- role: elk
elk_kibana_username: admin
elk_kibana_password: WowWhatAStrongPassword4
Dodawanie wizualizacji
Rola jeszcze nie tworzy wizualizacji Kibana automatycznie. Możesz jednak
zaimportować zapisane wizualizacje, które są dostarczane z rolą w files/kibana-dashboards.json
.
Przejdź do Ustawienia -> Obiekty -> Importuj w interfejsie użytkownika Kibana i przeglądaj plik JSON.
Uruchamianie testów
Ta rola używa Molecule i ServerSpec do testowania. Aby jej użyć:
pip install molecule
gem install serverspec
molecule test
Możesz również uruchomić wybrane komendy:
molecule idempotence
molecule verify
Zobacz dokumentację Molecule po więcej informacji.
Dalsza lektura
Konfiguracja
- Oficjalna dokumentacja Elasticsearch
- Konfiguracja ELK UCLA
- Przewodnik DigitalOcean na temat instalacji ELK
Tworzenie niestandardowych filtrów
Zobacz katalog examples/writing-filters w tym repozytorium dla wstępnie skonfigurowanego środowiska developerskiego. Skopiuj ten katalog na serwer z zainstalowanym logstash lub użyj VM testowego Vagrant.
Utrzymanie
Licencja
MIT
Stands up ELK stack for log aggregation.
ansible-galaxy install freedomofpress.elk