CloudWatchエンドポイントがIPv6に対応したのでCloudWatchエージェントからカスタムメトリクスを送信しました
2026/01/03
目次
追記
翌日のブログで、CloudWatchエージェントのアップデートにより、CloudWatchとEC2両方のデュアルスタックエンドポイントを使用できる方法を記録しています。
素早く対応方法を知りたい方はそちらをご覧ください。
CloudWatchエージェントがEC2サービスエンドポイントのデュアルスタックに対応したのでIPv6だけでカスタムメトリクス送信できた!
ブログの状況
昨年の1月頃にこのブログのパブリックIPv4アドレスをなくしました。
当時はPutMetricDataの送信先のCloudWatchエンドポイントがIPv6に対応していなかったので、カスタムメトリクスは諦めました。
CloudWatch Logsは当時からIPv6に対応していたので、CloudWatchエージェントはログだけを送信していました。
CloudWatchエンドポイントのIPv6対応
Amazon CloudWatch が IPv6 のサポートを開始
昨年7月にCloudWatchエンドポイントがIPv6に対応しました!
他のサービス同様に既存のIPv4エンドポイントとは別に、IPv4とIPv6の両方に対応したデュアルスタックエンドポイントが追加されました。
東京リージョンの場合、既存エンドポイントはmonitoring.ap-northeast-1.amazonaws.comで、デュアルスタックエンドポイントはmonitoring.ap-northeast-1.api.awsです。
CloudWatchエージェントの設定
CloudWatchエージェントのパラメータのmetricsセクションで、endpoint_overrideを設定して、デュアルスタックエンドポイントに送信するようにしました。
|
1 2 3 |
"metrics": { "endpoint_override": "monitoring.ap-northeast-1.api.aws", |
上記の設定を/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.jsonに追記して、CloudWatchエージェントを停止して、開始しました。
停止
|
1 2 |
amazon-cloudwatch-agent-ctl -a stop |
開始
|
1 2 |
amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json |
動的なディメンションが追加できない問題が残りました
従来、カスタムメトリクスではmetricsセクションにディメンションとして、オートスケーリンググループの名前やインスタンスIDを設定します。
|
1 2 3 4 5 |
"append_dimensions": { "AutoScalingGroupName": "${aws:AutoScalingGroupName}", "InstanceId": "${aws:InstanceId}", }, |
こうしておかないと、例えば次のようなメモリ使用量を取得した場合、その次の画面のようにすべてのインスタンスから送信されたカスタムメトリクスが区別なく表示されるので本来のモニタリングの目的を果たせなくなります。
|
1 2 3 4 5 |
"mem": { "measurement": [ "mem_used_percent" ], |
そこで、append_dimensionsを設定します。
すると、次のエラーが/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.logに出力されました。
|
1 2 3 4 5 6 7 8 9 |
{ "caller": "ec2tagger/ec2tagger.go:465", "msg": "ec2tagger: Unable to describe ec2 tags for initial retrieval", "kind": "processor", "name": "ec2tagger", "pipeline": "metrics/host", "error": "RequestError: send request failed\ncaused by: Post \"https://ec2.ap-northeast-1.amazonaws.com/\": dial tcp 99.77.62.122:443: i/o timeout" } |
EC2のサービスエンドポイントhttps://ec2.ap-northeast-1.amazonaws.com/へリクエスト送信してエラーになっています。
EC2にもec2.ap-northeast-1.api.awsというIPv6対応のデュアルスタックエンドポイントはありますが、${aws:InstanceId}などを設定した際に、CloudWatchエージェントのリクエスト先をそちらへ向ける方法がわかりません。
CloudWatch Logsのログストリームのように、”{instance_id}”と設定してメタデータから取得してくれればいいのですが、これもできないようです。
このAWSアカウントの東京リージョンでは、このブログのオートスケーリンググループしか起動していないので、ディメンションなしでもいいかもしれませんが、ひとまず今日はここまでとして、また解決しましたら別ブログに記録します。
最終的に現在のamazon-cloudwatch-agent.jsonのパラメータは次のようになりました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
{ "agent": { "metrics_collection_interval": 60 "run_as_user": "root" }, "logs": { "endpoint_override": "logs.ap-northeast-1.api.aws", "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/nginx/access.log", "log_group_name": "/blog/nginx-access", "log_stream_name": "{instance_id}" }, { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "log_group_name": "/blog/cwagent", "log_stream_name": "{instance_id}" } ] } } }, "metrics": { "endpoint_override": "monitoring.ap-northeast-1.api.aws", "metrics_collected": { "collectd": { "metrics_aggregation_interval": 60 }, "disk": { "measurement": ["used_percent"], "metrics_collection_interval": 60, "resources": ["*"] }, "mem": { "measurement": ["mem_used_percent"], "metrics_collection_interval": 60 }, "statsd": { "metrics_aggregation_interval": 60, "metrics_collection_interval": 10, "service_address": ":8125" } } } } |
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
Kinesis Data AnalyticsをKinesis Data Streamsに接続してSQL検索する
Amazon Kinesis Data StreamsにTwitter検索データ …
-
-
AWS Toolkit for Eclipseで「Error Message: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.」
AWS Toolkit for Eclipseをセットアップ(2021年版)の環 …
-
-
AWS Lambda(Python)で生成した文字をAmazon Connectで音声を設定して発信する
Amazon Connectから発信する電話の音声を動的に設定します。 Lamb …
-
-
前からできましたっけ??CloudWatch Logsの保持設定を複数まとめて設定
AWSの個人アカウントで要らなさそうなリソースの断捨離をしてます。 CloudW …
-
-
「X-Tech JAWS 【第2回】~9割のX-Techと1割の優しさで切り拓く未来~」に行ってきました
「X-Tech JAWS 【第2回】~9割のX-Techと1割の優しさで切り拓く …
-
-
RDSの証明書をrds-ca-2019に更新しました
クライアント接続で署名書使ってないので、必要ないのですが、古いままなのも気持ち悪 …
-
-
AWS OrganizatonsのRCP(リソースコントロールポリシー)を設定しました
2024/11月に発表されましたリソースコントロールポリシーを管理している組織に …
-
-
EC2 Instance Connect向けのセキュリティグループのソースにプレフィックスリストを
EC2 Instance Connect、便利ですね。 キーペア不要で、EC2イ …
-
-
「Fin-JAWS 第14回 Fin人類育成計画」で話させていただきました!
「Fin-JAWS 第14回 Fin人類育成計画」で話させていただきました。 久 …
-
-
AWS Transform Webアプリケーションを有効化してみた
AWS Migration Hubが2025/11/7に新規お客様への提供が終了 …


