Логирование#

Общая информация#

Облачный сервис ELK позволяет централизовать и автоматизировать сбор данных из журналов сервисов PaaS. Кроме того, его можно использовать для извлечения данных из журналов других систем. Сервис базируется на Elastic Stack, который состоит из:

  • Elasticsearch для хранения и индексации журналов;

  • Logstash для фильтрации и обработки журналов;

  • Kibana для визуализации полученных данных.

Журналы действий составляют неотъемлемую часть мониторинга общего состояния системы. Во время своей работы приложения и сервисы записывают в них различную отладочную информацию, сохраняют сообщения об ошибках и предупреждения, протоколируют действия и операции. Это помогает оперативно выявить наличие проблем с сервисом и провести анализ любой нештатной ситуации, будь то сбой или снижение производительности. Кроме того, на основе сохранённых данных можно строить прогнозы и принимать меры для предотвращения проблем в будущем.

Анализ проблемной ситуации может оказаться весьма трудоёмкой задачей, если вручную просматривать лог-файлы разных компонентов с множества серверов в попытке выявить корреляции. К тому же, программы часто записывают в журнал большой объём избыточных данных, которые оказываются востребованы только при определённых обстоятельствах. В таких случаях важно иметь возможность быстро найти и отфильтровать данные, чтобы извлечь нужную информацию из разных источников.

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

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

В сервисе ELK поддерживаются следующие версии Elasticsearch:

  • 7.11.2;

  • 7.12.1;

  • 7.13.1;

  • 7.14.2;

  • 7.15.2;

  • 7.16.3;

  • 7.17.4;

  • 8.0.1;

  • 8.1.3.

Перед началом работы#

Для работы с сервисом логирования пользователь должен иметь проектные привилегии PaaSServicePolicy. Такие привилегии есть, например, у администраторов в группе CloudAdministrators. При необходимости вы можете создать отдельного пользователя, добавить его в проект и назначить ему политику PaaSServicePolicy или включить в группу администраторов облака в этом проекте.

Кроме того, в проекте должны иметься следующие ресурсы:

Мы советуем также ознакомиться с рекомендациями по работе с сервисом в облаке.

Запуск сервиса ELK#

Для запуска сервиса в подразделе Витрина сервисов или Установленные сервисы выберите сервис ELK на вкладке Логирование и нажмите Создать.

Процедура запуска сервиса состоит из следующих основных этапов:

  1. Задайте параметры сети, необходимые для работы сервиса ELK:

    • Конфигурацию кластера, в котором будет развёрнут сервис. Для выбора доступны следующие опции:

      • с одним узлом (неотказоустойчивый сервис);

      • с тремя узлами в одной зоне доступности;

      • с тремя узлами в трёх зонах доступности;

    • VPC, в котором будет развёрнут сервис.

    • Группы безопасности для регулирования трафика на интерфейсах экземпляров, где будет запущен сервис ELK.

    • Подсети, к которым будут подключены экземпляры с развёрнутым на них сервисом, либо сетевые интерфейсы, через которые узлы кластера будут подсоединяться к подсетям.

    Примечание

    Для запуска сервиса в выбранном VPC необходимо предварительно создать подсеть в предпочтительной зоне доступности (в конфигурации с одной зоной), либо по одной подсети в каждой зоне доступности (в конфигурации с тремя зонами). Кроме того, в используемых зонах доступности должны поддерживаться одинаковые типы дисков.

    Примечание

    Опция присоединения сетевых интерфейсов может быть полезна, например, когда требуется пересоздать кластер, на котором был развёрнут сервис логирования. Если при удалении сервиса не удалять присоединённые сетевые интерфейсы, то их можно использовать повторно для подключения к подсетям узлов кластера, в котором будет развёрнут новый сервис. Это позволяет сохранить прежние сетевые настройки, такие как внутренние IP-адреса и группы безопасности, и не задавать их заново.

  2. Укажите конфигурацию экземпляра или экземпляров, на которых будет запущен сервис поиска и анализа данных. Выберите тип экземпляра и характеристики его дисков: тип, размер и IOPS (если это доступно для данного типа).

    Примечание

    Производительность сервиса ELK чувствительна к выбору компонентов узлов. Рекомендуем использовать экземпляры с большим объёмом оперативной памяти (тип Memory Optimized).

    Кроме того, вы можете указать SSH-ключ. В этом случае после автоматической настройки сервиса экземпляры виртуальных машин будут доступны по SSH.

    Внимание

    Мы предоставляем возможность подключения к экземплярам виртуальных машин по SSH-ключу, пока новый сервис ELK находится на этапе бета-тестирования. Данная возможность в будущем может быть отключена.

    Чтобы активировать конфигурацию с кластерным арбитром, выберите опцию Использовать арбитр.

  3. Задайте основные параметры сервиса:

    • Имя сервиса — произвольное уникальное имя для сервиса.

    • Версию Elasticsearch.

    • Разрешение анонимного доступа в Kibana. При выборе этой опции необходимо также выбрать роль для анонимного доступа с правами просмотра (viewer) или редактирования (editor).

    • Опцию установки агентов для мониторинга. Для централизованного мониторинга сервиса логирования необходимо предварительно развернуть сервис мониторинга на базе Prometheus. При выборе этой опции необходимо также выбрать сервис мониторинга, который вы хотите использовать. Опционально можно задать метки для мониторинга, которые установленные агенты мониторинга будут присваивать собираемым метрикам (см. подробнее о метках).

    • Пароль суперпользователя Elasticsearch. Его можно задать вручную или сгенерировать автоматически. Если пароль задан, то для входа в Kibana необходимо пройти аутентификацию.

  4. Задайте расширенные настройки, если необходимо. Для этого нажмите расширенные настройки и введите настройки и их значения.

    Важно

    Указанные настройки станут частью конфигурации сервиса, поэтому окажут влияние на его работу. Добавляйте только те настройки, которые вам действительно необходимы.

  5. Нажмите Создать.

    Примечание

    Процесс запуска сервиса обычно занимает от 5 до 15 минут.

Управление балансировщиками нагрузки#

Для сервиса ELK в отказоустойчивой конфигурации можно создать внутренний и/или внешний балансировщики нагрузки (подробнее о балансировщиках). Они автоматически распределяют поступающие запросы между полнофункциональными узлами кластера (арбитру, если он есть, запросы не направляются).

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

Внимание

Балансировщик нагрузки, который работает с PaaS-сервисом, можно удалить только на странице этого сервиса.

Важно

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

Создать балансировщик нагрузки#

Балансировщик нагрузки для сервиса логирования можно создать, только когда сервис имеет статус Запущен. Для одного сервиса можно создать по одному внутреннему и внешнему балансировщику нагрузки.

Важно

Внутренний балансировщик нагрузки можно создать, только если в VPC включено распространение маршрутов.

  1. Перейдите в раздел PaaS Установленные сервисы и откройте вкладку Логирование.

  2. Найдите в таблице сервисов нужный и нажмите на идентификатор сервиса для перехода на его страницу.

  3. Откройте вкладку Балансировщики нагрузки и нажмите Создать.

  4. В открывшемся окне выберите, какой балансировщика вы хотите создать. Если ни один ещё не был создан, то можно сразу создать и внутренний, и внешний балансировщики.

  5. Нажмите Создать для подтверждения действия.

Удалить балансировщик нагрузки#

Связанный с сервисом балансировщик нагрузки можно удалить, только когда сервис имеет статус Запущен.

  1. Перейдите в раздел PaaS Установленные сервисы и откройте вкладку Логирование.

  2. Найдите в таблице сервисов нужный и нажмите на идентификатор сервиса для перехода на его страницу.

  3. Откройте вкладку Балансировщики нагрузки и нажмите Удалить.

  4. В открывшемся окне выберите, какой балансировщика вы хотите удалить. Если для сервиса были созданы два балансировщика нагрузки, то вы можете удалить их оба одновременно.

  5. Нажмите Удалить для подтверждения действия.

Обработка журналов событий#

Компонент Logstash позволяет фильтровать, агрегировать и модифицировать журналы событий, прежде чем они будут переданы в Elasticsearch. Для автоматической предварительной обработки журналов можно настроить конвейер (pipeline). Конвейер определяет правила обработки входящего потока данных и может содержать блоки input, filter, output, а также codec. Плагины из блока input обеспечивают генерацию событий (events), filter — предварительную обработку данных, а output — их пересылку конечному адресату. Codec изменяет представление данных и может применяться в input и/или output для декодирования/кодирования данных.

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

Чтобы автоматически подключать и обрабатывать журналы событий других сервисов PaaS, сервис ELK использует преднастроенный конвейер. Он принимает на вход (input) данные от агентов сбора логов (filebeat) и, в зависимости от настроек и используемой версии Elasticsearch, записывает их либо в индекс (index), либо в поток данных (data stream) с именем <beatname>-<version>. Плагин output настроен на запись в хранилище Elasticsearch всех событий, у которых в метаданных @metadata есть поле index.

Вы можете воспользоваться предопределённым плагином output для записи в ELK событий от своих систем, даже если они генерируются не агентами beats (filebeat, metricbeat, auditbeat), при условии, что метаданные этих событий содержат поле index. Либо вы можете добавить свои собственные плагины в output, но при этом надо иметь в виду, что каждый новый плагин, выполняющий запись в Elasticsearch, означает новое клиентское подключение. Для более эффективного использования сервиса ELK рекомендуется минимизировать количество отдельных подключений, поэтому желательно переиспользовать существующие плагины output вместо создания новых.

Создать конвейер#

Чтобы задать конфигурацию конвейера:

  • Перейдите в раздел PaaS Установленные сервисы.

  • Откройте вкладку Логирование и нажмите на имя сервиса ELK для перехода на его страницу.

  • Откройте вкладку Конвейеры и нажмите Создать.

  • В открывшемся диалоге задайте имя конвейера и его конфигурацию.

  • Нажмите Создать.

Изменить конвейер#

Чтобы изменить конфигурацию конвейера:

  • Перейдите в раздел PaaS Установленные сервисы.

  • Откройте вкладку Логирование и нажмите на имя сервиса ELK для перехода на его страницу.

  • Откройте вкладку Конвейеры, выберите конвейер в списке и нажмите Изменить.

  • Отредактируйте конфигурацию конвейера.

  • Нажмите Сохранить.

Удалить конвейер#

Чтобы удалить конвейер:

  • Перейдите в раздел PaaS Установленные сервисы.

  • Откройте вкладку Логирование и нажмите на имя сервиса ELK для перехода на его страницу.

  • Откройте вкладку Конвейеры, выберите конвейер в списке и нажмите Удалить. Вы можете одновременно выбрать несколько конвейеров для удаления.

  • Подтвердите действие в открывшемся окне.

Настройка сервиса ELK#

Если вы не подключили мониторинг при создания сервиса логирования, либо хотите его отключить, то это можно сделать, когда сервис находится в состоянии Готов.

Примечание

Для подключения мониторинга необходимо предварительно развернуть сервис мониторинга на базе Prometheus.

Важно

Если настройки мониторинга не удастся изменить, то сервис будет возвращён к исходным.

Чтобы подключить мониторинг для сервиса логирования:

  1. Перейдите в раздел PaaS Установленные сервисы и откройте вкладку Логирование.

  2. Найдите в таблице сервисов нужный и нажмите на идентификатор сервиса для перехода на его страницу.

  3. Откройте вкладку Параметры и нажмите Изменить.

  4. В открывшемся окне вы можете настроить мониторинг (или отключить, если он уже включён).

  5. Для сохранения настроек нажмите Изменить.

Подключение хранилища снимков#

Встроенный механизм создания снимков в Elasticsearch позволяет создавать резервные копии индексов, потоков данных и состояния кластера Elasticsearch. Созданные снимки можно использовать для восстановления данных после сбоя или переноса данных Elasticsearch между сервисами ELK. К2 Облако позволяет автоматизировать процесс создания и регистрации хранилища снимков для сервиса ELK.

Для хранения снимков используются бакеты объектного хранилища. При создании хранилища в бакете создаётся каталог, который монтируется на каждом узле кластера Elasticsearch в виде файловой системы s3fs. Такой подход позволяет использовать один и тот же бакет для хранения снимков разных сервисов, в том числе разных типов. А сохранение снимков в виде файлов упрощает обмен снимками: пользователи могут загрузить собственные снимки для восстановления сервиса или скачать имеющиеся.

Средствами облака можно только подключить хранилище снимков, для управления снимками необходимо использовать собственные инструменты Elasticsearch. Создавать снимки можно с помощью собственного API Elasticsearch, либо посредством управления жизненным циклом снимков (Snapshot Lifecycle Management, SLM).

Добавить хранилище снимков#

Вы можете создать новое хранилище снимков или подключить уже существующее хранилище другого сервиса. Процедура добавления хранилища состоит из двух этапов: сначала необходимо его создать/подключить, а потом зарегистрировать в Elasticsearch.

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

Примечание

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

Добавить новое хранилище#

  1. Перейдите в раздел PaaS Установленные сервисы и откройте вкладку Логирование.

  2. Найдите в таблице сервисов нужный и нажмите на идентификатор сервиса для перехода на его страницу.

  3. Откройте вкладку Хранилища снимков и нажмите Создать.

  4. В открывшемся окне задайте следующие параметры (опция Существующее хранилище должна быть выключена):

    • Бакет, где будет создано хранилище снимков.

    • Пользователь с правами PaaSBackupPolicy, от имени которого выполняется запись копий в бакет.

    • Каталог, который будет монтироваться в качестве хранилища.

  5. Нажмите Добавить для создания хранилища.

  6. Дождитесь, пока сервис перейдет в статус Запущен и включите переключатель Регистрация хранилища.

Добавить зарегистрированное хранилище#

Зарегистрированное хранилище можно подключить к другому сервису только для чтения

  1. Перейдите в раздел PaaS Установленные сервисы и откройте вкладку Логирование.

  2. Найдите в таблице сервисов нужный и нажмите на идентификатор сервиса для перехода на его страницу.

  3. Откройте вкладку Хранилища снимков и нажмите Создать.

  4. В открывшемся окне отметьте опцию Существующее хранилище и в поле Сервис для восстановления выберите сервис, хранилище которого необходимо подключить.

  5. Нажмите Добавить для создания хранилища.

  6. Дождитесь, пока сервис перейдет в статус Запущен и включите переключатель Регистрация хранилища.

Добавить незарегистрированное хранилище#

Процедура подключения незарегистрированного хранилища аналогична созданию нового. Только в этом случае указывается существующий каталог, который ранее использовался в качестве хранилища снимков.

  1. Перейдите в раздел PaaS Установленные сервисы и откройте вкладку Логирование.

  2. Найдите в таблице сервисов нужный и нажмите на идентификатор сервиса для перехода на его страницу.

  3. Откройте вкладку Хранилища снимков и нажмите Создать.

  4. В открывшемся окне задайте следующие параметры (опция Существующее хранилище должна быть выключена):

    • Бакет, где будет создано хранилище снимков.

    • Пользователь с правами PaaSBackupPolicy, от имени которого выполняется запись копий в бакет.

    • Каталог, который ранее использовался в качестве хранилища.

  5. Нажмите Добавить для создания хранилища.

  6. Дождитесь, пока сервис перейдет в статус Запущен и включите переключатель Регистрация хранилища.

Отключить хранилище снимков#

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

  1. Перейдите в раздел PaaS Установленные сервисы и откройте вкладку Логирование.

  2. Найдите в таблице сервисов нужный и нажмите на идентификатор сервиса для перехода на его страницу.

  3. Откройте вкладку Хранилища снимков и переведите переключатель Регистрация хранилища в выключенное положение

  4. Дождитесь, пока сервис перейдет в статус Запущен и нажмите Удалить.

  5. Подтвердите удаление в открывшемся окне.

Обновление окружения#

Сервисы PaaS регулярно обновляются. Если вы хотите, чтобы уже установленный сервис ELK поддерживал новые возможности, то обновите его окружение на новую версию. Текущую версию окружения можно узнать на вкладке Информация на странице сервиса.

Примечание

Обновление окружения поддерживается для всех сервисов с версией окружения 3_6 и выше. Оно также доступно для некоторых ранее установленных сервисов с версией окружения 3_5. Возможность обновления можно проверить с помощью API-метода DescribeService: в ответе на запрос в списке SupportedFeatures должно присутствовать значение common:update_environment.

Важно

Если окружение не удастся обновить, то сервис будет возвращён в исходное состояние.

Чтобы обновить версию окружения:

  1. Перейдите в раздел PaaS Установленные сервисы и откройте вкладку Логирование.

  2. Найдите в таблице сервисов нужный и нажмите на идентификатор сервиса для перехода на его страницу.

  3. На вкладке Информация нажмите Обновить версию окружения.

  4. В открывшемся окне выберите из списка версию, на которую вы хотите обновить текущее окружение.

  5. Нажмите Обновить для смены версии.

Удаление сервиса ELK#

Удаление сервиса ELK предполагает удаление всех созданных вместе с ним экземпляров и дисков.

Вы можете удалить сервис одним из следующих способов.

  1. Перейдите в раздел PaaS Установленные сервисы.

  2. Откройте вкладку Логирование.

  3. Найдите сервис в таблице и нажмите на иконку .

  1. Перейдите в раздел PaaS Установленные сервисы.

  2. Откройте вкладку Логирование.

  3. Найдите сервис в таблице и перейдите на страницу сервиса.

  4. На вкладке Информация нажмите Удалить.