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
weitere Themen
- hinzufügen von Nodes bzw. Logs diverser Server per rsyslog
- hinzufügen von Logs aus der Open-Source Firewall OPNsense
- anpassen der Graylog Indices und Logröße
Thats it … Have Fun!
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.
Pingback:AlmaLinux Logs zu graylog Server senden - TASTE-OF-IT
Pingback:Graylog Idices und Logspeicher anpassen – TASTE-OF-IT
Pingback:OPNsense Logs zu Graylog Logserver senden – TASTE-OF-IT
Pingback:Graylog syslog als UDP TCP Input hinzufügen – TASTE-OF-IT