+++
title = "AWS CloudWatch"
description = "Руководство по использованию CloudWatch в Harvest"
keywords = ["harvest", "cloudwatch", "guide"]
aliases = ["/docs/harvest/latest/datasources/cloudwatch"]
weight = 200
+++
# Источник данных AWS CloudWatch

Harvest поставляется со встроенной поддержкой CloudWatch. Добавьте его в качестве источника данных, после чего вы будете готовы создавать информационные панели или использовать Explore с метриками CloudWatch и журналами CloudWatch.

В этом разделе описываются параметры, переменные, запросы и другие параметры, характерные для этого источника данных. См. [Добавить источник данных]({{< relref "add-a-data-source.md" >}}) для получения инструкций о том, как добавить источник данных в Harvest. Добавлять источники данных могут только пользователи с ролью администратора организации.

> **Примечание.** Если у вас возникли проблемы с работой этого источника данных, а Harvest выдает неописуемые ошибки, проверьте файл журнала (попробуйте посмотреть в /var/log/harvest/harvest.log).

## Настройки CloudWatch

Чтобы получить доступ к настройкам источника данных, наведите указатель мыши на значок **Конфигурация** (шестеренка), затем щелкните **Источники данных**, а затем щелкните источник данных AWS Cloudwatch.
| Имя                                     | Описание                                                                                                           |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `Имя`                             | Имя источника данных. Именно так вы обращаетесь к источнику данных в панелях и запросах. |
| `По умолчанию`                    | Источник данных по умолчанию означает, что он будет предварительно выбран для новых панелей. |
| `Регион по умолчанию`             | Используется в редакторе запросов для установки региона (можно изменить для каждого запроса) |
| `Пространство имен пользовательских показателей` | Укажите пространство имен CloudWatch для Пользовательских метрик |
| `Провайдер аутентификации`        | Укажите поставщика для получения учетных данных. |
| Имя профиля `Учетные данные`      | Укажите имя используемого профиля (если вы используете файл `~/.aws/credentials`), оставьте поле пустым по умолчанию. |
| `Принять роль Арна`                | Укажите ARN роли, которую нужно принять |
| `Внешний идентификатор`            | Если вы принимаете роль в другой учетной записи, которая была создана с внешним идентификатором, укажите здесь внешний идентификатор. |

## Аутентификация

### Учетные данные AWS

Доступны три различных метода аутентификации. `AWS SDK Default` вообще не выполняет пользовательскую настройку и вместо этого использует [поставщик по умолчанию](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html) как указано в AWS SDK для Go. Это требует, чтобы вы настроили свои учетные данные AWS отдельно, например, если вы [настроили интерфейс командной строки](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html), если вы [работаете на экземпляре EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html), [в задаче ECS](https ://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) или для [служебной учетной записи в кластере Kubernetes](https://docs.aws.amazon.com/eks /latest/userguide/iam-roles-for-service-accounts.html).

Файл учетных данных напрямую соответствует поставщику [SharedCredentialsProvider](https://docs.aws.amazon.com/sdk-for-go/api/aws/credentials/#SharedCredentialsProvider) в Go SDK. Короче говоря, он прочитает файл общих учетных данных AWS и найдет данный профиль. Хотя «AWS SDK по умолчанию» также найдет общий файл учетных данных, этот параметр позволяет указать, какой профиль использовать, не используя переменные среды. Он не имеет неявных резервных копий для других поставщиков учетных данных и завершится ошибкой, если использование учетных данных из файла учетных данных не сработает.

«Доступ и секретный ключ» соответствует [StaticProvider](https://docs.aws.amazon.com/sdk-for-go/api/aws/credentials/#StaticProvider) и использует данный идентификатор ключа доступа и секретный ключ. для аутентификации. Этот метод не имеет резервных вариантов и завершится ошибкой, если предоставленная пара ключей не работает.

### роли IAM

В настоящее время весь доступ к CloudWatch осуществляется серверной частью Harvest с использованием официального SDK AWS. Если вы выбрали метод аутентификации _AWS SDK по умолчанию_ и ваш сервер Harvest работает на AWS, вы можете использовать роли IAM для автоматической обработки аутентификации.

См. документацию AWS по [ролям IAM](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html).

### IAM-политики

Harvest нужны разрешения, предоставленные через IAM, чтобы иметь возможность читать метрики CloudWatch.
и теги/экземпляры/регионы EC2. Вы можете прикрепить эти разрешения к ролям IAM и
использовать встроенную поддержку Harvest для принятия ролей.

Вот минимальный пример политики:

```json
{
  "Версия": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowReadingMetricsFromCloudWatch",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:DescribeAlarmsForMetric",
        "cloudwatch:DescribeAlarmHistory",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:ListMetrics",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:GetMetricData"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingLogsFromCloudWatch",
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups",
        "logs:GetLogGroupFields",
        "logs:StartQuery",
        "logs:StopQuery",
        "logs:GetQueryResults",
        "logs:GetLogEvents"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingTagsInstancesRegionsFromEC2",
      "Effect": "Allow",
      "Action": ["ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeRegions"],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingResourcesForTags",
      "Effect": "Allow",
      "Action": "tag:GetResources",
      "Resource": "*"
    }
  ]
}
```
### Принятие роли

Поле «Принять роль ARN» позволяет указать, какую роль IAM следует принять, если таковая имеется. Если оставить поле пустым, предоставленные учетные данные используются напрямую, и соответствующая роль или пользователь должны иметь необходимые разрешения. С другой стороны, если это поле не пустое, предоставленные учетные данные используются для выполнения вызова [sts:AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). .

### Конечная точка

В поле «Конечная точка» можно указать собственный URL-адрес конечной точки, который переопределяет созданную по умолчанию конечную точку для CloudWatch API. Оставьте это поле пустым, если вы хотите использовать сгенерированную по умолчанию конечную точку. Дополнительные сведения о том, зачем и как использовать конечные точки службы, см. в [документации по конечным точкам службы AWS] (https://docs.aws.amazon.com/general/latest/gr/rande.html).

### Роли EKS IAM для сервисных аккаунтов

Процесс Harvest в контейнере запускается от имени пользователя 472 (называемого «harvest»). Когда Kubernetes монтирует ваши спроецированные учетные данные, они по умолчанию будут доступны только пользователю root. Чтобы разрешить пользователю 472 доступ к учетным данным (и избежать его возврата к роли IAM, прикрепленной к экземпляру EC2), вам необходимо предоставить [контекст безопасности] (https://kubernetes.io/docs/tasks/ configure-pod-container/security-context/) для вашего модуля.

```yaml
securityContext:
  fsGroup: 472
  runAsUser: 472
  runAsGroup: 472
```
### Файл учетных данных AWS

Создайте файл в папке `~/.aws/credentials`. Это путь `HOME` для пользователя, работающего с harvest-server.

> **Примечание.** Если вы считаете, что файл учетных данных находится в нужном месте, но он по-прежнему не работает, вы можете попробовать переместить файл .aws в «/usr/share/harvest/» и убедиться, что ваш файл учетных данных имеет не более 0644 разрешений.
Пример содержания:

```bash
[default]
aws_access_key_id = asdsadasdasdasd
aws_secret_access_key = dasdasdsadasdasdasdsa
region = us-west-2
```
## Использование редактора запросов

Источник данных CloudWatch может запрашивать данные как из метрик CloudWatch, так и из API CloudWatch Logs, каждый из которых имеет собственный специализированный редактор запросов. Вы выбираете, какой API вы хотите запросить, используя переключатель режима запроса в верхней части редактора.

{{< Figure src="/static/img/docs/v70/cloudwatch-metrics-query-field.png" max-width="800px" class="docs-image--left" caption="Поле запроса метрик CloudWatch " >}}
{{< Figure src="/static/img/docs/v70/cloudwatch-logs-query-field.png" max-width="800px" class="docs-image--right" caption="Поле запроса CloudWatch Logs " >}}

## Использование редактора запросов метрик

Чтобы создать корректный запрос, необходимо указать пространство имен, имя метрики и хотя бы одну статистику. Если параметр `Match Exact` включен, вам также необходимо указать все параметры запрашиваемой метрики, чтобы [схема метрики](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ search-expression-syntax.html) точно соответствует. Если «Точное совпадение» отключено, вы можете указать любое количество параметров, по которым вы хотите фильтровать. Будет возвращено до 100 показателей, соответствующих критериям фильтра.

### Динамические запросы с использованием подстановочных знаков измерения

> Доступно только в Harvest v6.5+.

В Harvest 6.5 или более поздней версии вы можете отслеживать динамический список метрик, используя подстановочный знак звездочки (\*) для одного или нескольких значений измерения.

{{< Figure src="/static/img/docs/v65/cloudwatch-dimension-wildcard.png" max-width="800px" class="docs-image--right" caption="Подстановочный знак параметра CloudWatch" >} }

В этом примере запрашиваются все метрики в пространстве имен «AWS/EC2» с именем метрики «CPUUtilization» и ЛЮБЫМ значением для измерения «InstanceId». Это может помочь вам отслеживать показатели для ресурсов AWS, таких как инстансы или контейнеры EC2. Например, когда новые экземпляры создаются как часть события автоматического масштабирования, они автоматически отображаются на графике, и вам не нужно отслеживать идентификаторы новых экземпляров. В настоящее время эта возможность ограничена получением до 100 метрик. Вы можете нажать «Показать предварительный просмотр запроса», чтобы увидеть выражение поиска, которое автоматически создается для поддержки подстановочных знаков. Чтобы узнать больше о поисковых выражениях, посетите [документацию CloudWatch] (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/search-expression-syntax.html).

По умолчанию поисковое выражение определяется таким образом, что запрашиваемые показатели должны точно соответствовать определенным именам измерений. Это означает, что в примере будут возвращены только метрики только с одним параметром с именем «InstanceId».

Вы можете снять флажок «Точное совпадение», чтобы включить показатели, для которых определены другие параметры. Отключение «Точного совпадения» также создает поисковое выражение, даже если вы не используете подстановочные знаки. Мы просто ищем любую метрику, которая соответствует хотя бы пространству имен, имени метрики и всем определенным измерениям.
## Использование редактора запросов

Источник данных CloudWatch может запрашивать данные как из метрик CloudWatch, так и из API CloudWatch Logs, каждый из которых имеет собственный специализированный редактор запросов. Вы выбираете, какой API вы хотите запросить, используя переключатель режима запроса в верхней части редактора.

{{< Figure src="/static/img/docs/v70/cloudwatch-metrics-query-field.png" max-width="800px" class="docs-image--left" caption="Поле запроса метрик CloudWatch " >}}
{{< Figure src="/static/img/docs/v70/cloudwatch-logs-query-field.png" max-width="800px" class="docs-image--right" caption="Поле запроса CloudWatch Logs " >}}

## Использование редактора запросов метрик

Чтобы создать корректный запрос, необходимо указать пространство имен, имя метрики и хотя бы одну статистику. Если параметр `Match Exact` включен, вам также необходимо указать все параметры запрашиваемой метрики, чтобы [схема метрики](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ search-expression-syntax.html) точно соответствует. Если «Точное совпадение» отключено, вы можете указать любое количество параметров, по которым вы хотите фильтровать. Будет возвращено до 100 показателей, соответствующих критериям фильтра.

### Динамические запросы с использованием подстановочных знаков измерения

> Доступно только в Harvest v6.5+.

В Harvest 6.5 или более поздней версии вы можете отслеживать динамический список метрик, используя подстановочный знак звездочки (\*) для одного или нескольких значений измерения.

{{< Figure src="/static/img/docs/v65/cloudwatch-dimension-wildcard.png" max-width="800px" class="docs-image--right" caption="Подстановочный знак параметра CloudWatch" >} }

В этом примере запрашиваются все метрики в пространстве имен «AWS/EC2» с именем метрики «CPUUtilization» и ЛЮБЫМ значением для измерения «InstanceId». Это может помочь вам отслеживать показатели для ресурсов AWS, таких как инстансы или контейнеры EC2. Например, когда новые экземпляры создаются как часть события автоматического масштабирования, они автоматически отображаются на графике, и вам не нужно отслеживать идентификаторы новых экземпляров. В настоящее время эта возможность ограничена получением до 100 метрик. Вы можете нажать «Показать предварительный просмотр запроса», чтобы увидеть выражение поиска, которое автоматически создается для поддержки подстановочных знаков. Чтобы узнать больше о поисковых выражениях, посетите [документацию CloudWatch] (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/search-expression-syntax.html).

По умолчанию поисковое выражение определяется таким образом, что запрашиваемые показатели должны точно соответствовать определенным именам измерений. Это означает, что в примере будут возвращены только метрики только с одним параметром с именем «InstanceId».

### Многозначные переменные шаблона

> Доступно только в Harvest v6.5+.

При определении значений измерения на основе многозначных переменных шаблона выражение поиска используется для запроса соответствующих показателей. Это позволяет использовать несколько переменных шаблона в одном запросе, а также позволяет использовать переменные шаблона для запросов, для которых отключен параметр «Точное совпадение».

Выражения поиска в настоящее время ограничены 1024 символами, поэтому ваш запрос может завершиться ошибкой, если у вас длинный список значений. Мы рекомендуем использовать подстановочный знак звездочки (*) вместо параметра «Все», если вы хотите запросить все показатели, имеющие какое-либо значение для определенного имени параметра.

Использование многозначных переменных шаблона поддерживается только для значений измерений. Использование многозначных переменных шаблона для `Region`, `Namespace` или `Metric Name` не поддерживается.

### Метрические математические выражения

Вы можете создавать новые метрики временных рядов, оперируя метриками CloudWatch с помощью математических функций. Поддерживаются арифметические операторы, унарное вычитание и другие функции, которые можно применять к метрикам CloudWatch. Более подробную информацию о доступных функциях можно найти на странице [AWS Metric Math] (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html).

Например, если вы хотите применить арифметические операции к метрике, вы можете сделать это, указав идентификатор (уникальная строка) необработанной метрике, как показано ниже. Затем вы можете использовать этот идентификатор и применять к нему арифметические операции в поле «Выражение» новой метрики.

Обратите внимание, что если вы используете поле выражения для ссылки на другой запрос, например `queryA * 2`, будет невозможно создать правило оповещения на основе этого запроса.

### Период

Период — это период времени, связанный с определенной статистикой Amazon CloudWatch. Периоды определяются в секундах, допустимыми значениями периода являются 1, 5, 10, 30 или любое число, кратное 60.

Если поле периода оставлено пустым или установлено на «авто», то оно рассчитывается автоматически на основе диапазона времени. Используемая формула — «диапазон времени в секундах / 2000», а затем выполняется привязка к следующему более высокому значению в массиве предопределенных периодов «[60, 300, 900, 3600, 21 600, 86 400]». Нажав «Показать предварительный просмотр запроса» в редакторе запросов, вы увидите, какой период использовала Harvest.

### Глубокая привязка панелей Harvest к консоли CloudWatch

{{< Figure src="/static/img/docs/v65/cloudwatch-deep-linking.png" max-width="500px" class="docs-image--right" caption="CloudWatch dee
## Использование редактора запросов журналов

> **Примечание.** Доступно в Harvest v7.0+.

Чтобы запросить журналы CloudWatch, выберите регион и до 20 групп журналов, которые вы хотите запросить. Используйте основную область ввода для написания запроса на [языке запросов журналов CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)

Вы также можете писать запросы, возвращающие данные временных рядов, с помощью [команды `stats`](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_Insights-Visualizing-Log-Data.html). Делая запросы статистики в Исследовании, вы должны убедиться, что вы находитесь в режиме Исследований Метрики.

{{< Figure src="/static/img/docs/v70/explore-mode-switcher.png" max-width="500px" class="docs-image--right" caption="Переключатель режимов исследования" >} }

Справа от поля ввода запроса находится ссылка CloudWatch Logs Insights, которая открывает консоль CloudWatch Logs Insights с вашим запросом. Вы можете продолжить исследование там, если это необходимо.

{{<figure src="/static/img/docs/v70/cloudwatch-logs-deep-linking.png" max-width="500px" class="docs-image--right" caption="Диплонкирование журналов CloudWatch " >}}

### Использование переменных шаблона

Как и некоторые другие источники данных, источник данных CloudWatch поддерживает использование переменных шаблона в запросах.
См. документацию [Templating]({{< relref "../variables/_index.md" >}}) для ознакомления с функцией шаблонов и различными типами переменных шаблонов.

### Глубокая привязка панелей Harvest к консоли CloudWatch

{{<figure src="/static/img/docs/v70/cloudwatch-logs-deep-linking.png" max-width="500px" class="docs-image--right" caption="Диплонкирование журналов CloudWatch " >}}
Если вы хотите просмотреть свой запрос в консоли CloudWatch Logs Insights, просто нажмите кнопку CloudWatch Logs Insights рядом с редактором запросов.
Если вы еще не вошли в консоль CloudWatch, ссылка перенаправит вас на страницу входа. Предоставленная ссылка действительна для любой учетной записи, но правильные показатели будут отображаться только в том случае, если вы вошли в учетную запись, соответствующую выбранному источнику данных в Harvest.

### Оповещение

Поскольку запросы CloudWatch Logs могут возвращать числовые данные, например, с помощью команды `stats`, поддерживаются оповещения.
Подробнее об оповещениях Harvest см. в документации [Alerting]({{< relref "../alerting/_index.md" >}}).

## Кураторские информационные панели

Обновленный источник данных CloudWatch поставляется с предварительно настроенными информационными панелями для пяти самых популярных сервисов AWS:

- Amazon Elastic Compute Cloud «Amazon EC2»,
- Amazon Elastic Block Store `Amazon EBS`,
- AWS Lambda `AWS Lambda`,
- Журналы Amazon CloudWatch «Журналы Amazon CloudWatch» и
- Сервис реляционных баз данных Amazon «Amazon RDS».

Чтобы импортировать предварительно настроенные информационные панели, перейдите на страницу конфигурации вашего источника данных CloudWatch и щелкните вкладку «Информационные панели». Нажмите «Импорт» для панели инструментов, которую вы хотите использовать. Чтобы настроить панель мониторинга, мы рекомендуем сохранить панель под другим именем, поскольку в противном случае панель мониторинга будет перезаписана при выпуске новой версии панели мониторинга.

{{< Figure src="/static/img/docs/v65/cloudwatch-dashboard-import.png" caption="Импорт панели инструментов CloudWatch" >}}

## Шаблонные запросы

Вместо жесткого кодирования таких вещей, как имя сервера, приложения и датчика в ваших метрических запросах, вы можете использовать вместо них переменные. Переменные отображаются в виде раскрывающегося списка в верхней части панели инструментов. Эти раскрывающиеся списки упрощают изменение данных, отображаемых на панели инструментов.

См. документацию [Templating]({{< relref "../variables/_index.md" >}}) для ознакомления с функцией шаблонов и различными типами переменных шаблонов.

### Переменная запроса

Источник данных CloudWatch предоставляет следующие запросы, которые можно указать в поле «Запрос» в представлении редактирования переменных. Они позволяют вам заполнить список параметров переменной такими вещами, как «регион», «пространства имен», «метрические имена» и «ключи/значения измерений».

Вместо `региона` вы можете указать `по умолчанию`, чтобы использовать регион по умолчанию, настроенный в источнике данных для запроса,
например `метрики (AWS/DynamoDB, по умолчанию)` или `значения_параметров (по умолчанию, ..., ..., ...)`.

Подробнее о доступных размерах см.[CloudWatch Metrics and Dimensions Reference](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html).

|Имя                                                                |                   Описание                                                                                                                                                                       |
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `регионы()`                                                              | Возвращает список всех регионов AWS |
| `пространства имен()`                                                    | Возвращает список пространств имен, поддерживаемых CloudWatch. |
| `метрики (пространство имен, [регион])`                                   | Возвращает список показателей в пространстве имен. (укажите регион или используйте «по умолчанию» для пользовательских показателей) |
| `dimension_keys(пространство имен)`                                       | Возвращает список ключей измерения в пространстве имен. |
| `значения_измерения (регион, пространство имен, метрика, ключ измерения, [фильтры])` | Возвращает список значений параметров, соответствующих указанным `региону`, `пространству имен`, `метрике`, `ключу_размера`, или вы можете использовать `фильтры` измерения, чтобы получить более конкретный результат. |
| `ebs_volume_ids(регион, instance_id)`                                      | Возвращает список идентификаторов томов, соответствующих указанному региону, instance_id. |
| `ec2_instance_attribute(регион, имя_атрибута, фильтры)`                     | Возвращает список атрибутов, соответствующих указанным `region`, `attribute_name`, `filters`. |
| `resource_arns(регион, тип_ресурса, теги)`                                 | Возвращает список ARN, соответствующих указанным регионам, ресурсам и тегам. |
| `статистика()`                                                             | Возвращает список всей стандартной статистики |

Подробнее о метриках, предоставляемых CloudWatch, см. [CloudWatch documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html).

#### Примеры шаблонных запросов

Примеры запросов измерений, которые вернут список ресурсов для отдельных сервисов AWS:

| Запрос                                                                                                                        | Service          |
| ----------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| `dimension_values(us-east-1,AWS/ELB,RequestCount,LoadBalancerName)`                                                           | ELB              |
| `dimension_values(us-east-1,AWS/ElastiCache,CPUUtilization,CacheClusterId)`                                                   | ElastiCache      |
| `dimension_values(us-east-1,AWS/Redshift,CPUUtilization,ClusterIdentifier)`                                                   | RedShift         |
| `dimension_values(us-east-1,AWS/RDS,CPUUtilization,DBInstanceIdentifier)`                                                     | RDS              |
| `dimension_values(us-east-1,AWS/S3,BucketSizeBytes,BucketName)`                                                               | S3               |
| `dimension_values(us-east-1,CWAgent,disk_used_percent,device,{"InstanceId":"$instance_id"})`                                  | CloudWatch Agent |
| `resource_arns(eu-west-1,elasticloadbalancing:loadbalancer,{"elasticbeanstalk:environment-name":["myApp-dev","myApp-prod"]})` | ELB              |
| `resource_arns(eu-west-1,elasticloadbalancing:loadbalancer,{"Component":["$service"],"Environment":["$environment"]})`        | ELB              |
| `resource_arns(eu-west-1,ec2:instance,{"elasticbeanstalk:environment-name":["myApp-dev","myApp-prod"]})`                      | EC2              |

## примеры ec2_instance_attribute

### Фильтры JSON

Запрос ec2_instance_attribute использует фильтры в формате JSON.
Вы можете указать [предустановленные фильтры ec2:DescribeInstances](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html).
Обратите внимание, что фактическая фильтрация происходит на серверах Amazon, а не в Harvest.

Синтаксис фильтров:

```javascript
{ "filter_name1": [ "filter_value1" ], "filter_name2": [ "filter_value2" ] }
```

Пример `ec2_instance_attribute()` запрос

```javascript
ec2_instance_attribute(us - east - 1, InstanceId, { 'tag:Environment': ['production'] });
```

### Выбор атрибутов

Может быть возвращен только 1 атрибут на экземпляр. Можно выбрать любой плоский атрибут (т. е. если атрибут имеет единственное значение и не является объектом или массивом). Ниже приведен список доступных плоских атрибутов:

- `AmiLaunchIndex`
- `Architecture`
- `ClientToken`
- `EbsOptimized`
- `EnaSupport`
- `Hypervisor`
- `IamInstanceProfile`
- `ImageId`
- `InstanceId`
- `InstanceLifecycle`
- `InstanceType`
- `KernelId`
- `KeyName`
- `LaunchTime`
- `Platform`
- `PrivateDnsName`
- `PrivateIpAddress`
- `PublicDnsName`
- `PublicIpAddress`
- `RamdiskId`
- `RootDeviceName`
- `RootDeviceType`
- `SourceDestCheck`
- `SpotInstanceRequestId`
- `SriovNetSupport`
- `SubnetId`
- `VirtualizationType`
- `VpcId`

Теги можно выбрать, добавив перед именем тега «Теги».

Пример `ec2_instance_attribute()` запрос

```javascript
ec2_instance_attribute(us - east - 1, Tags.Name, { 'tag:Team': ['sysops'] });
```
## Использование переменных шаблона формата JSON

Некоторые запросы принимают фильтры в формате JSON, а Harvest поддерживает преобразование переменных шаблона в JSON.
Если `env = 'production', 'staging'`, следующий запрос вернет ARN экземпляров EC2, для которых тег «Environment» имеет значение «production» или «staging».

```javascript
resource_arns(us-east-1, ec2:instance, {"Environment":${env:json}})
```
## Цены

Источник данных Amazon CloudWatch для Harvest использует вызовы API CloudWatch ListMetrics и GetMetricData для получения списка и извлечения метрик.
Цены на CloudWatch Logs основаны на объеме данных, полученных, заархивированных и проанализированных с помощью запросов CloudWatch Logs Insights.
Дополнительные сведения см. на [странице с ценами на CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

Каждый раз, когда вы выбираете измерение в редакторе запросов, Harvest выдает запрос ListMetrics.
Всякий раз, когда вы вносите изменения в запросы в редакторе запросов, будет выдан один новый запрос к GetMetricData.

Обратите внимание, что для Harvest версии 6.5 или выше все запросы API к GetMetricStatistics были заменены вызовами к GetMetricData. Это изменение обеспечивает лучшую поддержку математических расчетов метрик CloudWatch и позволяет автоматически генерировать поисковые выражения при использовании подстановочных знаков или отключении параметра «Точное совпадение». Хотя GetMetricStatistics подходит для уровня бесплатного пользования API CloudWatch, это не относится к вызовам GetMetricData. Для получения дополнительной информации см. [страницу с ценами на CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

## Сервисные квоты

AWS определяет квоты или лимиты для ресурсов, действий и элементов в вашей учетной записи AWS. В зависимости от количества запросов на панели управления и количества пользователей, обращающихся к панели управления, вы можете достичь пределов использования для различных ресурсов CloudWatch и журналов CloudWatch. Обратите внимание, что квоты определяются для каждой учетной записи и региона. Если вы используете несколько регионов или настроили более одного источника данных CloudWatch для запросов к нескольким учетным записям, вам необходимо запросить увеличение квоты для каждой учетной записи и каждого региона, в котором вы достигли предела.

Чтобы запросить увеличение квоты, посетите [консоль AWS Service Quotas] (https://console.aws.amazon.com/servicequotas/home?r#!/services/monitoring/quotas/L-5E141212).

См. документацию AWS по [сервисным квотам](https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html) и [ограничениям CloudWatch](https://docs.aws.amazon.com). /AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html) для получения дополнительной информации.

## Настройте источник данных с помощью harvest.ini

В файле Harvest [configuration]({{< relref "../administration/configuration.md#aws" >}}) есть раздел `AWS`, который позволяет настроить источник данных.

### allow_auth_providers

Укажите, какие поставщики аутентификации разрешены для источника данных CloudWatch. Следующие провайдеры включены по умолчанию в OSS Harvest: «по умолчанию» (по умолчанию AWS SDK), ключи (доступ и секретный ключ), учетные данные (файл учетных данных), ec2_IAM_role (роль EC2 IAM).

### предполагаемая_роль_включена

Позволяет отключить использование роли (ARN) в источнике данных CloudWatch. По умолчанию предполагаемая роль (ARN) включена для OSS Harvest.

### list_metrics_page_limit

Когда в редакторе запросов указано пользовательское пространство имен, [List Metrics API] (https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html) используется для заполнения поля _Metrics_ и _Dimension_ поля. API разбит на страницы и возвращает до 500 результатов на страницу. Источник данных CloudWatch также ограничивает количество страниц до 500. Однако вы можете изменить это ограничение с помощью переменной `list_metrics_page_limit` в [файле конфигурации harvest](https://harvest.com/docs/harvest/latest/administration/ конфигурация/#aws).

## Настройте источник данных с предоставлением

Теперь можно настраивать источники данных с помощью файлов конфигурации системы обеспечения Harvest. Вы можете узнать больше о том, как это работает, и обо всех настройках, которые вы можете установить для источников данных, на [странице документации по подготовке]({{< relref "../administration/provisioning/#datasources" >}})

Вот несколько примеров подготовки для этого источника данных.

### Использование AWS SDK (по умолчанию)

```yaml
apiВерсия: 1
источник данных:
  - name: CloudWatch
    type: cloudwatch
    jsonData:
      authType: default
      defaultRegion: eu-west-2
```

### Использование имени профиля учетных данных (не по умолчанию)

```yaml
apiВерсия: 1

источник данных:
  - name: CloudWatch
    type: cloudwatch
    jsonData:
      authType: credentials
      defaultRegion: eu-west-2
      customMetricsNamespaces: 'CWAgent,CustomNameSpace'
      profile: secondary
```

### Использование `accessKey` и `secretKey`

```yaml
apiВерсия: 1

источник данных:
  - name: CloudWatch
    type: cloudwatch
    jsonData:
      authType: keys
      defaultRegion: eu-west-2
    secureJsonData:
      accessKey: '<your access key>'
      secretKey: '<your secret key>'
```

### Использование AWS SDK по умолчанию и ARN роли IAM для предположения
```yaml
apiВерсия: 1
источник данных:
  - name: CloudWatch
    type: cloudwatch
    jsonData:
      authType: default
      assumeRoleArn: arn:aws:iam::123456789012:root
      defaultRegion: eu-west-2
```
