Centralny serwer logów w sieci lokalnej [instalacja Graylog]

Ekran początkowy Graylog

Gdy wzrasta ilość systemów w sieci, wzrasta jednocześnie ilość miejsc, do których musimy zaglądać, aby przeanalizować incydent, który w każdej chwili może wystąpić. Ktoś kiedyś zauważył ten problem i tak powstały serwery logów, czyli usługi przechowujące logi z innych systemów. Takie usługi często przy wystąpieniu konkretnego logu wykonują zdefiniowaną akcję, ale głównym zadaniem jest łatwa analiza przechowywanych logów, szczególnie gdy różne systemy są często od siebie zależne i problem z działaniem konkretnej usługi może nie być spowodowany usługą, od której zależy jej działanie, ale nawet gdzieś głębiej, gdzie te usługi nie mają ze sobą bezpośredniej styczności. W tym artykule pokażę, jak zainstalować taki serwer, a za serwer logów posłuży Graylog.

Instalację w formie video obejrzysz TUTAJ 🙂

Instalacja Graylog jako kontener

W sieci mam zainstalowany serwer z usługami kontenerowymi Docker i aplikacją do zarządzania kontenerami Portainer.io. Poniższą instrukcję należy wykonać po zalogowaniu się do Portainer.io.

  1. Przejdź do konfiguracji Stacks i naciśnij przycisk Add stack.
  2. Wpisz nazwę stacku, np. graylog i w polu z definicją pliku docker-compose wklej poniższą zawartość:
version: '3'
services:
    # MongoDB: https://hub.docker.com/_/mongo/
    mongo:
      image: mongo:4.2
      volumes:
        - mongo_data:/data/db
      networks:
        - graylog
    # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
    elasticsearch:
      image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
      volumes:
        - es_data:/usr/share/elasticsearch/data
      environment:
        - http.host=0.0.0.0
        - transport.host=localhost
        - network.host=0.0.0.0
        - "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms512m -Xmx512m"
      ulimits:
        memlock:
          soft: -1
          hard: -1
      deploy:
        resources:
          limits:
            memory: 1g
      networks:
        - graylog
    # Graylog: https://hub.docker.com/r/graylog/graylog/
    graylog:
      image: graylog/graylog:4.3.5
      volumes:
        - graylog_data:/usr/share/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/
      entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
      networks:
        - graylog
      restart: always
      depends_on:
        - mongo
        - 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
networks:
    graylog:
      driver: bridge
volumes:
  mongo_data:
    driver: local
  es_data:
    driver: local
  graylog_data:
    driver: local

Powyższy kod ma już skonfigurowany tryb stały i aktualnie najwyższą stabilną wersję Graylog dostępną w Docker Hubie.

  1. Otwórz terminal linuxa i wykonaj polecenie pwgen -N 1 -s 96. Wyświetlony ciąg znaków skopiuj i wklej w miejsce pogrubionej wyżej wartości somepasswordpepper.
  2. W terminalu wykonaj polecenie echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1. Wpisz hasło jakie chcesz ustawić na roota i naciśnij Enter. Podczas wprowadzania hasło jest widoczne jawnie. Skopiuj wyliczoną sumę sha256 i wklej ją zamiast pogrubionej sumy 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918.
  3. Pogrubioną wartość 127.0.0.1 zamień adresem IP serwera, na którym zainstalowany jest Docker.
  4. Przewiń stronę na sam dół i naciśnij przycisk Deploy the stack.

Po kilku minutach całe środowisko będzie gotowe. Najdłużej trwa uruchamianie kontenera z usługą Graylog i niestety pozostaje cierpliwie czekać.

Uzyskiwanie dostępu do interfejsu Graylog

  1. W przeglądarce internetowej wejdź na stronę http://adres_ip_dockera:9000.
  2. Gdy usługa będzie uruchomiona zobaczysz ekran logowania.

    Nazwa użytkownika: admin
    Hasło: zostało zdefiniowane w punkcie 4 powyższej instrukcji (domyślnie: admin)
  3. Po zalogowaniu usługa będzie przygotowywana.
  4. Jeśli wyświetli się instrukcja szybkiego startu to oznacza, że wszystko poszło dobrze. Polecam ją sobie przejrzeć.