[Документация Yandex Cloud](../../index.md) > [Yandex Query](../index.md) > Источники и приемники данных > Работа с Yandex Monitoring > Запись данных

# Запись метрик в Monitoring

[Monitoring](../../monitoring/concepts/index.md) — это сервис, позволяющий собирать и хранить метрики, а также отображать их в виде графиков на дашбордах. Отправляемые в Monitoring данные представляют собой значения измеряемых величин (`метрики`) и метки (`labels`), их описывающие.

Например, чтобы следить за количеством сбоев приложения, в качестве метрики можно использовать число сбоев за интервал времени. Данные, описывающие это падение: название хоста, версия приложения, — являются метками. В интерфейсе Monitoring можно проводить различные агрегации метрик по меткам.

Пример записи метрик из Yandex Query в Monitoring.

```sql
INSERT INTO `monitoring`.custom
SELECT
	`my_timestamp`,
	host_name,
	app_version,
	exception_count,
	"exception_monitor" as service_type
FROM $query;
```

При [потоковой обработке данных](../concepts/stream-processing.md) Yandex Query может отправлять в Monitoring результаты исполнения запроса в виде метрик и их меток. 

## Настройка соединения {#setup-connection}

Для отправки метрик в Monitoring необходимо:
1. [Перейти](../../console/operations/select-service.md#select-service) в сервис **Yandex Query** в раздел **Соединения** и нажать кнопку **Создать**.
1. В открывшемся окне в поле **Имя** указать название соединения с Monitoring.
1. В выпадающем поле **Тип** выбрать `Monitoring`.
1. В поле **Сервисный аккаунт** выбрать сервисный аккаунт, который будет использоваться для записи метрик, или создать новый, выдав ему права [`monitoring.editor`](../../monitoring/security/index.md#monitoring-editor).

   Чтобы использовать сервисный аккаунт, пользователю нужна [роль](../../iam/security/index.md#iam-serviceAccounts-user) `iam.serviceAccounts.user`.

1. Создать соединение, нажав кнопку **Создать**.

## Модель данных {#data-model}

Запись метрик в Monitoring выполняется с помощью SQL-выражения.

```sql
INSERT INTO 
	<соединение>.custom 
SELECT 
	<поля> 
FROM 
	<запрос>;
```

Где:

- `<соединение>` — название соединения с Monitoring, созданного в предыдущем пункте.
- `<поля>` — список полей, содержащих временную отметку, метрики и их метки.
- `<запрос>` — запрос-источник данных Yandex Query.

{% note info %}

При записи метрик необходимо использовать конструкцию `INSERT INTO <соединение>.custom`, где [`custom`](../../monitoring/api-ref/MetricsData/write.md#query_params) — зарезервированное имя в Monitoring для записи пользовательских метрик.

{% endnote %}

Для записи метрик используется метод [write](../../monitoring/api-ref/MetricsData/write.md) 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-выражения является именем метки, а текстовое значение — значением метки. В одном запросе может быть неограниченное число метрик. |

Другие типы данных в полях не допускаются.

## Пример записи метрик {#example}

Пример запроса для записи метрик из Yandex Query в Monitoring:

```sql
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, в том числе [подключением](../quickstart/streaming-example.md) к источнику данных. |
| `my_timestamp` | Метка времени | Источник данных — столбец `my_timestamp` в потоке-источнике данных `stream`. |
| `exception_count` | Метрика | Источник данных — столбец `exception_count` в потоке-источнике данных `stream`. |
| `host_name` | Метка | Источник данных — столбец `host` в потоке-источнике данных `stream`. |
| `app_version` | Метка | Источник данных — столбец `app_version` в потоке-источнике данных `stream`. |

Пример результата работы запроса в Monitoring:

![](../../_assets/query/monitoring-example.png)