AWS Direct Connectの通信量をCloudWatchアラームで監視するときは、アラームを作るリージョンに注意が必要です。Direct Connectは複数リージョンへの接続に使えますが、接続にはDirect Connectロケーションに関連付けられたリージョンがあります。
CloudWatchアラームは、対象のDirect Connectメトリクスが存在するリージョンに作成します。アラームの状態変化をEventBridgeで処理する場合、最初のEventBridgeルールも同じリージョンに置きます。
結論:接続画面に表示されるリージョンを基準にする
| リソース | 配置先 |
|---|---|
| Direct ConnectのCloudWatchアラーム | 接続に表示されるリージョン |
| アラーム状態変化を受けるEventBridgeルール | CloudWatchアラームと同じリージョン |
| 通知用Lambda・SNS | 同一リージョン、またはEventBridgeで転送した集約先リージョン |
通信先のVPCやTransit Gatewayがあるリージョンから推測せず、Direct Connectコンソールの接続詳細と、CloudWatchに実際のメトリクスが表示されるリージョンを確認します。
Direct Connectロケーションとリージョンの関係
Direct Connectロケーションには関連付けられたAWSリージョンがあります。Direct Connect GatewayやパブリックVIFを使うと別リージョンへアクセスできますが、それによって接続メトリクスのリージョンが通信先へ移るわけではありません。
CloudWatchのクロスリージョンダッシュボードでは複数リージョンのメトリクスを一画面に表示できます。一方、通常のCloudWatchアラームは別リージョンのメトリクスを直接監視できません。表示場所とアラーム作成場所を混同しないことが重要です。
通信量監視で使うメトリクス
| メトリクス | 確認できること |
|---|---|
| ConnectionBpsEgress | AWS側から外向きのビットレート |
| ConnectionBpsIngress | AWS側へ入るビットレート |
| ConnectionPpsEgress / Ingress | 送受信パケットレート |
| ConnectionState | 接続状態。1がup、0がdown |
| ConnectionErrorCount | MACレベルのエラー数 |
| VirtualInterfaceBpsEgress / Ingress | VIF単位の送受信ビットレート |
| VirtualInterfaceBgpStatus | BGPピアの状態。1がup、0がdown |
IngressとEgressはAWS側から見た方向です。オンプレミス側の送受信表現と逆に見える場合があるため、アラーム名にも「AWS側Ingress」など方向を明記すると誤解を防げます。
評価期間と欠損データも決める
Direct Connectのメトリクスは既定で5分間隔に集約されます。1分間隔を指定できるメトリクスもありますが、常に5分未満で更新されるとは限りません。
帯域監視では、回線速度に対する割合を基準にし、次を決めます。
- AverageとMaximumのどちらを使うか
- 1分または5分の期間
- 連続何回の超過でALARMにするか
- 欠損データをnotBreaching、breaching、missingのどれとして扱うか
- IngressとEgressを別々に通知するか
例えば1Gbps回線で、平均800Mbps超が3期間続いたときに通知する、といった条件にします。一時的なバーストと継続的な逼迫を分けたい場合は、70%を警告、85%を重大とする二段階監視も有効です。
EventBridgeでアラーム状態変化を受ける
CloudWatchアラームと同じリージョンにEventBridgeルールを作ります。特定アラームがALARMへ変化したイベントは、次のようなパターンで絞り込めます。
{
"source": ["aws.cloudwatch"],
"detail-type": ["CloudWatch Alarm State Change"],
"detail": {
"alarmName": ["dx-connection-ingress-high"],
"state": { "value": ["ALARM"] }
}
}
ターゲットにはSNS、Lambda、SQSなどを指定できます。復旧通知も必要なら、OKへの状態変化も受信します。
別リージョンのLambdaへ通知を集約する方法
通知処理を別リージョンにまとめたい場合は、アラームのリージョンから集約先リージョンのEventBridgeイベントバスへ転送します。
- Direct Connect接続の関連リージョンにCloudWatchアラームを作る。
- 同じリージョンに状態変化を受けるEventBridgeルールを作る。
- ターゲットとして集約先リージョンのイベントバスARNを指定する。
- 集約先で受信用ルールを作り、LambdaやSNSを呼び出す。
送信側ルールのIAMロール、受信側イベントバスの権限、再試行、デッドレターキューも確認します。
冗長接続ではリンク状態と帯域を組み合わせる
複数のDirect Connect接続が別ロケーションや別リージョンに関連付けられている場合、各リージョンにアラームと送信側EventBridgeルールを配置します。通知は中央リージョンへ集約できます。
一方の接続へフェイルオーバーすると、残った接続の帯域が逼迫することがあります。そのため、ConnectionStateだけでなく、通信量、ConnectionErrorCount、VirtualInterfaceBgpStatusも組み合わせて監視します。
設定後の確認項目
- 接続に表示されるリージョンとCloudWatchの選択リージョンが一致している
- Connection IDまたはVirtual Interface IDのディメンションが正しい
- IngressとEgressをAWS側の視点で読み違えていない
- ALARMとOKの両方が通知先まで届く
- 別リージョン転送の失敗を検知できる
- 冗長接続の両方に監視が設定されている
まとめ
Direct Connectの通信量アラームは、Direct Connectロケーションに関連付けられ、接続画面に表示されるリージョンへ作成します。アラーム状態変化を受ける最初のEventBridgeルールも同じリージョンです。
通知処理を別リージョンへ集約したい場合は、EventBridgeのリージョン間転送を使います。通信量に加えてリンク状態、エラー数、VIFのBGP状態も監視すると、障害と帯域逼迫を切り分けやすくなります。
参考資料
- Monitor with Amazon CloudWatch – AWS Direct Connect
- View Direct Connect CloudWatch metrics
- AWS Direct Connect Locations
- Cross-account cross-Region CloudWatch console
- Sending and receiving events between AWS Regions in Amazon EventBridge
