Архитектура сервиса

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

Архитектура сервиса

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

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

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

| | |
| --- | --- |
| | |
| 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 передается дополнительная метаинформация, которая может идентифицировать целевой ресурс, который мы мониторим. Т.е. В случае 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

Cloud Monitoring автоматически агрегирует значения метрик по интервалам 1 минута, 5 минут, 1 час
Сырые значения метрик автоматически удаляются после агрегации
Из коробки поддерживаются следующие функции агрегации:

Минимум
Максимум
Среднее

Агрегирование происходит по всем полям labels, с которыми была сохранено значение метрики
Агрегированные метрики хранятся в течение 30 дней
Пользователь может получить значения агрегированных метрик с фильтрацией по необходимым значениям 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.