Cloud Monitoring
VK Private Cloud Monitoring (MaaS) — cервис для сбора и отображения метрик пользователей.
Cloud Monitoring агрегирует метрики узлов и облачных сервисов, что позволяет отслеживать аномальное поведение, получать сведения, которые могут помочь поддерживать стабильную работу, увеличить доступность и производительность сервисов.
Данные каждого сервиса сохраняются в свое пространство имен (Namespace). Сервисы Платформы формируют названия пространств имен вида mcs/<SERVICENAME>. Название пространства имен для записи дополнительных метрик не должно начинаться с mcs/.
В метках (Labels) передается дополнительная метаинформация, которая может идентифицировать целевой ресурс.
Для каждой метрики, которая передается в хранилище, можно указать произвольный набор меток. Например, чтобы со значением метрики cpu_total передать имя узла ВМ и название зоны доступности, в которой она находится, заполните значения меток host и availability_zone.
Переданные метки сохраняются в базу данных Cloud Monitoring. Значения метрики автоматически агрегируются по интервалам 1 минута, 5 минут, 1 час. Агрегация происходит по всем полям меток, с которыми сохранено значение метрики.
Метки можно использовать для построения запросов, которые фильтруют и группируют значения метрик, например:
SUM BY(host) (cpu:Minimum{instance="<"span >"server1", app!="<"span >"system"})SUM BY(job) (cpu:Average{host="<"span >"server1", job!="<"span >"system"}[12h] offset 24h
- Cloud Monitoring автоматически агрегирует значения метрик по интервалам 1 минута, 5 минут, 1 час.
- Начальные значения метрик автоматически удаляются после агрегации.
- Поддерживаются следующие функции агрегации: минимум, максимум, среднее.
- Агрегирование происходит по всем полям меток, с которыми сохранено значение метрики.
- Агрегированные метрики хранятся в течение 30 дней.
- Пользователь может получить значения агрегированных метрик с фильтрацией по необходимым значениям меток.
Чтобы установить агент мониторинга на ВМ при ее создании, пользователь Портала самообслуживания ставит переключатель Включить мониторинг в активное положение. При этом:
- В сервис templater отправляется запрос.
- В ответ на запрос приходит скрипт-установщик cloud-init script.
- Скрипт скачивает и устанавливает пакеты, создает конфигурационные файлы, подставляет в них реквизиты для входа сервисного пользователя.
Чтобы установить агент мониторинга на существующую ВМ, пользователь Портала самообслуживания на странице ВМ переходит на вкладку Настройка мониторинга. При этом:
- В сервис templater отправляется запрос.
- В ответ на запрос приходит команда перехода на скрипт-установщик.
- При выполнении команды создается сервисный пользователь и приходит скрипт-установщик cloud-init script.
- Скрипт скачивает и устанавливает пакеты, создает конфигурационные файлы, подставляет в них реквизиты для входа сервисного пользователя.
Подробно работа с агентом описана в Руководстве пользователя VK Private Cloud.
Чтобы проверить статус агента:
# systemctl -l status telegraf
Чтобы запустить агент мониторинга:
# systemctl -l start telegraf
Чтобы остановить агент мониторинга:
# systemctl -l stop telegraf
-
На ВМ, где установлен агент мониторинга, внесите изменения в параметры мониторинга в файле
/etc/telegraf/telegraf.conf.Пример для мониторинга CPU в Linux[[inputs.cpu]]percpu = falsetotalcpu = truecollect_cpu_time = truereport_active = falsefieldpass = ["usage_user", "usage_system", "usage_iowait", "usage_irq", "usage_guest", "time_idle"]Пример добавления плагина `mysql` в Linux[[inputs.mysql]]servers = ["tcp(127.0.0.1:3306)/"]metric_version = 2 -
Примените конфигурацию:
# sudo systemctl reload telegraf.service
Основные сервисы расположены в инфраструктруном кластере Kubernetes.
При возникновении сбоев в работе сервисов, проверьте логи metrics-server, cloud-alerting, vmselect, templater, tetsuo, ics.
В качестве долгосрочного хранилища (long-term storage) пользовательских метрик используются узлы хранения пользовательских метрик в Сlickhouse. Используется общая служба Apache Zookeper.
Чтобы посмотреть таблицы метрик, подключитесь к Сlickhouse:
# sudo clickhouse-client --port 9010
Для фильтрации данных используйте SQL, например:
use cloud_monitoring;select * from hour_metrics limit 10;
Чтобы убедиться, что данные приходят:
-
Проверьте в
etcdсоответствие маппинга ID проекта:# sudo etcdctl --endpoints <ENDPOINTS> get --prefix / -
Проверьте логи
metrics-serverв Kubernetes:# sudo kubectl logs -l app.kubernetes.io/name=metrics-server -n paas-vkcloud | grep namespace
В логах ожидается запись вида: "Set namespace map 'mcs/vm': XXXXXXXXX". Полученный маппинг можно использовать для запроса данных из vmselect.