Centralny serwer logów w sieci lokalnej [instalacja 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.
- Przejdź do konfiguracji Stacks i naciśnij przycisk Add stack.

- 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.
- 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. - 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. - Pogrubioną wartość 127.0.0.1 zamień adresem IP serwera, na którym zainstalowany jest Docker.
- 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
- W przeglądarce internetowej wejdź na stronę http://adres_ip_dockera:9000.
- 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) - Po zalogowaniu usługa będzie przygotowywana.

- Jeśli wyświetli się instrukcja szybkiego startu to oznacza, że wszystko poszło dobrze. Polecam ją sobie przejrzeć.

