Запись метрик в 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:
