Skip to main content

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.