🚀
CloudWatchのメトリクスをPrometheusのメトリクスとして取得する
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