Запись метрик в Monitoring
Monitoring - это сервис, позволяющий собирать и хранить метрики, а также отображать их в виде графиков на дашбордах. Отправляемые в Monitoring данные представляют из себя значения измеряемых величин (метрики
) и метки (labels
), их описывающие.
Например, чтобы следить за количеством сбоев приложения, в качестве метрики можно использовать число сбоев за интервал времени. Данные, описывающие это падение: название хоста, версия приложения - являются метками. В интерфейсе Monitoring можно проводить различные агрегации метрик по меткам.
Пример записи метрик из Yandex Query в Monitoring.
INSERT INTO `monitoring`.custom
SELECT
`my_timestamp`,
host_name,
app_version,
exception_count,
"exception_monitor" as service_type
FROM $query;
При потоковой обработке данных Yandex Query может отправлять в Monitoring результаты исполнения запроса в виде метрик и их меток.
Настройка соединения
Для отправки метрик в Monitoring необходимо:
-
Перейти в интерфейс Yandex Query в раздел Соединения и нажать кнопку Создать.
-
В открывшемся окне в поле Имя указать название соединения с Monitoring.
-
В выпадающем поле Тип выбрать
Monitoring
. -
В поле Сервисный аккаунт выбрать сервисный аккаунт, который будет использоваться для записи метрик, или создать новый, выдав ему права
monitoring.editor
.Чтобы использовать сервисный аккаунт, пользователю нужна роль
iam.serviceAccounts.user
. -
Создать соединение, нажав кнопку Создать.
Модель данных
Запись метрик в Monitoring выполняется с помощью SQL-выражения
INSERT INTO
<соединение>.custom
SELECT
<поля>
FROM
<запрос>;
Где:
<соединение>
— название соединения с Monitoring, созданного в предыдущем пункте.<поля>
— список полей, содержащих временную отметку, метрики и их метки.<запрос>
— запрос-источник данных Yandex Query.
Примечание
При записи метрик необходимо использовать конструкцию INSERT INTO <соединение>.custom
, где custom
— зарезервированное имя в Monitoring для записи пользовательских метрик.
Для записи метрик используется метод write Monitoring API. При записи метрик необходимо передать:
- временную метку;
- список метрик с указанием их типа. Yandex Query поддерживает типы метрик
DGAUGE
,IGAUGE
; - список меток.
Yandex Query автоматически выводит семантику параметров из SQL-запроса.
Тип поля | Описание | Ограничения |
---|---|---|
Временной: Date , Datetime , Timestamp , TzDate , TzDatetime , TzTimestamp |
Временная метка всех метрик | В запросе может быть только одно поле с временной меткой |
Целочисленный: Bool , Int8 , Uint8 , Int16 , Uint16 , Int32 , Uint32 , Int64 , Uint64 |
Значения метрик, IGAUGE |
Название поля из SQL-выражения является именем метрики. В одном запросе может быть неограниченное число метрик |
С плавающей точкой: Float , Double |
Значения метрик, DGAUGE |
Название поля из SQL-выражения является именем метрики. В одном запросе может быть неограниченное число метрик |
Текстовый: String , Utf8 |
Значения меток | Название поля из SQL-выражения является именем метки, а текстовое значение является значением метки. В одном запросе может быть неограниченное число метрик |
Другие типы данных в полях не допускаются.
Пример записи метрик
Пример запроса для записи метрик из Yandex Query в Monitoring.
INSERT INTO
`monitoring`.custom
SELECT
`my_timestamp`,
host AS host_name,
app_version,
exception_count,
"exception_monitor" as service_type
FROM $query;
Где:
Поле | Тип | Описание |
---|---|---|
monitoring |
Название соединения с Monitoring | |
$query |
Источник данных в SQL-запросе, может быть подзапросом языка YQL, в том числе подключением к источнику данных | |
my_timestamp |
Метка времени | Источник данных — столбец my_timestamp в потоке-источнике данных stream |
exception_count |
Метрика | Источник данных — столбец exception_count в потоке-источнике данных stream |
host_name |
Метка | Источник данных — столбец host в потоке-источнике данных stream |
app_version |
Метка | Источник данных — столбец app_version в потоке-источнике данных stream |
Пример результата работы запроса в Monitoring.