こんにちは。小寺です。
AWS PrivateLinkでAmazon CloudWatch Contributor Insightを利用できるリージョンが追加になりました
https://aws.amazon.com/about-aws/whats-new/2023/07/aws-privatelink-integration-cloudwatch-insights/
アップデート内容
アジアパシフィック (ハイデラバード、ジャカルタ、メルボルン)、ヨーロッパ (スペイン、チューリッヒ)、中東 (UAE) の 6 つの新しいリージョンで、AWS PrivateLink を利用した VPC エンドポイント サービスで CloudWatch Contributor Insights を有効にできるようになりました。
Contributor Insights ルールを使用して、サービスのパフォーマンスを監視し、トラブルシューティングを行うことができます。
AWS PrivateLinkでAmazon CloudWatch Contributor Insightを有効化する機能は去年GAになっています。
今日は、どのようなことができるのか振り返ってみたいと思います。
そもそもAmazon CloudWatch Contributor Insigtとは?
CloudWatch Contributor InsightsはCloudWatch Logsから取得した時系列データを用いて、リアルタイム分析を簡単に効率よく分析できる機能です。トップ N コントリビューター、一意のコントリビューターの合計数、およびそれらの使用状況に関するメトリクスを確認できます
・CloudWatch Logs の構造化されたログデータの解析が可能
・コントリビューターデータを表⽰する時系列グラフの作成が可能
・システムのパフォーマンスに影響を与えている⼈や物を判断するのに有効
PrivateLinkのメトリックスのユースケースについて
●エンドポイントタイプが「Interface」の例
・リソースとコストのモニタリング
未使用の VPC エンドポイントを特定し、クリーンアップします。
・エンドポイント使用量のモニタリング
BytesProcessed メトリクスと ActiveConnections メトリクスを使用して、最も消費されている VPC エンドポイント、または月ごとに使用量が増加している VPC エンドポイントが特定できます。
・コストの可視性
VPC エンドポイントによって処理されたバイト数と、AWS からの毎月の明細書の料金を照らし合わせることができます。
・ホット サブネットの特定
サブネットIDフィルター ディメンションを使用して、VPC エンドポイントのトラフィックの分散が不均衡かどうかを特定できます。
同じサブネット内に多数の VPC エンドポイントがある場合、1 つのアベイラビリティーゾーン (AZ) に多くエンドポイントがないか確認可能です。エンドポイントを追加のサブネットと AZ に分散させることができます。
●エンドポイントタイプが「Gateway」の例
・接続障害のトラブルシューティング
ネットワーク インフラストラクチャをホップ(送信元と送信先の間の経路)ごとにデバッグする場合、各層のメトリクスを確認することができます。
分析を実行する際に、ActiveConnections、NewConnections、BytesProcessed、および PacketsDropped の GWLB エンドポイント メトリックを使用できるようになりました。
・GWLB エンドポイントの使用状況の追跡
GWLB エンドポイントのトラフィック パターンを追跡し、異常なネットワーク動作を検出します。
・コストの可視性
GWLBエンドポイントによって処理されたバイト数と、AWS からの毎月の明細書の料金を照らし合わせることができます。
CluodWahcからPrivateLinkのメトリックスを有効にしてみる
(1)VPCのコンソールからモニタリグしたい、エンドポイントリソースをクリックします。

(2)モニタリングタブを選びます。
CloudWatchのメトリクス設定がされていない場合は表示がされないです。
(3)CloudWatchの名前空間から「AWS/PrivateLinkEndpoints」を選びます。
メトリクスを表示してみました。

PrivateLinkEndpoints関連のメトリクスについて
・ActiveConnections
監視間隔として300秒(5分)若しくは60秒(1分)を設定できます。監視の際には、stasticsとして「Average」「Maximum」「 Minimum」を利用することを推奨します。
・BytesProcessed
監視間隔として300秒(5分)若しくは60秒(1分)を設定できます。監視の際には、stasticsとして「Sum」を利用することが推奨です。
・NewConnections
監視間隔として300秒(5分)若しくは60秒(1分)を設定できます。監視の際には、stasticsとして「Sum」を利用することが推奨です。
・PacketsDropped
監視間隔として300秒(5分)若しくは60秒(1分)を設定できます。監視の際には、stasticsとして「Sum」を利用することが推奨です。
・RstPacketsReceived
監視間隔として300秒(5分)若しくは60秒(1分)を設定できます。監視の際には、stasticsとして「Sum」を利用することが推奨です。
Contributor Insightsを有効にしてみる
今回はVPC Flowlogを利用して、あらかじめAWSが用意してあるサンプルルールを使用して設定を行なってみます。
(1) CloudWatchコンソールで、左メニューにある「インサイト」から「Contributor Insights」をクリックし、「ルールの作成」をクリックします。

(2) ルールの定義画面で「ロググループ」を選びます。ルールタイプでは、「VPCフローログ」を選びました。
元々提供されているサンプルルールには、以下があります。
・API Gateway
・CloudTrail
・Container Insightsのログ-Amazon EKS & Kubernetes
・Container Insightsのログ-Amazon ECS
・ネットワークファイアウォールのアラートログ
・ネットワークファイアウォールのフローログ
・Route53パブリックDNSクエリログ
・Route53リゾルバークエリログ
・VPCフローログ
・WAF Logs

(3)ログの形式ではJSONもしくはCLF(Common Log Format)が選べます。
※デフォルトではCLFが選択されています。

(4)フィールド(オプション)では、CLFルールの設定を追加することができます。

(5)コントリビューションでは、ログから取得する要素をログフィールド(キー)から指定できます。
最大4つまで選ぶことが可能です。
コントリビューションで指定した値がTOP Nとして表示がされる仕組みです。

今回はVPC Flow Logsをサンプルルールで指定していたので、srcaddr、dstaddrが表示されています。
(6)フィルターもオプション設定ですが、合計4つまで指定が可能です。

(7)集計では、合計か、カウントを選択することができます。
カウントは指定したコントリビューション、フィルターにマッチしたログイベントがカウントされます。
「次へ」をクリックします。

(8)ルールの詳細を指定します。
「次へ」をクリックします。

(9)プレビューで設定内容を確認して、「ルールを作成」をクリックします。

(10)ダッシュボードを確認してみると、VPC Flow Logsのアクセス数が多いIPが表示されます。
参考:
PrivateLinkでContributor Insightsを選択した場合、VpcEndpointService-ActiveConnectionsByEndpointIdのルールのグラフ化イメージです。

まとめ
AWS PrivateLinkでAmazon CloudWatch Contributor Insigtの対応リージョンが追加になりましたね。
そのアップデートを受けて、今回はCloudWatch Contributor Insightsをサンプルルールで使用してみました。
