Grafana: добавление CloudWatch data-sorce

By | 07/18/2018
 

Для получения метрик из 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:

root@monitonrig-dev:/etc/grafana/provisioning/datasources# systemctl restart prometheus.service

Проверяем Grafana:

AWS ELB Application Load Balancer dashboard

И для проверки – добавим AWS ELB Application Load Balancer dashboard из готовых коллекций Grafana:

В поле Grafana.com Dashboard указываем ID 650:

Проверяем:

Готово.