Всем привет! В этой статье мы хотим поделиться нашим опытом использования полезной платформы Graylog, которая ежедневно помогает собирать, надежно хранить и анализировать логи с десятков серверов, окутанных заботой нашей поддержки :) Это первая часть статьи, в которой мы собрали в одном месте информацию, которая поможет установить и настроить Graylog, плюс, расскажем почему мы остановились имено на этой платформе. Вторая часть, которая появится совсем скоро, будет содержать примеры использования и их реализацию. Можно долго рассуждать о важности серверных логов и привести много примеров ситуаций, в которых они жизненно необходимы, но так как речь пойдет именно о сторонней системе и ее особенностях, то выделим ряд важных моментов: Удобно, когда все логи хранятся в одном месте. Круто, когда есть отчеты и возможность автоматически их проанализировать. Полезно, когда логи можно посмотреть даже при “упавшем” сервере или после того как злоумышленник “прибрался” за собой. Бесценно, когда о возникшей ошибке в логах будет оповещение. Сформулировали задачу так:  “Подобрать бесплатное open source решение для сбора и анализа логов, не перегруженное функционалом, производительное, простое в установке и использовании.” Это не единственная и, возможно, далеко не самая лучшая платформа, но она широко распространена, прошла проверку временем и все еще поддерживается разработчиками. Но, начать мы решили с анализа “конкурентов”.   Классный, модный, современный Splunk соответствует подавляющему большинству потребностей и скорее всего, может даже больше. Но есть три момента, которые не понравились: В нужной конфигурации решение платное. Это закрытое решение. Компания, без объяснений причин покинула рынок РФ. Но, если вас это не смущает, немного полезной информации по платформе: Обзорная статья на habr. Сравнение платной и бесплатных версий. С этим “претендентом” не получилось, идем дальше. Например, тут и тут его часто сравнивают с ELK, который и рассмотрим. Стек продуктов Elasticsearch, Logstash, Kibana, образующий аббревиатуру ELK - это очень популярное и еще более настраиваемое решение, по сравнению с предыдущим. Более того, это решение open source. Что же пошло не так? Некоторые фишки все же платные, например, уведомления и контроль доступа (однако, после некоторых событий часть данного функционала стала бесплатной).  Ресурсоемкость - требуется очень много ресурсов. Систему сложно настроить, “из коробки” она работать не будет. Еще нужно упомянуть Open Distro, которая развивается на базе ELK, но полностью бесплатная, что не отменяет ресурсоемкость и сложность в настройке. Немного полезной информации: Инструкция по установке и настройке (eng). Цикл статей на habr: часть 1, часть 2, часть 3. Двух претендентов отсеяли, остался виновник торжества - Graylog, выделяющийся по следующим причинам: Это open source решение. Бесплатная версия имеет все необходимое. Функционал небольшой, что удобно, ничего лишнего (для наших задач). “Из коробки” решение уже работает, нужны минимальные настройки. По сравнению с ELK ресурсоемкость значительно ниже. Далее, мы предлагаем лонгрид по настройке и установке Graylog. Все адреса, логины, пароли, явки - вымышленные, ничего общего с реальностью не имеют. Установка - обычный процесс, описанный почти везде. Нам потребуется виртуальный сервер с CentOS и компонентами ElasticSearch, ModgoDB, Graylog4, но тем не менее, засады нас там ждут. В примере используем CentOS 8. Хорошая привычка - проверить правильность настройки таймзоны и имени.   Если что-то не так - устанавливаем так как нужно, например:   Обновления обязательны, также установим пакеты для удобства работы, top-ы, etc.   (опционально) Установим SSL-сертификат   смотрим где лежат сертификаты (пока самоподписанные)   кладём crt и key файлы в /etc/cockpit/ws-certs.d/ кокпит сам найдёт файлы с сертификатами (2 файла - серт + ключ, или в одном) (настройки будут индивидуальными для вашей сети, все команды даны для примера) Если не используем ipv6 - лучше отключить: Кокпит должен быть доступен только админам, снаружи ему делать нечего. Создадим зону для интранета и добавим нужные адреса подсетей:   Порты (9000 - временно, для веб-интерфейса graylog, 10514 и 5044 для данных): Необходимые сервисы: После добавления/удаления перезагрузим сервис: Проконтролируем, что все правила верные:   Проверяем - идём браузером на https://graylog.itsft.ru:9090 (настраиваем, а не отключаем его!!!) Устанавливаем пакеты, если ещё не установлены, разрешаем апачу подключения: Проверяем порты 9000, 9200, 27017:   Небольшая проблема, если попытаемся добавить тип для порта 9200, получим ошибку - порт уже определён:   Модифицируем запись - добавится локальная и у неё приоритет будет выше, чем у глобальной, но отображаться будут обе:   Тест:   Импортируем ключ репозитория, добавляем конфигурационный файл репозитория,  устанавливаем (вместо vim можно использовать nano, mcedit или любой другой редактор по вашему выбору): Чтобы Elasticsearch работал с Graylog, необходимо установим имя кластера “graylog”: В секции --- Cluster --- меняем параметр:   В секции --- Various --- добавляем последней строкой: Запускаем:   Проверяем:   Запускается довольно долго, в зависимости от конфигурации сервера или виртуальной машины. Проверяем:   Проверяем:   Добавляем конфигурационный файл репозитория: Проверяем:   Ссылки на оригинальную документацию: RPM / YUM / DNF CentOS installation Graylog не запускается самостоятельно (об этом есть сообщение в процессе установки).  Сначала настраиваем, потом пробуем запускать.    Генерируем хеш пароля:   Параметры эластика только для первого запуска, дальше конфигурация будет производиться уже из веб-интерфейса грейлога:   Также полезно будет настроить Email transport:   Регистрируемся и заходим в панель: https://www.maxmind.com/en/account/login Download files  →  В секции GeoLite2 City  →  Get Permalinks (1, 2) # Database URL   # SHA256 URL   В Services  → Manage License Keys (3) Нажимаем "Generate new license key" создастся новый License Key. На email придёт уведомление о создании ключа. Лицензия активируется в течение 5 минут. Подставляем в ссылки, полученные на первом шаге ключ, полученный на втором шаге, загружаем файл с базой и файл контрольной суммы: Проверяем целостность архива:   Устанавливаем:   Установка GeoLite2 Database выполнена.   Запускаем Graylog:   Немного ждём, затем смотрим логи запуска:   это нормально.  Возникают из-за того что установлена версия Enterprise, но нет соответствующей лицензии. Заходим браузером, проверяем что веб-интерфейс доступен, можем залогиниться в веб-интерфейс: https://graylog.itsft.ru:9000 user: admin pass: MyPassword123 Создаём конфиг nginx, размещаем файлы сертификатов в /etc/nginx/ssl (у нас будут в одном файле сертификат + ключ):   То это из-за SELinux. Исправляем:   Контролируем:   Немного реконфигурим Graylog: Теперь Graylog слушает только на локалхосте, если открывали порт 9000, то необходимости в нём больше нет: Установим размер индекса, так как виртуальный сервер имеет ограниченный объём диска. System  →  Indices  →  Default index set  →  Edit В Index Rotation Configuration: Select rotation strategy - Index Size Max size per index - 4294965097   (4GiB) В Index Retention Configuration: Select retention strategy - Delete Index Max number of indices - 8 Итого общий размер индексов будет не более 32GiB Если вы дочитали и все еще с нами, то на этом закончим первую часть, где мы разобрали чем нам приглянулся Graylog и как можно его установить / настроить.  Надеемся, что наш опыт будет вам полезен. Вопросы в комментариях приветствуются :) Во второй части мы расскажем, как используя Graylog можно собирать системные логи и логи веб-сервера.  Дата-центр ITSOFT — размещение и аренда серверов и стоек в двух дата-центрах в Москве. За последние годы UPTIME 100%. Размещение GPU-ферм и ASIC-майнеров, аренда GPU-серверов, лицензии связи, SSL-сертификаты, администрирование серверов и поддержка сайтов.   Руководитель поддержки студии и дата-центра ITSOFT