логотип PurpleSchool
логотип PurpleSchool

Развертывание Graylog в Docker для управления логами

Автор

Олег Марков

Введение

Graylog - это мощная система для централизованного управления и анализа логов, которая позволяет собирать, индексировать и анализировать данные из множества источников. Использование Docker для развертывания Graylog обеспечивает легкость в установке и масштабировании на любой инфраструктуре. В этой статье рассматриваются шаги для установки Graylog в Docker, а также основные возможности и методы работы с этой системой.

Установка Graylog в Docker

Чтобы начать работу с Graylog в Docker, вам нужно будет подготовить несколько компонентов: MongoDB, Elasticsearch и сам Graylog. Эти компоненты можно развернуть с помощью Docker Compose, что упрощает процесс их координации.

Подготовка Docker Compose

Docker Compose позволяет нам описывать многоконтейнерные приложения в одном файле и развертывать их с помощью единой команды. Ниже идет пример docker-compose.yml, который включает все необходимые компоненты для работы Graylog.

version: '3'
services:
  mongodb:
    image: mongo:4.2
    container_name: mongodb
    networks:
      - graylog

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
    networks:
      - graylog

  graylog:
    image: graylog/graylog:4.0
    container_name: graylog
    environment:
      GRAYLOG_PASSWORD_SECRET: somepasswordpepper # Используйте более сложный и случайный пароль
      GRAYLOG_ROOT_PASSWORD_SHA2: 8c6976e5b5410415bde908bd4dee15df8bf4419bd031df1a8c3b25a1214e0f90 # SHA2 хэш "admin"
      GRAYLOG_HTTP_EXTERNAL_URI: http://127.0.0.1:9000/ # Убедитесь, что это соответствует вашему домену или IP
    networks:
      - graylog
    depends_on:
      - mongodb
      - elasticsearch
    ports:
      - "9000:9000"

networks:
  graylog:
    driver: bridge

Запуск контейнеров

Как только docker-compose.yml настроен, используйте следующую команду для развертывания всех контейнеров:

docker-compose up -d

Эта команда запустит MongoDB, Elasticsearch и Graylog в фоновом режиме. Чтобы проверить, все ли контейнеры работают корректно, используйте команду docker-compose ps, которая покажет статус каждого контейнера.

Теперь ваш Graylog должен быть доступен по адресу http://127.0.0.1:9000/, и вы можете войти в систему, используя имя пользователя admin и пароль admin.

Основные функции и возможности Graylog

Graylog предоставляет множество возможностей для удобного анализа логов и настройки предупреждений. Рассмотрим некоторые из них подробнее.

Прием и обработка логов

Graylog поддерживает различные типы входящих данных, включая Syslog, GELF и RAW/Plaintext. Это позволяет интегрировать Graylog с различными системами, как в инфраструктуре, так и в облаке.

Пример настройки Syslog UDP input в Graylog:

// В Graylog интерфейсе перейдите в System > Inputs и выберите `Syslog UDP`
// Затем настройте необходимый порт и начните получать логи от своих источников

Настройка потоков и дашбордов

После того как начнете собирать логи, вы можете организовать их с помощью потоков на основе определенных правил или фильтров. Это позволяет вам сегментировать данные, упрощая их анализ.

Дашборды в Graylog позволяют визуализировать данные через виджеты, что удобно для мониторинга.

// В интерфейсе Graylog перейдите в Dashboards и создайте новый дашборд
// Добавьте виджеты с нужными графиками и фильтрами

Настройка оповещений

Graylog может отправлять оповещения, если определенные условия выполняются. Это полезно для своевременного реагирования на потенциальные проблемы.

// Создайте Alert Condition, выбрав условие, при котором будет отправлено оповещение
// Настройте уведомления по Email или Slack

Заключение

Graylog, развернутый в Docker, предоставляет мощную платформу для централизованного управления логами. Используя Docker Compose, вы можете легко настроить и масштабировать свой стек. Graylog предлагает широкий набор инструментов для сбора, анализа и визуализации данных, что делает его важной частью любой системы мониторинга и наблюдаемости.

Стрелочка влевоВозможности команды image prune в DockerИзвлечение файлов из контейнера в DockerСтрелочка вправо

Постройте личный план изучения Docker до уровня Middle — бесплатно!

Docker — часть карты развития DevOps

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Docker

Zerotier для создания виртуальных сетей в DockerНастройка и использование WireGuard в DockerНастройка Traefik в DockerTailscale для создания VPN-сетей в DockerПодключение по ssh-серверу к DockerКак подключить контейнеры через сокеты в DockerНастройка и запуск Nginx в контейнере DockerКак подключить прокси-сервер в DockerCеть Macvlan в DockerКак работать с localhost в Docker и что это значитKMS сервер в DockerJellyfin в Docker-настройка медиасервераНастройка IP-адресов в DockerПодключение Docker через HTTPSКак организовать хостинг с DockerНастройка firewall для контейнеров в DockerРабота с DNS в DockerКак организовать сети в DockerСетевой мост (bridge) в Docker
Трассировка запросов с помощью Zipkin в DockerСжатие образов с помощью ZIP в DockerYocto в Docker - упрощение разработки встраиваемых системРабота с repository в DockerРезервное копирование Docker volumesКак использовать базы данных с DockerКак подключить Nextcloud в DockerРабота с Grafana в DockerGitLab в DockerМонтирование tmpfs в DockerTarantool в Docker - Легкий запуск и управлениеРабота с tar-архивами в DockerКак тегировать и пушить образы в Docker RegistryДисковое пространство в DockerХранение и управление образами в Docker RegistryРабота с Redis в DockerИнтеграция QNAP с DockerРабота с Qdrant в DockerРабота с PostgreSQL в DockerРабота с MySQL в DockerМультистейдж сборка в DockerКак использовать монтирование директорий в DockerМонтирование томов и директорий в DockerMongoDB в DockerЗагрузка образов из реестров с помощью Pull в DockerЗагрузка образов с помощью команды load в DockerРабота со списками контейнеров в DockerКак использовать Docker с KafkaКак использовать JSON-конфигурации в DockerJDownloader в DockerКоманда inspect image в DockerВозможности команды image prune в DockerРазвертывание Graylog в Docker для управления логамиИзвлечение файлов из контейнера в DockerСоздание образа в DockerУправление дисковым пространством в DockerПринудительная пересборка образов в DockerПоиск образов и контейнеров (find) в DockerИспользование томов в DockerЗагрузка образа в DockerКак работать с Docker SwarmРабота с директорией и путем (directory, path) в DockerУдаление всех образов в DockerКак удалить все контейнеры в DockerХранилище данных в DockerКопирование данных с помощью copy в DockerОчистка данных в DockerУправление кэшем DockerCборка образа с Docker BuildxУказание конкретного dockerfile в DockerСборка образа без кеширования в DockerПередача аргументов при сборке образов в Docker
Улучшение безопасности с Zscaler в DockerZAP для тестирования безопасности в DockerАнализ уязвимостей с Xray в DockerVault в Docker - безопасное управление секретамиКак использовать root для хранения данных в DockerИспользование UFW для управления сетевой безопасностью в DockerЗащита с TLS в DockerSSL-сертификаты в DockerПривилегированный режим в DockerУправление доступом в DockerРабота с учетными данными DockerКак исправить ошибку "connect permission denied" в DockerСертификаты безопасности в Docker
Решение ошибок wsl error в DockerОшибка virtual machine platform not enabled в DockerОшибка version is obsolete в DockerОшибка status exited в DockerПерезапуск контейнера при сбоях состояния в DockerОшибка pull error в Docker - причины и решенияОшибка pull access denied в Docker - причины и решенияПроблемы с правами доступа к контейнерам в DockerКак исправить ошибку 'not found' в DockerОшибка no such file or directory в DockerРешение проблем login denied в DockerОшибка invalid reference format в DockerИсправление ошибки failed в DockerОшибка exited (1) в DockerРаспространенные ошибки в DockerКак решить ошибку "docker error response from daemon"Ошибка error during connect в Docker - как исправитьОшибка head dial tcp в Docker - устранение неполадок и решенияИсправление ошибки "daemon not running" в DockerКак исправить ошибку daemon connection failed в DockerОшибка containerconfig в Docker
Как использовать системные переменные (vars) в DockerКак управлять пользовательскими данными в DockerКак подключить Docker в UNIX-системах в DockerНастройка Superset в DockerЗапуск скриптов в DockerБиблиотека resources в DockerРасширение функций Docker с помощью pluginsКак настроить права доступа в DockerЧто такое overlay2 storage driver в DockerУправление пакетами в DockerРабота с php-fpm в DockerMapping в Docker - как использоватьРаздел etc в DockerУправление драйверами DockerСоздание и работа с Deb пакетами, кросс-сборка и DockerНастройка имени контейнера в DockerИспользование CLI- команды и примеры в DockerКак настроить конфигурационные файлы (config) DockerПонимание Bind-монтирования в Docker
Использование томов в DockerПредварительное создание контейнера (create) для гибкой настройки в DockerИспользование API для управления контейнерами в DockerИспользование sudo при работе с DockerИспользование команды docker sh для запуска команд в контейнере DockerРабота с несколькими проектами в DockerНастройка портов в DockerУправление контейнерами через Portainer в DockerКак оптимизировать образы в DockerКак выполнить команду внутри контейнера с помощью exec в DockerПеременные окружения в DockerРабота с Docker EngineОстановка Docker compose через downНастройка и запуск daemon в DockerУстановка, команды и работа с конфигурацией Docker ComposeКак собрать образы с помощью docker buildАвтоматизация работы с образами в DockerАвтоматическое обновление контейнеров в Docker
Zookeeper в Docker как развернуть и настроить кластерУстановка и настройка ZoneMinder в контейнере DockerУстановка XAMPP в DockerМониторинг инфраструктуры с помощью Zabbix в DockerИспользование Wine в Docker - руководство и примерыИспользование Watchtower в DockerService в DockerИспользование TTY в DockerРабота с Tomcat и Java в Docker-контейнереTermux в Docker - интеграция и запускДашборд Synology в DockerРазработка с помощью Spring Boot в DockerНастройка сервера DockerРазработка приложений React в DockerРазвертывание RabbitMQ в DockerИспользование QEMU в DockerЗапуск Python-приложений в DockerЗапуск PHP-приложений в DockerРазвертывание pgadmin в DockerИспользование Oracle Linux в DockerГенерация образа с OpenWRT в DockerРазвертывание Ollama в DockerЗапуск Node.js-приложений в DockerРазвертывание n8n в DockerРазвертывание MinIO в DockerЗапуск контейнеризованных приложений с Mikrotik в DockerРазвертывание MariaDB в DockerЛогирование в DockerРазработка Laravel в DockerИнтеграция Docker с KubernetesРазвертывание Kibana в DockerУстановка и настройка Keycloak в контейнере DockerИспользование Kali Linux и Docker для безопасной и эффективной работыНастройка Jupyter для работы с Notebook, JupyterLab и другими интерфейсами в DockerРазработка JS в DockerРазвертывание и настройка Jira в контейнере DockerJenkins в Docker для CI/CDJava 21 в DockerЗапуск Java-приложений в DockerGolang в Docker - Практическое руководствоПлатформа dotnet в DockerИспользование CI-CD в DockerРазработка django в DockerРазвертывание clickhouse в DockerУстановка CentOS в DockerРазработка asp в DockerСоздание и развертывание приложений с помощью DockerРазвертывание Airflow в Docker
Использование Zsh в контейнерах DockerИнтеграция Docker с WSLКак настроить рабочую директорию в DockerГде хранятся данные в Docker - переменные окружения, файлы, локальные образы и учётные данныеПроцесс установки программного обеспеченияКоманда wait в DockerНастройка и применение переменных окружения в DockerUsr bin в DockerУстановка и настройка ulimit в Docker для управления ресурсами контейнераUbuntu в DockerСоздание и управление токенами в DockerЗадачи tasks в DockerУправление системой DockerПринудительная остановка контейнера в DockerОстановка контейнеров DockerКак проверить состояние (status) DockerИсходный код DockerКак задать параметры конфигурации DockerСохранение образа DockerЗапуск контейнеров (run) в DockerВыполнение команд от имени root в контейнере DockerПроцессы и их просмотр в DockerPost запросы в DockerКак использовать пайпы в DockerПроверка соединения ping в DockerГде находится конфигурационный файл php.ini в DockerОперационные системы и DockerГрафический интерфейс OMV в DockerОткрытые стандарты виртуализации OCI и DockerПрисвоение и управление именами контейнеров в DockerРабота с metadata в DockerManifest файлы в DockerКонтейнер-менеджмент в DockerУтилита make в DockerКоманда ls в DockerЗапуск и настройка Docker в локальной средеЛимиты в Docker - Управление ресурсами контейнеровБиблиотеки для работы с DockerКоманда kill для остановки контейнеров в DockerКак удержать контейнер Docker в работающем состоянииФайлы jar в DockerЧто такое Docker.io и как его использоватьВнутренние процессы в DockerКоманда inspect в DockerИмпорт образа Docker - Полное руководствоОбразы -images- в DockerИсключения в DockerИспользование команды healthcheck в DockerГрафический интерфейс в Docker- как использовать GUI приложения внутри контейнеровРабота с группами пользователей в DockerРабота с GPU в DockerПросмотр логов в Docker с помощью команды get logsПодключение к запущенному контейнеру в DockerКак узнать IP-адрес контейнера в DockerУстановка и настройка Docker на FreeBSDИспользование флага v в DockerУстановка и использование Docker на FedoraИспользование директивы expose в DockerКоды выхода в Docker - значение и использованиеКак выйти из контейнера Docker корректноЗапуск bash в контейнере с exec в DockerРазница между entrypoint и cmd в DockerИспользование ENTRYPOINT в DockerfileВойти в работающий контейнер в DockerВключение функций (enable) в DockerElasticsearch в DockerDocker Hub и как с ним работатьОсновы работы с DockerfileВерсии Docker (0, 1, 2, 3)Как использовать команду docker ps для просмотра запущенных контейнеровКак запустить Docker Daemon (run, connect)Основы работы с Docker ContainerЗапуск Docker внутри DockerУстановка и использование Docker CEАнализ образов в Docker с помощью Docker DiveНабор инструментов Distribution в DockerСоздание контейнера в DockerНастройки по умолчанию в DockerПроверка состояния (сheck) DockerКонтекст сборки в DockerРабота с Docker через командную строку BashБазовый образ Docker – что это и как его использоватьИспользование Bake для сбора образов в DockerDocker attach и запуск bashDocker в Astra Linux - первые шагиАргументы в DockerDocker на Arch Linux - установка и использованиеАрхитектура Docker - основные компоненты и их взаимодействиеAnsible и Docker - автоматизация развертывания и управления контейнерамиОбразы на базе Alpine Linux в DockerДобавление ресурсов и компонентов в Docker
Открыть базу знаний

Лучшие курсы по теме

изображение курса

Docker и Ansible

Антон Ларичев
иконка часов19 бесплатных уроков
иконка звёздочки рейтинга4.8
Backend
DevOps
изображение курса

Основы Linux

Антон Ларичев
иконка часов19 бесплатных уроков
иконка звёздочки рейтинга4.8
DevOps
изображение курса

Микросервисы

Антон Ларичев
иконка часов13 бесплатных уроков
иконка звёздочки рейтинга4.8
Backend
DevOps