Debian zentraler Logserver mit Graylog und Elasticsearch

graylog Logo
graylog Logo

In meiner Testumgebung haben sich inzischen einige Testsysteme angesammelt. Wenn es Probleme gibt, dann heißt es auf die Systeme schauen und eine Vielzahl von Logs durchsuchen. Das sind neben den systemeigenen auch die der Applikationen. Das möchte ich in Zukunft etwas einfacher handhaben und habe mich für einen zusätzlichen, zentralen Loggingserver entschieden. Nachfolgend die Installation von Graylog mit MongoDB und Elasticsearch unter Debian.

Graylog

Graylog ist eine Anwendung die Logdateien aus verschiedenen Quellen und Zuständen zentral verwaltet, organisiert und aufarbeitet. Hierfür werden die weiteren Tools MongoDB und Elasticsearch benötigt.
Handbuch: Installing Graylog – Installing Graylog

MongoDB

Graylog verwendet MongoDB, was ein dokumentenorientiertes NoSQL Datenbankmanagementsystem ist.

Elasticsearch

Damit die Suche in der fülle von Daten schnell und umfangreich funktioniert, bedient sich Graylog der Suchmaschine, Elasticsearch. Diese basiert auf Lucene, ist in java geschrieben und speichert Dokumente im NoSQL Format.

Voraussetzungen

  • virtuelle KVM Maschine mit netinstall Debian 11
  • 1 vCPU
  • 4GB vRAM (2GB waren bei mir zu wenig)
  • 12GB HDD

Die größe des Logspeicher hängt stark von der Anzahl der Systeme und dem Umfang der gesendeten Logs ab. Es werden schnell 50, 100 und mehr Gigabyte benötigt.

Debian sources.list

deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

# buster-updates, previously known as 'volatile'
deb http://deb.debian.org/debian/ buster-updates main contrib non-free
deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free

deb http://deb.debian.org/debian buster-backports main contrib non-free

benötigte Pakete

# apt install -y apt-transport-https uuid-runtime pwgen dirmngr gnupg wget curl

Java Runtime installieren

# apt install -y openjdk-11-jre-headless

MongoDB installieren

Als nächstes habe ich MongoDB installiert. Dafür habe ich die Anleitung von hier genommen: Debian MongoDB installieren. Es reicht die Anleitung bis zum Start der Dienste zu befolgen.

Elasticsearch installieren

Graylog kann bis dato mit Elasticsearch in Version 7.x verwendet werden. Nachfolgend konfiguriere ich Elasticsearch als Single-Node

# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
# echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
# apt update
# apt install -y elasticsearch-oss

Elasticsearch für den Cluster Namen konfigurieren

# nano /etc/elasticsearch/elasticsearch.yml
cluster.name: graylog
action.auto_create_index: false
network.host: 0.0.0.0
discovery.type: single-node
## oder
# sed -i "s/#cluster.name: my-application/cluster.name: graylog/g" /etc/elasticsearch/elasticsearch.yml
# echo "action.auto_create_index: false" >> /etc/elasticsearch/elasticsearch.yml

XMS Speicher für Elasticsearch anpassen. Es sollten höchstens 50% des physisch vorhandenen RAM / Speicher konfiguriert werden. Beide Werte sollten gleich groß sein.

nano /etc/elasticsearch/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
# <= 1GB
-Xms128m
-Xmx128m

# >=2GB <=4GB
-Xms512m
-Xmx512m

# >=4GB <=8GB
-Xms1024m
-Xmx1024m

Dienste konfigurieren

# systemctl daemon-reload
# systemctl enable elasticsearch.service
Synchronizing state of elasticsearch.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /lib/systemd/system/elasticsearch.service.
# systemctl restart elasticsearch.service

Test Elasticsearch mittels Browser http://servname:9200

	
name	"servername"
cluster_name	"graylog"
cluster_uuid	"xxxx"
version	
number	"7.10.2"
build_flavor	"oss"
build_type	"deb"
build_hash	"747e1cc71def077253878a59143c1f785afa92b9"
build_date	"2021-01-13T00:42:12.435326Z"
build_snapshot	false
lucene_version	"8.7.0"
minimum_wire_compatibility_version	"6.8.0"
minimum_index_compatibility_version	"6.0.0-beta1"
tagline	"You Know, for Search"

oder per CURL vom Server selbst, sollte dies nicht der Fall sein muss network.host mit 0.0.0.0 konfiguriert werden!

# curl -X GET http://127.0.0.1:9200
{
  "name" : "servername",
  "cluster_name" : "graylog",
  "cluster_uuid" : "xxx",
  "version" : {
    "number" : "7.10.2",
    "build_flavor" : "oss",
    "build_type" : "deb",
    "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
    "build_date" : "2021-01-13T00:42:12.435326Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Elasticsearch startet nicht

Nach obiger Installation startete Elasticseaerch nicht. Nach langer Suche erhöhte ich das Timeout für den Start und Elasticsearch startet wieder.

# sed -i "s/TimeoutStartSec=75/TimeoutStartSec=300/g" /usr/lib/systemd/sysetm/elasticsearch.service
# systemctl daemon-reload
# systemctl start elasticsearch.service
# systemctl status elasticsearch.service |grep Active
   Active: active (running) since Fri 2022-01-28 09:17:23 CET; 43s ago

Graylog installieren

Die bis data aktuelle Version von Graylog ist 4.2.

# cd /usr/local/src/
# wget https://packages.graylog2.org/repo/packages/graylog-4.2-repository_latest.deb
# dpkg -i graylog-4.2-repository_latest.deb


## ohne graylog-enterprise-plugins und graylog-enterprise-integrations-plugins
# apt update
# apt install -y graylog-server graylog-integrations-plugins
# rm graylog-4.2-repository_latest.deb

Graylog Konfiguration anpassen

Secret für Userpasswörter setzen (auf allen Nodes gleich)

# pwgen -N 1 -s 128
xxx
# sed -i "s/password_secret=/password_secret=xxx/g" /etc/graylog/server/server.conf

Weblogin und root User ändern, default ist admin

# sed -i "s/#root_username = admin/root_username = god/g" /etc/graylog/server/server.conf

Weblogin und root Passwort erzeugen

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

Passwort in die Konfig eintragen

# sed -i "s/^root_password_sha2 =\$/root_password_sha2 = a2bb34780af80cf92faf0872xxx400a910e72543b8de3f47cdb90fc99ffb4/g" /etc/graylog/server/server.conf

Externen Zugriff auf Graylog erlauben, sofern gewünscht

# sed -i "s/^#http_bind_address = 127.0.0.1:9000/http_bind_address = 0.0.0.0:9000/g" /etc/graylog/server/server.conf

Anpassen der Zeitzone (Joda-Time – Java date and time API – Time Zones)

# sed -i "s/#root_timezone = UTC/root_timezone = Europe\/Berlin/g" /etc/graylog/server/server.conf

Dienste aktivieren und starten

# systemctl daemon-reload
# systemctl enable graylog-server.service
Synchronizing state of graylog-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable graylog-server
Created symlink /etc/systemd/system/multi-user.target.wants/graylog-server.service → /lib/systemd/system/graylog-server.service.
# systemctl start graylog-server.service
# systemctl status graylog-server.service |grep Active

Weboberfläche aufrufen

http://<servername>:9000 oder http://<server-ip-adresse>:9000
Username = admin # bzw. siehe oben in der Konfig den geänderten
Passwort = das in der Konfig gesetzte für root_password_sha2
Graylog Server Web Login
Graylog Server Web Login
Graylog Server Intro log messages
Graylog Server Intro log messages
Graylog Server Started Data
Graylog Server Started Data
Graylog Server Dashboard
Graylog Server Dashboard
Graylog Server Started Alerted
Graylog Server Started Alerted

weitere Themen

Thats it … Have Fun!

3 Trackbacks / Pingbacks

  1. Graylog syslog als UDP TCP Input hinzufügen – TASTE-OF-IT
  2. OPNsense Logs zu Graylog Logserver senden – TASTE-OF-IT
  3. Graylog Idices und Logspeicher anpassen – TASTE-OF-IT

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.