AWS CloudWatch Exporter 設定
CloudWatch Exporter使用時の料金案内
CloudWatch ExporterはAWS CloudWatch APIを通じてメトリクスを照会する方式であるため、照会されるメトリクス数とAPI呼び出し量に応じてAWS CloudWatchの使用料金が発生する場合があります。料金はCloudWatchのメトリクス、APIリクエスト、ログ、ダッシュボード、アラームなどの使用量基準で課金されます。詳細についてはAWS公式料金表をご参照ください。
事前準備
AWSアカウント要件
- AWSアカウントおよびコンソールへのアクセス権限
- IAMポリシー/ユーザー作成権限
- CloudWatchメトリクスの読み取り権限
IAMポリシーの作成
CloudWatch ExporterがAWS CloudWatch APIを呼び出すための最小権限ポリシーを作成します。
-
AWS ConsoleでIAM → ポリシー → ポリシーの作成に移動します。
-
JSONタブを選択後、以下の内容を入力します。
ノート以下はポリシーの例です。実際に使用するサービスの権限のみを含めることを推奨します。
サービス 必要な権限 備考 EC2 ec2:DescribeInstancesEBS ec2:DescribeVolumesALB/NLB/CLB elasticloadbalancing:DescribeLoadBalancersALB/NLB Target Group elasticloadbalancing:DescribeTargetGroups,elasticloadbalancing:DescribeTargetHealthターゲットグループの状態収集に必要 Auto Scaling Group autoscaling:DescribeAutoScalingGroupsRDS / Aurora rds:DescribeDBInstancesElastiCache elasticache:DescribeCacheClusters,elasticache:DescribeReplicationGroupsElastic Beanstalk elasticbeanstalk:DescribeEnvironments,elasticbeanstalk:DescribeEnvironmentHealthLambda lambda:ListFunctionsECS ecs:ListClusters,ecs:DescribeClustersS3 s3:ListAllMyBuckets{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CloudWatchReadPolicy",
"Effect": "Allow",
"Action": [
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:GetMetricData"
],
"Resource": "*"
},
{
"Sid": "ResourceDiscoveryPolicy",
"Effect": "Allow",
"Action": [
"tag:GetResources",
"ec2:DescribeInstances",
"ec2:DescribeVolumes",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeTargetGroups",
"elasticloadbalancing:DescribeTargetHealth",
"autoscaling:DescribeAutoScalingGroups",
"rds:DescribeDBInstances",
"elasticache:DescribeCacheClusters",
"elasticache:DescribeReplicationGroups",
"elasticbeanstalk:DescribeEnvironments",
"elasticbeanstalk:DescribeEnvironmentHealth",
"lambda:ListFunctions",
"s3:ListAllMyBuckets",
"ecs:ListClusters",
"ecs:DescribeClusters"
],
"Resource": "*"
}
]
}Tipstag:GetResourcesはaws_tag_select機能の使用時に必要です。タグベースフィルタリングを使用しない場合は削除しても構いません。- 最小権限の原則(Least Privilege)に従い、実際にモニタリング対象となるサービスの権限のみを含めることを推奨します。
-
ポリシー名を入力(例:
CloudWatchExporterReadOnlyPolicy)して作成します。
IAMユーザーの作成
-
AWS ConsoleでIAM → ユーザー → ユーザーの作成に移動します。
-
ユーザー名を入力します。(例:
cloudwatch-exporter) -
権限設定でポリシーを直接アタッチ →
CloudWatchExporterReadOnlyPolicyを選択します。 -
ユーザーの作成を完了します。
-
セキュリティ認証情報タブでアクセスキーの作成をクリックします。
-
ユースケースとして
AWS外部で実行されるアプリケーションを選択します。 -
Access Key IDとSecret Access Keyを保存します。
Secret Access Keyはこの画面でのみ確認できます。必ず安全な場所に保存してください。
AWS Credentialsの設定
CloudWatch ExporterがAWS APIにアクセスするための認証情報を設定します。
方法1: 環境変数方式(推奨)
export AWS_ACCESS_KEY_ID="AKIAXXXXXXXXXXXXXXXX"
export AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
永続的に適用するには~/.bashrcまたは~/.bash_profileに追記します。
echo 'export AWS_ACCESS_KEY_ID="AKIAXXXXXXXXXXXXXXXX"' >> ~/.bashrc
echo 'export AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"' >> ~/.bashrc
source ~/.bashrc
~/.bashrcに認証情報を平文で保存すると、ファイルへのアクセス権限を持つすべてのユーザーに露出する可能性があります。本番環境では方法2(Credentialsファイル方式)を推奨します。
方法2: AWS Credentialsファイル方式
# ディレクトリの作成
mkdir -p ~/.aws
# credentialsファイルの作成
cat <<EOF > ~/.aws/credentials
[default]
aws_access_key_id = AKIAXXXXXXXXXXXXXXXX
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
EOF
# configファイルの作成
cat <<EOF > ~/.aws/config
[default]
output = json
EOF
# 権限の設定
chmod 600 ~/.aws/credentials
chmod 600 ~/.aws/config
Javaのインストール
CloudWatch ExporterにはJava 11以上が必要です。
- Amazon Linux 2 / CentOS / RHEL
# Amazon Corretto 11のインストール (Amazon Linux 2)
sudo yum install -y java-11-amazon-corretto-headless
# またはOpenJDK 11のインストール
sudo yum install -y java-11-openjdk-headless
- Ubuntu / Debian
sudo apt update
sudo apt install -y openjdk-11-jre-headless
CloudWatch Exporterのインストール
作業ディレクトリの作成
sudo mkdir -p /opt/cloudwatch-exporter
sudo chown $USER:$USER /opt/cloudwatch-exporter
cd /opt/cloudwatch-exporter
JARファイルのダウンロード
最新バージョンはGitHub Releasesで確認できます。
# 最新バージョンは以下のGitHub Releasesページで確認し、VERSIONに入力してください。
# https://github.com/prometheus/cloudwatch_exporter/releases
VERSION="0.16.0"
# JARファイルのダウンロード
wget https://github.com/prometheus/cloudwatch_exporter/releases/download/v${VERSION}/cloudwatch_exporter-${VERSION}-jar-with-dependencies.jar
# ファイル名を簡素化するためのシンボリックリンクの作成
ln -sf cloudwatch_exporter-${VERSION}-jar-with-dependencies.jar cloudwatch_exporter.jar
最終的なディレクトリ構造は以下の通りです。
/opt/cloudwatch-exporter/
├── cloudwatch_exporter.jar # シンボリックリンク
├── cloudwatch_exporter-0.16.0-jar-with-dependencies.jar # 実際のJARファイル
└── config.yml # 設定ファイル(次のセクションで作成)
設定ファイルの作成(config.yml)
従来のクラウドモニタリングはトグルボタンで収集を有効化しますが、OpenMetrics方式ではconfig.ymlファイルを直接作成して収集対象とメトリクスを設定します。
主要サービス別メトリクスドキュメント
S3ストレージメトリクスは日次(daily)メトリクスのため、period_secondsを86400(1日)に設定する必要があります。
config.yml 基本構造
必須パラメータの説明
| パラメータ | 説明 | 例 |
|---|---|---|
region | AWSリージョン | ap-northeast-2 |
aws_namespace | AWSサービスのネームスペース | AWS/EC2, AWS/RDS |
aws_metric_name | 収集するメトリクス名 | CPUUtilization |
aws_dimensions | メトリクスの分類基準 | [InstanceId] |
aws_statistics | 統計タイプ | [Average, Maximum, Sum] |
period_seconds | データポイントの間隔(秒) | 300(5分) |
range_seconds | 照会する時間範囲(秒) | 600(10分) |
delay_seconds | CloudWatchデータ遅延の補正(秒) | 600(10分) |
統計タイプ(aws_statistics)
| 統計 | 説明 | 使用例 |
|---|---|---|
Average | 平均値 | CPU使用率、メモリ使用率 |
Sum | 合計 | ネットワークトラフィック、リクエスト数 |
Maximum | 最大値 | ピークCPU、最大レイテンシ |
Minimum | 最小値 | 最小空き容量 |
SampleCount | サンプル数 | データポイント数 |
全サービス推奨設定
| サービス | period_seconds | range_seconds | delay_seconds |
|---|---|---|---|
| EC2 (基本モニタリング) | 300 | 600 | 600 |
| EC2 (詳細モニタリング) | 60 | 300 | 120 |
| EBS Volume | 300 | 600 | 600 |
| RDS | 60 | 300 | 120 |
| Lambda | 60 | 300 | 120 |
| ELB / ALB / NLB | 60 | 300 | 120 |
| DynamoDB | 60 | 300 | 120 |
| CloudFront | 60 | 300 | 120 |
| ElastiCache | 60 | 300 | 120 |
| S3 (リクエストメトリクス) | 60 | 300 | 120 |
| S3 (ストレージメトリクス) | 86400 | 172800 | 600 |
| ECS | 60 | 300 | 120 |
| ECS/ContainerInsights | 60 | 300 | 120 |
| AutoScaling | 60 | 300 | 120 |
| ElasticBeanstalk | 60 | 300 | 120 |
値の設定式
period_seconds= 対象サービスのパブリッシュ間隔range_seconds≥period_seconds × 2(安全マージン、通常2〜5倍)delay_seconds≥period_seconds × 2
例外/注意事項
- EC2基本モニタリング: 5分単位がデフォルトです。
period_secondsを60に下げてもデータは5分に1回であるため、空のポイントが増えるだけです。 - EBS Volume: EC2と同様に5分単位です。
- S3ストレージメトリクス: 1日1回パブリッシュされます。
period_secondsを86400(1日)に設定し、delay_secondsも十分に長く設定してください。 - カスタムメトリクス(高解像度): 1秒単位も可能ですがコストがかかります。通常は60で十分です。