CloudWatch 高度な機能: ネットワークと運用
このセクションでは、インフラエンジニアやSRE向けの、より専門的で高度な監視機能について解説します。
Network Monitor
ハイブリッドクラウド環境(AWSとオンプレミス間)のネットワーク接続を監視する比較的新しい機能です。
- エージェントレス: オンプレミス側に専用エージェントのインストールが不要です。
- プローブ監視: VPCからオンプレミスのIPアドレスに向けてプローブパケットを送信し、パケットロスやラウンドトリップタイム(RTT)を計測します。
- Direct Connect / VPN: 専用線やVPNを経由する通信の品質劣化を迅速に検知できます。
Synthetics (Canary)
いわゆる「外形監視」を行う機能です。ユーザーのふりをして実際にWebサイトにアクセスし、挙動を確認します。
- **Canary (カナリア) **: Node.jsやPythonのスクリプト(Puppeteer/Seleniumラッパー)を実行します。
- ユースケース:
- 稼働監視: ログインページが正常に開き、ログインできるか?
- リンク切れチェック: ページ内のリンクが404になっていないか?
- レイテンシ測定: ユーザー視点での表示速度は遅くないか?
- スクリーンショット: エラー発生時の画面キャプチャを自動保存でき、デバッグに役立ちます。
Canaryスクリプトの例 (Node.js/Puppeteer)
javascript
var synthetics = require('Synthetics');
const log = require('SyntheticsLogger');
const pageLoadBlueprint = async function () {
const URL = "https://example.com/login";
let page = await synthetics.getPage();
// ページへ移動
await synthetics.executeStep('GoToUrl', async function () {
await page.goto(URL, {waitUntil: ['domcontentloaded', 'networkidle0'], timeout: 30000});
});
// ログインボタンの存在確認
await synthetics.executeStep('VerifyLoginButton', async function () {
await page.waitForSelector('#login-btn', { timeout: 30000 });
});
};
exports.handler = async () => {
return await pageLoadBlueprint();
};このように、実際のユーザー体験(UX)に近い形での監視が可能になり、「サーバーは動いているけど画面が真っ白」といった障害を検知できます。
Metric Math (メトリクス数式)
複数のメトリクスを使って計算を行い、新しい時系列データを作成できます。
活用例
- エラー率の計算:
(Errors / Invocations) * 100でエラー率(%)をグラフ化。 - ネットワークスループットの変換: バイト単位(
Bytes)のメトリクスを* 8 / 1024 / 1024して Mbps単位に変換。 - FILL関数: データが欠損している箇所を
0や直前の値で埋めてグラフを見やすくする。
Contributor Insights
「誰が一番アクセスしているか?」「どのアドレが一番エラーを出しているか?」といった「トップN」の分析が可能です。
- VPCフローログやCloudWatch Logsから、トラフィックの多い送信元IPトップ10などをリアルタイムで可視化できます。
クロスアカウント・クロスリージョン監視
大規模な組織では、複数のAWSアカウントやリージョンにシステムが分散します。 CloudWatchの「モニタリングアカウント」を設定することで、一箇所のアカウントにデータを集約し、統合的なダッシュボードを作成することが可能です。
OAM (CloudWatch Observability Access Manager) を使用すると、これを簡単に実現できます。
設定ステップ
- モニタリングアカウント(集約先)の設定:
- 「シンク (Sink)」を作成し、データをどの範囲(Organization全体、特定OUなど)から受け入れるかポリシーを定義します。
- ソースアカウント(送信元)の設定:
- 「リンク (Link)」を作成し、モニタリングアカウントのシンクへデータを共有する設定を行います。
- 共有するデータの種類(メトリクスのみ、ログも含める、など)を選択できます。
これにより、運用チームは1つのダッシュボードを見るだけで、全アカウントのシステムの健全性を監視できるようになります。
まとめ 全5回にわたり、CloudWatchの機能を入門から高度な応用まで解説しました。 まずは基本を押さえ、必要に応じてこれらの高度な機能を組み合わせて、堅牢な監視システムを構築してください。