Для получения метрик из AWS CloudWatch для связки Grafana/Prometheus можно использовать два подхода:
- собирать метрики в Prometheus с помощью
cloudwatch_exporter
- добавить новый data-source в Grafana, и рисовать графики используя его
Ниже описывается процесс добавления data-source в Grafana и графиков AWS Load Balancer.
Содержание
IAM пользователь
Добавляем IAM пользователя с Programmatic access:
В Permissions выбираем Attach existing policies directly, жмём Create policy:
Во вкадке JSON вставляем политику:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReadingMetricsFromCloudWatch", "Effect": "Allow", "Action": [ "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics" ], "Resource": "*" }, { "Sid": "AllowReadingTagsFromEC2", "Effect": "Allow", "Action": [ "ec2:DescribeTags", "ec2:DescribeInstances" ], "Resource": "*" } ] }
Сохраняем её, например с именем grafana-datasource-ro (или любым другим по желанию, конечно):
В окне с добавлением пользователя – обновляем список политик, и выбираем созданную только что grafana-datasource-ro:
Получаем ключи:
Grafana datasource provisioning
Я использую provisioned datasource, когда они настраиваются из файла с помощью Ansible роли.
Обновляем файл, сейчас тут один датасорс – Prometehus:
apiVersion: 1 datasources: - name: Prometheus type: prometheus access: proxy orgId: 1 url: http://prometheus-server:9090/prometheus isDefault: true version: 1 editable: true
Добавляем CloudWatch:
apiVersion: 1 datasources: - name: Prometheus type: prometheus access: proxy orgId: 1 url: http://prometheus-server:9090/prometheus isDefault: true version: 1 editable: true - name: CloudWatch type: cloudwatch secureJsonData: authType: keys accessKey: AKI***WJQ secretKey: hm1***gQQ defaultRegion: us-east-2
Перезапускаем Docker сервис, в котором через Docker Compose запускаются експортёры, Prometheus сервер и сама Grafana:
[simterm]
root@monitonrig-dev:/etc/grafana/provisioning/datasources# systemctl restart prometheus.service
[/simterm]
Проверяем Grafana:
AWS ELB Application Load Balancer dashboard
И для проверки – добавим AWS ELB Application Load Balancer dashboard из готовых коллекций Grafana:
В поле Grafana.com Dashboard указываем ID 650:
Проверяем:
Готово.