Настройка источника данных Amazon CloudWatch
В этом документе приведены инструкции по настройке источника данных Amazon CloudWatch и объясняются доступные параметры конфигурации. Общую информацию о добавлении источников данных и управлении ими см. в разделе Управление источниками данных.
Прежде чем начать
-
Для настройки источника данных CloudWatch вам нужна роль
Organization administrator. Администраторы организации также могут настроить источник данных через YAML с помощью системы provisioning Grafana. -
Grafana поставляется со встроенным плагином источника данных CloudWatch, поэтому устанавливать плагин не требуется.
-
Ознакомьтесь со своей конфигурацией безопасности CloudWatch и подготовьте необходимые сертификаты безопасности, клиентские сертификаты и клиентские ключи.
Ключевые концепции
Если вы только начинаете работать с AWS, эти термины будут встречаться по всему разделу настройки:
Добавление источника данных CloudWatch
Выполните следующие шаги, чтобы настроить новый источник данных CloudWatch:
- В меню слева нажмите Connections.
- Нажмите Add new connection
- Введите
CloudWatchв строке поиска. - Выберите CloudWatch data source.
- Нажмите Add new data source в правом верхнем углу.
Grafana перейдёт на вкладку Settings, где вы настроите конфигурацию CloudWatch.
Настройка источника данных в интерфейсе
Ниже приведены параметры конфигурации источника данных CloudWatch.
Запросы плагина Grafana к AWS выполняются от имени роли или пользователя AWS Identity and Access Management (IAM). Пользователь или роль IAM должны иметь связанные политики для выполнения определённых действий API.
Параметры аутентификации и подробности конфигурации см. в разделе Аутентификация AWS.
Access & secret key:
Для аутентификации необходимо использовать и access key ID, и secret access key.
Credentials file:
Когда вы выбираете провайдер аутентификации Credentials file, вы можете указать, какой профиль читать из общего файла учётных данных AWS.
Assume Role:
Additional Settings:
Proxy configuration:
Настройки Proxy Configuration отображаются только когда поддержка HTTP-прокси для отдельных источников данных включена опцией per_datasource_http_proxy_enabled в файле конфигурации Grafana. Они позволяют каждому источнику данных CloudWatch использовать собственный исходящий HTTP-прокси для запросов к AWS.
CloudWatch Logs:
Application Signals trace link:
Grafana автоматически создаёт ссылку на трейс в источнике данных Application Signals, если логи содержат поле @xrayTraceId. Чтобы использовать эту возможность, у вас уже должен быть настроен источник данных Application Signals. Подробности см. в документации источника данных Application Signals. Чтобы увидеть ссылку Application Signals, выберите строку лога в представлении Explore или в
панели Logs дашборда, чтобы открыть раздел с подробностями лога.
Чтобы логировать @xrayTraceId, см. документацию AWS Application Signals. Чтобы передать это поле в Grafana, ваши запросы к логам также должны содержать поле @xrayTraceId, например с помощью запроса fields @message, @xrayTraceId.
Private data source connect — только для пользователей Grafana Cloud.
После настройки параметров источника данных Amazon CloudWatch нажмите Save & test внизу, чтобы проверить соединение. При успешной проверке Grafana подтверждает, что она получила доступ к обоим API CloudWatch:
1. Successfully queried the CloudWatch metrics API.
2. Successfully queried the CloudWatch logs API.
Note
Чтобы устранять проблемы при настройке источника данных CloudWatch, проверьте файл
/var/log/grafana/grafana.log. Типичные проблемы включают недействительные учётные данные, отсутствующие регионы и учётные данные только для метрик.
Примеры политик IAM
Чтобы читать метрики CloudWatch, а также теги, инстансы, регионы и alarms EC2, вы должны предоставить Grafana разрешения через IAM. Вы можете привязать эти разрешения к роли или пользователю IAM, которого вы настроили в разделе Аутентификация AWS.
Разрешения только для метрик:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowReadingMetricsFromCloudWatch",
"Effect": "Allow",
"Action": [
"CloudWatch:DescribeAlarmsForMetric",
"CloudWatch:DescribeAlarmHistory",
"CloudWatch:DescribeAlarms",
"CloudWatch:ListMetrics",
"CloudWatch:GetMetricData",
"CloudWatch:GetInsightRuleReport"
],
"Resource": "*"
},
{
"Sid": "AllowReadingTagsInstancesRegionsFromEC2",
"Effect": "Allow",
"Action": ["ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeRegions"],
"Resource": "*"
},
{
"Sid": "AllowReadingResourcesForTags",
"Effect": "Allow",
"Action": "tag:GetResources",
"Resource": "*"
},
{
"Sid": "AllowReadingResourceMetricsFromPerformanceInsights",
"Effect": "Allow",
"Action": "pi:GetResourceMetrics",
"Resource": "*"
}
]
}
Разрешения только для логов:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowReadingLogsFromCloudWatch",
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups",
"logs:ListAggregateLogGroupSummaries",
"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": "*"
}
]
}
Разрешения для метрик и логов:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowReadingMetricsFromCloudWatch",
"Effect": "Allow",
"Action": [
"CloudWatch:DescribeAlarmsForMetric",
"CloudWatch:DescribeAlarmHistory",
"CloudWatch:DescribeAlarms",
"CloudWatch:ListMetrics",
"CloudWatch:GetMetricData",
"CloudWatch:GetInsightRuleReport"
],
"Resource": "*"
},
{
"Sid": "AllowReadingResourceMetricsFromPerformanceInsights",
"Effect": "Allow",
"Action": "pi:GetResourceMetrics",
"Resource": "*"
},
{
"Sid": "AllowReadingLogsFromCloudWatch",
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups",
"logs:ListAggregateLogGroupSummaries",
"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": "*"
}
]
}
Разрешения для наблюдаемости между учётными записями
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["oam:ListSinks", "oam:ListAttachedLinks"],
"Effect": "Allow",
"Resource": "*"
}
]
}
Note
Наблюдаемость между учётными записями позволяет получать метрики и логи из разных учётных записей в одном регионе, но вы не можете запрашивать EC2 Instance Attributes между учётными записями, поскольку они поступают из API EC2, а не из API CloudWatch.
Дополнительную информацию о настройке аутентификации см. в разделе Настройка аутентификации AWS.
Справочник разрешений
В следующей таблице объясняется, зачем нужно каждое разрешение и является ли оно обязательным, чтобы вы могли ограничить политику только теми возможностями, которые используете. Предоставляйте cloudwatch:GetMetricData только для метрик, действия logs: — только для логов, а действия EC2 и tag — только если вы используете соответствующие шаблонные переменные. Предоставление неиспользуемого разрешения не влияет на функциональность.
Когда вы используете Assume Role ARN, привяжите эти разрешения на запросы к принимаемой роли. Основным учётным данным нужно только разрешение на выполнение sts:AssumeRole. Подробности см. в разделе
Assume a role.
Защита данных CloudWatch Logs
CloudWatch Logs может защищать данные, применяя политики защиты данных групп логов. Когда защита данных включена для группы логов, любые конфиденциальные данные, соответствующие выбранным вами идентификаторам, автоматически маскируются. Чтобы просматривать замаскированные данные, ваша роль или пользователь IAM должны иметь разрешение logs:Unmask. Подробнее см. руководство AWS по маскированию конфиденциальных данных логов.
Настройка источника данных через grafana.ini
Файл конфигурации Grafana включает раздел AWS, где можно настроить параметры источника данных:
Provisioning источника данных
Вы можете определять и настраивать источник данных в YAML-файлах в рамках системы provisioning Grafana. Дополнительную информацию о provisioning и доступных параметрах конфигурации см. в разделе Provision Grafana.
Использование AWS SDK (по умолчанию):
apiVersion: 1
datasources:
- name: CloudWatch
type: CloudWatch
jsonData:
authType: default
defaultRegion: eu-west-2
Использование имени профиля учётных данных (не по умолчанию):
apiVersion: 1
datasources:
- name: CloudWatch
type: CloudWatch
jsonData:
authType: credentials
defaultRegion: eu-west-2
customMetricsNamespaces: 'CWAgent,CustomNameSpace'
profile: secondary
Использование accessKey и secretKey:
apiVersion: 1
datasources:
- name: CloudWatch
type: CloudWatch
jsonData:
authType: keys
defaultRegion: eu-west-2
secureJsonData:
accessKey: '<your access key>'
secretKey: '<your secret key>'
Использование AWS SDK Default и ARN роли IAM для принятия:
apiVersion: 1
datasources:
- name: CloudWatch
type: CloudWatch
jsonData:
authType: default
assumeRoleArn: arn:aws:iam::123456789012:root
defaultRegion: eu-west-2
Настройка с помощью Terraform
Вы можете настроить источник данных CloudWatch с помощью Terraform и провайдера Grafana для Terraform.
Дополнительную информацию о provisioning ресурсов с помощью Terraform см. в разделе Grafana as code с помощью Terraform.
В следующем примере используется метод аутентификации Access and secret key:
resource "grafana_data_source" "cloudwatch" {
name = "CloudWatch"
type = "cloudwatch"
json_data_encoded = jsonencode({
authType = "keys"
defaultRegion = "eu-west-2"
})
secure_json_data_encoded = jsonencode({
accessKey = "<YOUR_ACCESS_KEY>"
secretKey = "<YOUR_SECRET_KEY>"
})
}
В следующем примере используется метод аутентификации AWS SDK Default с принимаемой ролью:
resource "grafana_data_source" "cloudwatch" {
name = "CloudWatch"
type = "cloudwatch"
json_data_encoded = jsonencode({
authType = "default"
assumeRoleArn = "arn:aws:iam::123456789012:role/<ROLE_NAME>"
defaultRegion = "eu-west-2"
})
}
Замените плейсхолдеры своими значениями:
<YOUR_ACCESS_KEY>и<YOUR_SECRET_KEY>: access key ID и secret access key AWS для метода Access and secret key.<ROLE_NAME>: имя роли IAM, которую нужно принять.
Все доступные параметры конфигурации см. в документации ресурса data source провайдера Grafana.