GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So zentralisieren Sie die Protokollverwaltung mit Graylog mit Docker

Suchen Sie ein System, das Ihre Protokolldateien interpretieren, in einer sicheren Umgebung speichern und gut organisierte Daten zur Analyse sammeln kann? Nun, die Zentralisierung der Protokollverwaltung mit Graylog mit Docker könnte genau das sein, wonach Sie suchen!

In diesem Tutorial erfahren Sie, wie Sie mit Graylog und Docker ein zentralisiertes Protokollsystem zum Sammeln von Syslog-Daten von Ihrem Ubuntu-Computer erstellen.

Lesen Sie weiter und beginnen Sie mit der Zentralisierung Ihrer Protokollverwaltung!

Voraussetzungen

Dieser Beitrag wird eine Schritt-für-Schritt-Anleitung sein. Um mitzumachen, stellen Sie sicher, dass Sie Folgendes haben:

  • Zwei Ubuntu-Maschinen (ein Host und ein Client) – Dieses Tutorial verwendet Ubuntu 20.04, aber andere Linux-Distributionen funktionieren.
  • Rsyslog auf dem Client-Rechner.
  • Docker auf dem Hostcomputer installiert. Die für dieses Tutorial verwendete Docker-Version ist 20.10.7
  • Docker-compose auf dem Hostcomputer installiert.
  • Das Dienstprogramm Pwgen muss auf dem Hostcomputer installiert werden, um ein zufälliges geheimes Passwort zu generieren.

Bereitstellen von Graylog mit Docker Compose

Was ist überhaupt Graylog? Graylog ist eine Open-Source-Protokollverwaltungsplattform. Graylog kann strukturierte und unstrukturierte Daten aus Quellen sammeln, indizieren und analysieren. Eine dieser Quellen sind Betriebssysteme in Echtzeit.

Bevor Sie Graylog bereitstellen, müssen Sie zunächst Graylog mit Docker Compose auf Ihrem Hostcomputer installieren.

Angenommen Sie verwenden einen Cloud-basierten Ubuntu 20.04-Computer. In diesem Fall müssen Sie Ihre Sicherheitsgruppe oder Firewall-Regeln ändern, um die folgenden Ports zuzulassen:1514 und 12201 für TCP- und UDP-Verbindungen und 9000 nur für TCP-Verbindungen.

1. Öffnen Sie Ihren bevorzugten SSH-Client und stellen Sie eine Verbindung zu Ihrem Computer her.

2. Führen Sie als Nächstes die folgenden Befehle aus, um ein neues Verzeichnis in Ihrem Home-Verzeichnis zu erstellen und zu diesem Verzeichnis zu wechseln. Sie können das Verzeichnis nach Belieben benennen. Aber für diese Demo heißt das Verzeichnis ~/graylog.

mkdir graylog
cd graylog

3. Erstellen Sie eine YAML-Datei namens docker-compose.yml in Ihrem ~/graylog Verzeichnis, und füllen Sie dann die Datei mit der folgenden Konfiguration aus. Speichern Sie die Änderungen jedoch noch nicht. Um das Graylog-Login zu schützen und den Zugriff auf Ihre Daten einzuschränken, müssen Sie ein geheimes Passwort generieren.

In der neu erstellten Datei finden Sie die Konfiguration zum Einrichten von Graylog-, MongoDB- und ElasticSearch-Komponenten. Graylog erfordert, dass all diese Komponenten gleichzeitig eingerichtet und ausgeführt werden, damit Graylog effektiv funktioniert.

version: '2'
services:
  # MongoDB: https://hub.docker.com/_/mongo/
  MongoDB: # Mongodb service
    image: mongo:4.2 # Version of Mongodb docker image 
    volumes:
      - mongo_data:/data/db # Persisted mongodb data
  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
  elasticsearch: # ElasticSearch service
		
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 # Version of elasticsearch image
    volumes:
      - es_data:/usr/share/elasticsearch/data # Persisted elasticsearch data 
    environment:
      - http.host=0.0.0.0
      - transport.host=localhost
      - network.host=0.0.0.0
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      # Unlimited amount of memory set for elasticsearch container
      memlock:
        soft: -1
        hard: -1
		# Resource limit for elasticsearch set to 1 gigabyte
    mem_limit: 1g
  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    image: graylog/graylog:4.2 # Version of Graylog docker image
    volumes:
      - graylog_data:/usr/share/graylog/data # Persisted Graylog data
    environment:
      # CHANGE ME (must be at least 16 characters)!
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      # Password: admin
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
      - GRAYLOG_WEB_ENDPOINT_URI=http://127.0.0.1:9000/api
		# Command to run as soon as components are started
    entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
		# Containers that Graylog depends on 
    links:
      - mongodb:mongo
      - elasticsearch
    restart: always # Graylog container set to always restart when stopped
    depends_on:
      - mongodb
      - elasticsearch
    ports:
      # Graylog web interface and REST API
      - 9000:9000
      # Syslog TCP
      - 1514:1514
      # Syslog UDP
      - 1514:1514/udp
      # GELF TCP
      - 12201:12201
      # GELF UDP
      - 12201:12201/udp
# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/
volumes:
  mongo_data:
    driver: local
  es_data:
    driver: local
  graylog_data:
    driver: local

4. Führen Sie nun pwgen aus Befehl unten, um ein einzelnes zufälliges Passwort zu generieren (-N ) mit 96 (-s 96 ) Figuren.

pwgen -N 1 -s 96

5. Ihr generiertes geheimes Passwort sieht ähnlich aus wie das untenstehende. Notieren Sie sich Ihr geheimes Passwort, da Sie es in der docker-compose.yml festlegen Datei (Schritt sechs).

6. Gehen Sie zurück zur docker-compose.yml Datei und ersetzen Sie somepasswordpepper in GRAYLOG_PASSWORD_SECRET mit Ihrem neu generierten geheimen Passwort (Schritt fünf). Sie verwenden dieses Passwort für die Passwortverschlüsselung und das Salting. Ohne dieses geheime Passwort startet der Graylog-Container nicht.

7. Führen Sie den folgenden Befehl aus, um einen SHA2-Hash eines Passworts Ihrer Wahl zu generieren. Dieses Passwort wird für die erstmalige Anmeldung bei Graylog benötigt.

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

Geben Sie ein Admin-Passwort Ihrer Wahl ein, wenn Sie dazu aufgefordert werden, wie unten gezeigt, und drücken Sie die EINGABETASTE. Sobald Sie ein Passwort eingegeben haben, wird Ihr gehashtes Passwort generiert.

Notieren Sie sich Ihr gehashtes Passwort, da Sie es in docker-compose.yml festlegen Datei (Schritt acht).

8. Ersetzen Sie den Wert von GRAYLOG_ROOT_PASSWORD_SHA2 Umgebungsvariable in docker-compose.yml Datei mit dem zuvor generierten SHA2-Hash-Passwort (Schritt sieben). Speichern Sie die Änderungen in der docker-compose.yml Datei und beenden Sie den Editor.

9. Führen Sie abschließend docker-compose up aus Befehl unten, um ElasticSearch-, MongoDB- und Graylog-Docker-Container im getrennten Modus bereitzustellen (-d ). Dieser Befehl zieht sie aus dem Docker-Hub und startet sie als Container, damit Graylog ordnungsgemäß funktioniert.

# Starting up MongoDB, ElasticSearch, and Graylog containers in detached mode
sudo docker-compose up -d

Das folgende Bild zeigt, dass die Docker-Images von MongoDB, ElasticSearch und Graylog aus dem Docker-Hub gezogen und als Container gestartet wurden.

Ändern des Index-Shards-Werts für ElasticSearch

Sie haben gerade Graylog bereitgestellt, und das ist ein großer Schritt nach vorne bei der Zentralisierung der Protokollverwaltung. Aber jetzt ist es an der Zeit, Graylog zu konfigurieren. Sie ändern den Wert der ElasticSearch-Shards je nachdem, wie viele ElasticSearch-Knoten/Container Sie ausführen.

Ein Shard ist eine Einheit, bei der Elasticsearch Daten auf mehrere Knoten verteilt. Die optimale Anzahl von Shards pro Knoten ist eins.

1. Öffnen Sie Ihren bevorzugten Webbrowser und navigieren Sie zu https://:9000 , wobei HOST_IP ist die IP-Adresse Ihres Host-Rechners. Wenn alles gut geht, gelangen Sie zum unten gezeigten Anmeldebildschirm von Graylog.

Geben Sie admin ein als Benutzernamen und geben Sie das Admin-Passwort ein, das Sie im Abschnitt „Bereitstellen von Graylog mit Docker Compose“ (Schritt 7) erstellt haben. Für dieses Tutorial lautet das Passwort adamtheautomator.

Nachdem Sie sich angemeldet haben, sehen Sie die Seite „Erste Schritte“ von Graylog, wie unten gezeigt.

2. Klicken Sie anschließend auf System Menü —> Indizes , wie unten gezeigt, um auf Indizes &Index zuzugreifen Seite (Schritt drei), auf der Sie den Standardindexsatz bearbeiten können.

3. Klicken Sie auf Bearbeiten um den Standard-Indexsatz von Graylog zu verwalten und den ElasticSearch-Shard-Wert zu ändern. Der Standardwert für ElasticSearch-Shards ist vier, und Sie müssen das ändern (Schritt vier).

4. Ändern Sie schließlich die Anzahl der ElasticSearch-Shards auf eins (1 ), da Sie nur einen einzigen ElasticSearch-Knoten/Container ausführen, und klicken Sie auf Speichern am Ende der Seite.

Einrichten von Graylog zum Sammeln von Protokollen von Syslog

Sie haben gerade Graylog konfiguriert, indem Sie den Wert für Index-Shards für ElasticSearch geändert haben. Aber Sie müssen auch Graylog einrichten, um Protokolldaten von Syslog auf dem Client-Computer zu sammeln. Wie? Sie richten Graylog-Eingaben ein, um Protokolldaten zu empfangen, die von Ihrem Client-Computer über Syslog gesendet werden, um sie auf dem Host-Computer zu analysieren.

Mit Syslog als standardmäßiges netzwerkbasiertes Protokollierungsprotokoll können Sie die Ereignismeldungen Ihres Client-Rechners oder Protokolldaten an Graylog übertragen.

1. Klicken Sie auf System Menü —> Eingänge um auf die Eingänge zuzugreifen Seite, auf der Sie eine Syslog-UDP-Eingabe einrichten.

2. Suchen Sie nach Syslog UDP und wählen Sie es aus im Suchfeld, wie unten gezeigt, und klicken Sie dann auf Neue Eingabe starten .

3. Zuletzt konfigurieren Sie die neue Syslog UDP-Eingabe mit den folgenden und klicken Sie auf Speichern unten im Pop-up-Fenster, um die Änderungen beizubehalten und anzuwenden:

  • Wählen Sie Ihren Knoten aus dem Knoten aus Dropdown-Feld.
  • Legen Sie den Titel fest zu jedem Wort, das Sie wünschen. Der Titel dieser Demo lautet syslog .
  • Stellen Sie die Bind-Adresse ein zu 0.0.0.0, so kann Graylog eingehende Ereignisse überall abhören.
  • Stellen Sie den Port ein an den Syslog-UDP-Port 1514 wie in docker-compose.yml definiert Datei unter Syslog UDP .

Unten sehen Sie, dass die Syslog-UDP-Eingabe als Teil von Lokale Eingaben ausgeführt wird nach Konfiguration.

Konfigurieren von Rsyslog zum Senden von Syslog-Daten an Graylog

Sie haben einen Syslog-UDP-Eingang eingerichtet, um Daten zu empfangen, die von Ihrem Client-Computer gesendet werden, aber wie senden Sie die Daten an Graylog? Rsyslog wird es tun!

Sie erstellen eine Konfigurationsdatei für Rsyslog, um Ihre Syslog-Daten von Ihrem Client-Rechner zu Graylog zu übertragen, das auf Ihrem Host-Rechner ausgeführt wird.

1. Erstellen Sie eine Konfigurationsdatei in /etc/rsyslog.d Verzeichnis auf Ihrem Client-Rechner. Sie können die Datei nach Belieben benennen, aber für diese Demo heißt die Datei 90-graylog.conf.

2. Fügen Sie als Nächstes die folgende Zeile zur 90-graylog.conf hinzu Datei, speichern Sie die Änderungen und schließen Sie den Editor. Ersetzen Sie 34.76.103.44 mit der IP-Adresse Ihres Host-Rechners, auf dem Graylog läuft.

Die folgende Konfiguration sendet Syslog-Daten (RSYSLOG_SyslogProtocol23Format ) vom Hostcomputer (@34.76.103.44 ) zu Graylog.

*.* @34.76.103.44:1514;RSYSLOG_SyslogProtocol23Format

3. Führen Sie den folgenden Befehl aus, um rsyslog neu zu starten damit die Änderungen wirksam werden.

sudo systemctl restart rsyslog

4. Wechseln Sie zurück zur Graylog-Weboberfläche und klicken Sie auf Suchen Menü, um zu sehen, wie Ihre gesammelten Syslog-Daten ordentlich analysiert werden, ähnlich wie unten.

Schlussfolgerung

In diesem Tutorial haben Sie gelernt, wie Sie mit Graylog mithilfe von Docker Ihr eigenes zentralisiertes Protokollverwaltungssystem erstellen und erfolgreich gesammelte Syslog-Daten von Ihrem Client-Computer verifiziert haben.

An diesem Punkt haben Sie erkannt, dass das Sammeln und Speichern gut organisierter Daten in einer sicheren Umgebung zur Analyse kein Problem mehr sein wird.

Welche anderen Protokolle können Sie mit Graylog sammeln? Vielleicht einen Webhost einrichten, um NGINX-Protokolle zur weiteren Analyse und Analyse an Graylog zu senden?


Docker
  1. Richten Sie Nextcloud mit Redis mit Docker ein

  2. So installieren Sie Docker mit Ansible [Debian/Ubuntu]

  3. So installieren Sie Jenkins mit Docker

  4. So installieren Sie WordPress mit Docker

  5. So stellen Sie Microservices mit Docker bereit

So richten Sie MySQL mit Docker unter Linux ein

So ersetzen Sie Docker durch Podman auf einem Mac, überarbeitet

So ersetzen Sie Docker durch Podman auf einem Mac

So richten Sie Home Assistant auf einem Raspberry Pi mit Docker ein

So installieren Sie Gitea auf Ubuntu mit Docker

So führen Sie Jenkins in Docker mit Docker Compose with Volumes aus