Graylog aufsetzen
Graylog (open) ist ein Logserver auf dem man Logs speichern und auswerten kann.
Damit Graylog funktionieren kann werden noch MongDB (Community Edition) und Opensearch benötigt.
Yaml-Datei für den gesamten Docker-Stack:
services:
mongodb:
image: mongodb/mongodb-community-server:7.0.14-ubi9
container_name: log-mongodb
volumes:
- mongodb_data:/data/db
restart: unless-stopped
environment:
TZ: "Europe/Berlin"
#Port öffnen, wenn von Ferne zugegriffen werden soll
#ports:
# - "27017:27017"
networks:
traefik_web:
opensearch:
image: opensearchproject/opensearch:latest
container_name: log-opensearch
environment:
- TZ=Europe/Berlin
- OPENSEARCH_JAVA_OPTS=-Xms500m -Xmx500m #500 MB Speicher wird zur Verfügung gestellt
- bootstrap.memory_lock=true
- discovery.type=single-node
- action.auto_create_index=false
- plugins.security.ssl.http.enabled=false
- plugins.security.disabled=true
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=<Initial_Admin_Passwort>
ulimits:
memlock:
hard: -1
soft: -1
volumes:
- os_data:/usr/share/opensearch/data
restart: unless-stopped
networks:
- traefik_web
graylog:
hostname: server
image: graylog/graylog:6.0
container_name: log-graylog
depends_on:
opensearch:
condition: service_started
mongodb:
condition: service_started
entrypoint: /usr/bin/tini -- wait-for-it opensearch:9200 -- /docker-entrypoint.sh
environment:
TZ: "Europe/Berlin"
GRAYLOG_NODE_ID_FILE: "/usr/share/graylog/data/config/node-id"
GRAYLOG_PASSWORD_SECRET: "${GRAYLOG_PASSWORD_SECRET:?Please configure GRAYLOG_PASSWORD_SECRET in the .env file}"
GRAYLOG_ROOT_PASSWORD_SHA2: "${GRAYLOG_ROOT_PASSWORD_SHA2:?Please configure GRAYLOG_ROOT_PASSWORD_SHA2 in the .env file}"
GRAYLOG_HTTP_BIND_ADDRESS: "0.0.0.0:9000"
GRAYLOG_HTTP_EXTERNAL_URI: "http://localhost:9000/"
GRAYLOG_ELASTICSEARCH_HOSTS: "http://opensearch:9200"
GRAYLOG_MONGODB_URI: "mongodb://<graylog-user>:<graylog-user-passwort>@mongodb:27017/graylog"
GRAYLOG_ROTATION_STRATEGY: "time"
GRAYLOG_ELASTICSEARCH_MAX_TIME_PER_INDEX: "1d"
GRAYLOG_ELASTICSEARCH_MAX_NUMBER_OF_INDICES: "7"
GRAYLOG_RETENTION_STRATEGY: "delete"
GRAYLOG_ROOT_TIMEZONE: "Europe/Berlin"
GRAYLOG_ELASTICSEARCH_ANALYZER: "standard"
ports:
- "9000:9000/tcp" # Server API
volumes:
- "graylog_data:/usr/share/graylog/data/data"
- "graylog_journal:/usr/share/graylog/data/journal"
restart: unless-stopped
networks:
- traefik_web
volumes:
mongodb_data:
os_data:
graylog_data:
graylog_journal:
networks:
traefik_web:
external: true
Nach dem ersten Start kann Graylog so noch nicht funktionieren, da die MongoDB noch manuell konfiguriert werden muss.