freedomofpress.elk

ELK Ansible-Rolle

Installiert den ELK-Stack (Elasticsearch, Logstash und Kibana) für die Protokollaggregation und Überwachung. Ist für die Integration mit Riemann zur Alarmierungsfunktion gedacht.

Anforderungen

Rollenvariablen

elk_kibana_user: "kibana"
elk_kibana_logfile: "/var/log/kibana.log"

# Gibt die Möglichkeit, die Snapshot-Funktionalität zu deaktivieren. Sie ist nicht gut getestet,
# daher bleibt false als Standardwert. Wenn auf true gesetzt, sollte wahrscheinlich 
# `meta: flush_handlers` vor dem Ausführen hinzugefügt werden, um sicherzustellen,
# dass die Variable `path.repo:` vom aktiven Elasticsearch-Dienst erkannt wird.
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: ja
  _hack: null

# Es wäre schön, ISO8601 anstelle von Epoch zu verwenden, aber die ElasticSearch API
# wirft einen Fehler ungültiger Snapshot-Namen mit dem ISO8601-Format.
elk_elasticsearch_snapshot_name: "snapshot-{{ ansible_date_time.epoch }}"

# Grenzen, die in /etc/security/limits.conf gesetzt werden. Stelle sicher, dass die gesamte
# Liste kopiert wird, wenn einzelne Elemente überschrieben werden.
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

# Riemann-Plugin für Alarmierungen, de-dot Filter zur Kompatibilität mit ElasticSearch v2.
# Siehe: https://www.elastic.co/blog/introducing-the-de_dot-filter
elk_logstash_plugins:
  - logstash-output-riemann
  - logstash-filter-de_dot

# Schnittstelle die für Firewall-Einschränkungen und IPv4-Suchen verwendet wird
elk_network_interface: eth0

elk_cluster_name: elk-logging

# SSL ist standardmäßig deaktiviert. Setze diese Variablen auf die vollständigen Pfade zu den SSL
# Zertifikaten, die du verwenden möchtest, und Nginx wird HTTPS-Verbindungen erzwingen.
# Du musst die SSL-Zertifikate dort in einem separaten Play ablegen.
elk_nginx_ssl_certificate: ""
elk_nginx_ssl_certificate_key: ""
elk_nginx_server_name: localhost

# Nicht sicher für die Produktion! Überschreibe um Anmeldungen abzusichern.
elk_kibana_username: kibana
elk_kibana_password: kibana

# Überschreibe, um die Startseite zu ändern, z.B. ein benutzerdefiniertes Dashboard:
# "dashboard/Dein-Dashboard-Name". Du musst Leerzeichen in 
# Dashboard-Namen durch Bindestriche ersetzen, da Kibana das erwartet.
elk_kibana_default_app: discover

# Aktiviere die automatische Konfiguration der IP-Whitelist für "Log-Clients".
# Verwendet ufw. Deaktiviere, wenn du eine andere Rolle für die Firewall-Konfiguration verwendest.
elk_configure_firewall: true

# Erlaube nachgelagerten Playbooks, benutzerdefinierte Webserver-Konfigurationen zu nutzen
# Setze dies auf false, um den Rollout von Nginx dieser Rolle zu überspringen
elk_configure_nginx: true

# Erlaube nachgelagerten Playbooks, Muster und Filter-Dateilisten zu überschreiben
elk_logstash_patterns:
  - logstash-patterns/*
elk_logstash_filters:
  - logstash-configs/*

# Deklariere die Datei mit GeoIP-Datenbanken, die kopiert werden sollen. Standardmäßig deaktiviert.
elk_logstash_geoipdbs: []

Verwendung

Verwende die Rolle in einem Playbook wie folgt:

- hosts: logserver
  roles:
    - role: elk
      elk_kibana_username: admin
      elk_kibana_password: WowWhatAStrongPassword4

Hinzufügen von Visualisierungen

Die Rolle erstellt noch keine Kibana-Visualisierungen automatisch. Du kannst jedoch gespeicherte Visualisierungen, die mit der Rolle in files/kibana-dashboards.json geliefert werden, importieren. Gehe zu Einstellungen -> Objekte -> Importieren in der Kibana-Benutzeroberfläche und suche nach der JSON-Datei.

Tests ausführen

Diese Rolle verwendet Molecule und ServerSpec für das Testen. Um sie zu verwenden:

pip install molecule
gem install serverspec
molecule test

Du kannst auch selektive Befehle ausführen:

molecule idempotence
molecule verify

Siehe die Molecule-Dokumentation für weitere Informationen.

Weiterführende Informationen

Einrichtung

Entwicklung benutzerdefinierter Filter

Siehe das Verzeichnis examples/writing-filters in diesem Repository für eine vorkonfigurierte Entwicklungsumgebung. Kopiere das Verzeichnis auf einen Server mit installiertem Logstash oder verwende eine Vagrant-Test-VM.

Wartung

Lizenz

MIT

Über das Projekt

Stands up ELK stack for log aggregation.

Installieren
ansible-galaxy install freedomofpress.elk
Lizenz
Unknown
Downloads
152
Besitzer
Defending and supporting cutting-edge transparency journalism in the face of adversity.