🚀

CloudWatchのメトリクスをPrometheusのメトリクスとして取得する

2023/08/31に公開

Yet Another CloudWatch Exporter(yace)というPrometheusのExporterを使用します。

まずはyaceをインストールするEC2にIAMロールを付与します。付与するIAMロールのポリシーは下記の通りにしてください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CloudWatchExporterPolicy",
            "Effect": "Allow",
            "Action": [
                "tag:GetResources",
                "cloudwatch:ListTagsForResource",
                "cloudwatch:GetMetricData",
                "cloudwatch:ListMetrics"
            ],
            "Resource": "*"
        }
    ]
}

ロールが付与できたら、サーバーに入ってyaceをインストールします。
wgetコマンドでインストールしましょう。

コマンド
$ wget https://github.com/nerdswords/yet-another-cloudwatch-exporter/releases/download/v0.54.1/yet-another-cloudwatch-exporter_0.54.1_Linux_x86_64.tar.gz -P /tmp



/etcディレクトリにprometheusディレクトリを作成して、そちらに解凍後、解凍前のファイルを削除します。

コマンド
$ sudo mkdir /etc/prometheus/yace -p
$ sudo tar xfz /tmp/yet-another-cloudwatch-exporter_0.54.1_Linux_x86_64.tar.gz -C /etc/prometheus/yace
$ rm /tmp/yet-another-cloudwatch-exporter_0.54.1_Linux_x86_64.tar.gz



次はyaceの設定ファイルを用意します。

コマンド
$ sudo vi /etc/prometheus/yace/config.yaml

config.yamlは下記のように書きます。

config.yaml
apiVersion: v1alpha1
discovery:
  exportedTagsOnMetrics:
    ec2:
      - Name
  jobs:
    - type: AWS/EC2
      regions:
        - ap-northeast-1
      period: 300
      length: 300
      metrics:
        - name: CPUUtilization
          statistics: [Average]
        - name: NetworkIn
          statistics: [Average, Sum]
        - name: NetworkOut
          statistics: [Average, Sum]
    - type: AWS/RDS
      regions:
        - ap-northeast-1
      period: 300
      length: 300
      metrics:
        - name: CPUUtilization
          statistics: [Maximum]

exportedTagsOnMetrics
各サービスの取得したいタグを記載します。
上記の例ではEC2のメトリクスでNameタグを取得するようにしています。

jobs

type メトリクスを取得したいサービス
region リージョン
period 取得間隔
length 取得する長さ
metrics 取得するメトリクス

yace_exporterサービスを作成します。

コマンド
$ sudo  vi /etc/systemd/system/yace_exporter.service

中身は下記の通りにします。

[Unit]
Description=yace exporter
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/etc/prometheus/yace/yace --config.file /etc/prometheus/yace/config.yaml
ExecStop=/bin/kill -INT $MAINPID
Restart = always

[Install]
WantedBy=multi-user.target

保存したら変更を反映して、起動します。

コマンド
$ sudo systemctl daemon-reload
$ sudo systemctl start yace_exporter.service

起動しているかも確認しましょう。

コマンド
$ systemctl status yace_exporter.service

起動しているのが確認出来たら、メトリクスが取得できているか確認します。
ローカルホストのポート5000番の/metricsを確認してみてください。

コマンド
$ curl localhost:5000/metrics

aws_<service_name>_<metrics_name>_<metrics_statistics>」の形式でメトリクスを所得出来ていれば成功です🎉

Discussion