Cloud logging (BETA)
VK Private Cloud Logging (LaaS) — сервис для работы с журналами событий. Предоставляет сбор, хранение, чтение, отображение и обработку журналов событий в едином интерфейсе в Платформе.
Cloud logging предназначен для диагностики и оперативного решения ошибок в работе сервисов.
Сервис агрегирует логи узлов и облачных сервисов. Это позволяет:
- Отслеживать аномальное поведение.
- Получать сведения, которые могут помочь поддерживать стабильную работу, увеличить доступность и производительность сервисов.
Для записи логов используется плагин vkcloudlogs-fluent-bit-plugin.
Функционал плагина — сбор, агрегация, фильтрация и отправка логи из источника данных в сервис Cloud logging.
Чтобы настроить логирование для ВМ:
-
Установите Fluent Bit, если этого не было сделано ранее.
-
Установите плагин
vkcloudlogs-fluent-bit-plugin.CentOS 7.X, CentOS 8.X, AlmaLinux 9# sudo rpm -i https://cloudlogging.hb.ru-msk.vkcs.cloud/vkcloudlogs-fluent-bit-plugin/vkcloudlogs-fluent-bit-plugin-0.1.3-1.x86_64.rpmUbuntu 22.X, Astra Linux SE 1.7.2 «Орел»# curl -sSLo vkcloudlogs-fluent-bit-plugin_0.1.3_amd64.deb https://cloudlogging.hb.ru-msk.vkcs.cloud/vkcloudlogs-fluent-bit-plugin/vkcloudlogs-fluent-bit-plugin_0.1.3_amd64.deb# sudo dpkg -i vkcloudlogs-fluent-bit-plugin_0.1.3_amd64.debAltLinux Server p10# sudo apt-get install https://cloudlogging.hb.ru-msk.vkcs.cloud/vkcloudlogs-fluent-bit-plugin/vkcloudlogs-fluent-bit-plugin-0.1.3-1.x86_64.rpmБудет установлен агент сбора логов
vkcloudlogs-fluent-bit.service. По умолчанию он отключён.Агент
vkcloudlogs-fluent-bit.serviceработает с файлами:/etc/vkcloudlogs-fluent-bit-plugin/vkcloudlogs-fluent-bit.conf— основной файл конфигурации сервиса с описаниями источников и путей назначения для логирования (подробнее — в официальной документации)./etc/vkcloudlogs-fluent-bit-plugin/vkcloudlogs-fluent-bit-plugins.conf— конфигурация подключения плагина.
-
Настройте плагин для отправки логов в сервис Cloud Logging:
-
Подготовьте авторизационные данные для вашего проекта:
auth_url— точка доступа Keystone.project_id— идентификатор проекта в OpenStack.server_host_port— адрес сервиса Cloud Logging.user_id— имя пользователя, от которого будут записываться логи.password— пароль пользователя.service_id— идентификатор сервиса в системе логирования (по умолчаниюdefault). При необходимости создайте новые идентификаторы в Портале самообслуживания в разделе Мониторинг → Логирование → Настройки → Прочие ресурсы.
-
Укажите параметры подключения для плагина в файле
vkcloudlogs-fluent-bit.conf.[INPUT]Name systemdSystemd_Filter _SYSTEMD_UNIT=ssh.serviceLowercase OnRead_From_Tail OnTag system.*[OUTPUT]Name vkcloudlogsMatch system.*auth_url <ТОЧКА_ДОСТУПА_KEYSTONE>project_id <PID_ПРОЕКТА>server_host_port <АДРЕС_СЕРВИСА>user_id <ID_ПОЛЬЗОВАТЕЛЯ>password <ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ>
-
-
Включите агент сбора логов
vkcloudlogs-fluent-bit.service:-
Выполните команды:
# sudo systemctl enable vkcloudlogs-fluent-bit.service# sudo systemctl start vkcloudlogs-fluent-bit.service -
Подождите несколько минут для сбора данных.
-
Проверьте наличие логов в Портале самообслуживания в разделе Мониторинг → Логирование.
-
Чтобы просмотреть журнал событий ВМ, кластеров Kubernetes и СУБД в Портале администратора:
- Перейдите в раздел Аналитика → Логирование.
- Нажмите кнопку Поиск и фильтры и настройте фильтры отображения журналов логирования.
- Нажмите кнопку Найти.
Чтобы уточнить результаты поиска, используйте язык поисковых запросов.
Примеры поисковых выражений:
-
Сообщение содержит строку:
some messagemessage: "some message"message: "error: \"some message\" -
Использование времени, уровня логирования и нагрузки (payload):
level >= debug AND (timestamp <= "2023-04-10T10:20:00Z" OR payload.code = 200) -
Использование операторов
AND,NOT,EXISTS:service_id <> databases AND NOT message: hello AND payload.status EXISTS
Конфигурационные файлы Cloud Logging на ВМ расположены в директории /etc/cloudlogs/.
Для передачи логов используется сервис Fluent Bit (td-agent-bit) с плагином vkcloudlogs-fluent-bit.service.
Чтобы просмотреть статус сервиса, выполните команду:
# sudo systemctl status cloudlogs.service
Основные настройки и учётные данные расположены в файле /etc/cloudlogs/output_cloudlogs.conf. Они передаются через userdata в cloud-init на ВМ при создании инстанса.
Сервисы запущены на ВМ в пространстве имён logaas-integration.
Чтобы посмотреть логи:
# sudo kubectl -n logaas-integration get pods
Сервисы расположены в пространстве имён coiiot-vkcloud.
Чтобы посмотреть логи, на управляющем узле выполните команду:
# sudo kubectl -n coiiot-vkcloud get pods
Для Портала администратора поды reader-api и writer-api продублированы с суффиксом -sa.
У сервисных учётных записей (cloudlogs_…) в Keystone должна быть роль monitoring_agent.
Логи (events) можно посмотреть на узлах хранения пользовательских метрик в Clickhouse.
Для управления настройками глубины хранения логов в сервисе Cloud Logging используются параметры:
SERVICE_MIN_TTL— минимальное время хранения логов в днях. По умолчанию 1 день.SERVICE_MAX_TTL— максимальное время хранения логов в днях. По умолчанию 30 дней.SERVICE_DEFAULT_TTL— время хранения логов для всех проектных сервисов в днях по умолчанию. По умолчанию, 3 дня. Пользователь может выставлять любые значения в пределахSERVICE_MIN_TTLиSERVICE_MAX_TTLдля каждого типа сервиса.
Чтобы настроить эти параметры на уровне Платформы, обновите или добавьте соответствующие переменные сервиса laas-admin в Ansible inventory и обновите его (подробнее — в п. Изменение конфигурации на узлах).
Чтобы изменить конфигурацию сервиса laas-admin на узлах:
-
В конфигурационном файле
~/inventory/vkcloud/group_vars/vkcloud_kube/laas-admin-api.ymlвнесите изменения в параметрыhelm_laas_admin_api_SERVICE_MIN_TTL,helm_laas_admin_api_SERVICE_MAX_TTLиhelm_laas_admin_api_SERVICE_DEFAULT_TTL, и сохраните его. -
Перезагрузите конфигурацию с помощью Ansible playbook:
$ ansible-playbook -i vkcloud.yml -e env=vkcloud ../ansible-openstack/playbooks/helm-laas-admin.yml -D
В ~/inventory/vkcloud/group_vars/vkcloud_kube/cloud-alerting.yml задайте значения параметров:
helm_cloud_alerting_smtp_host— хост SMTP-сервера.helm_cloud_alerting_smtp_port— порт SMTP-сервера.helm_cloud_alerting_smtp_user— имя пользователя для подключения к SMTP-серверу.helm_cloud_alerting_smtp_password— пароль для подключения к SMTP-серверу.helm_cloud_alerting_smtp_from_addr— email отправителя уведомления.