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) を使用すると、これを簡単に実現できます。

設定ステップ ​

  1. モニタリングアカウント(集約先)の設定:
    • 「シンク (Sink)」を作成し、データをどの範囲(Organization全体、特定OUなど)から受け入れるかポリシーを定義します。
  2. ソースアカウント(送信元)の設定:
    • 「リンク (Link)」を作成し、モニタリングアカウントのシンクへデータを共有する設定を行います。
    • 共有するデータの種類(メトリクスのみ、ログも含める、など)を選択できます。

これにより、運用チームは1つのダッシュボードを見るだけで、全アカウントのシステムの健全性を監視できるようになります。


まとめ 全5回にわたり、CloudWatchの機能を入門から高度な応用まで解説しました。 まずは基本を押さえ、必要に応じてこれらの高度な機能を組み合わせて、堅牢な監視システムを構築してください。