VK Cloud logo
Обновлена20 марта 2024 г. в 07:17

Архитектура

Концепции

Сервис Cloud Monitoring состоит из нескольких частей:

  1. Масштабируемый API по приему метрик
  2. Распределенное хранилище метрик
  3. Масштабируемый API по чтению значений метрик и построению запроса
  4. Агенты для отправки стандартных метрик
  5. UI с возможностью строить дашборды и графики
  6. Сервис централизованного обновления агентов мониторинга

Namespaces

Каждый сервис пишет данные в свой namespace. Стандартные имена Namespace,формируемые сервисами VK Cloud, выглядят как mcs/servicename. Если необходимо писать кастомные метрики, то название Namespace не должно начинаться с mcs/.

Таблица стандартных Namespace

Название сервиса

Название Namespace

Cloud Servers
mcs/vm
Cloud Networks
mcs/network
Cloud Storage
mcs/cloudstorage
Cloud Containers
mcs/containers
Cloud Databases
mcs/databases
Cloud Big Data
mcs/bigdata
SQS
mcs/managedqueue
Marketplace
mcs/marketplace
CDN
mcs/cdn
Arenadata DB as a Service
mcs/dwh
Cloud Monitoring
mcs/monitoring

Метки (Labels)

В Labels передается дополнительная метаинформация, которая может идентифицировать целевой ресурс, который мы мониторим. Т.е. В случае VM - название VM или id VM.

Для каждой метрики, которая отправляется в хранилище можно указать произвольный набор пар “ключ-значение” (labels). Например, вы вместе со значением метрики cpu_total хотите передать имя хоста виртуальной машины и название availability zone, в которой она находится, тогда вам необходимо заполнить значения для меток ‘host’ и ‘availability_zone’.

Переданные метки и их значения сохраняются в базу данных Cloud Monitoring. Значения одной и той же метрики автоматически агрегируются с точностью до периодов 1 минута, 5 минут, 1 час. Агрегирование происходит по всем полям labels, с которыми была сохранено значение метрики

Далее ключи и значения меток можно использовать для построения запросов, которые фильтруют и группируют значения метрик. Например, можно построить такой запрос в формате ala PromQL:

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

Агрегация

  1. Cloud Monitoring автоматически агрегирует значения метрик по интервалам 1 минута, 5 минут, 1 час
  2. Сырые значения метрик автоматически удаляются после агрегации
  3. Из коробки поддерживаются следующие функции агрегации:
    1. Минимум
    2. Максимум
    3. Среднее
  4. Агрегирование происходит по всем полям labels, с которыми была сохранено значение метрики
  5. Агрегированные метрики хранятся в течение 30 дней
  6. Пользователь может получить значения агрегированных метрик с фильтрацией по необходимым значениям Labels

Единицы измерения

В Cloud Monitoring есть стандартные единицы измерений, которые можно передавать и по которым агрегировать:

Seconds | Microseconds | Milliseconds | Bytes | Kilobytes | Megabytes | Gigabytes | Terabytes | Bits | Kilobits | Megabits | Gigabits | Terabits | Percent | Count | Bytes/Second | Kilobytes/Second | Megabytes/Second | Gigabytes/Second | Terabytes/Second | Bits/Second | Kilobits/Second | Megabits/Second | Gigabits/Second | Terabits/Second | Count/Second | None

Если не указана единица измерений, то подразумевается None.