EC2 のモニタリングとオブザーバビリティ
はじめに
継続的なモニタリングとオブザーバビリティは、クラウド環境のアジリティを高め、カスタマーエクスペリエンスを向上させ、リスクを軽減します。 Wikipedia によると、オブザーバビリティ とは、システムの外部出力の知識から、システムの内部状態をどの程度推測できるかを示す指標です。 オブザーバビリティという用語自体は制御理論の分野に由来し、基本的にはシステムが生成する外部シグナルや出力を学習することで、システム内のコンポーネントの内部状態を推測できることを意味します。
モニタリングとオブザーバビリティの違いは、モニタリングがシステムが機能しているかどうかを示すのに対し、オブザーバビリティはシステムが機能していない理由を示すことです。 モニタリングは通常、事後対応的な手段ですが、オブザーバビリティの目標は、主要業績評価指標を事前対応的に改善できるようにすることです。 システムは観察されない限り、制御や最適化することはできません。 メトリクス、ログ、トレースの収集によってワークロードを計測し、適切なモニタリングとオブザーバビリティツールを使用して意味のある洞察と詳細なコンテキストを得ることで、お客様は環境を制御および最適化できます。

AWS は、お客様がモニタリングからオブザーバビリティへと移行し、エンドツーエンドのサービス可視性を実現できるようにします。 この記事では、Amazon Elastic Compute Cloud (Amazon EC2) と、AWS ネイティブおよびオープンソースツ ールを通じて AWS クラウド環境におけるサービスのモニタリングとオブザーバビリティを改善するためのベストプラクティスに焦点を当てます。
Amazon EC2
Amazon Elastic Compute Cloud (Amazon EC2) は、Amazon Web Services (AWS) クラウドにおける高度にスケーラブルなコンピューティングプラットフォームです。 Amazon EC2 は、ハードウェアへの初期投資の必要性を排除し、使用した分だけ支払うことで、お客様はより迅速にアプリケーションを開発およびデプロイできます。 EC2 が提供する主な機能には、インスタンスと呼ばれる仮想コンピューティング環境、Amazon マシンイメージと呼ばれるインスタンスの事前設定済みテンプレート、インスタンスタイプとして利用可能な CPU、メモリ、ストレージ、ネットワーク容量などのさまざまなリソース構成があります。
AWS ネイティブツールを使用したモニタリングとオブザーバビリティ
Amazon CloudWatch
Amazon CloudWatch は、AWS、ハイブリッド、オンプレミスのアプリケーションとインフラストラクチャリソースのデータと実用的なインサイトを提供する、モニタリングと管理のサービスです。
CloudWatch は、ログ、メトリクス、イベントの形式でモニタリングと運用データを収集します。
また、AWS リソース、アプリケーション、AWS およびオンプレミスサーバーで実行されるサービスの統合されたビューを提供します。
CloudWatch は、リソース使用率、アプリケーションパフォーマンス、運用状態についてシステム全体の可視性を得るのに役立ちます。

統合された CloudWatch エージェント
統合された CloudWatch エージェントは、x86-64 および ARM64 アーキテクチャを使用するほとんどのオペレーティングシステムをサポートする MIT ライセンスのオープンソースソフトウェアです。 CloudWatch エージェントは、オペレーティングシステム全体で Amazon EC2 インスタンスとハ イブリッド環境のオンプレミスサーバーからシステムレベルのメトリクスを収集し、アプリケーションやサービスからカスタムメトリクスを取得し、Amazon EC2 インスタンスとオンプレミスサーバーからログを収集するのに役立ちます。

Amazon EC2 インスタンスへの CloudWatch エージェントのインストール
コマンドラインでのインストール
CloudWatch エージェントはコマンドラインを通じてインストールできます。 様々なアーキテクチャと様々なオペレーティングシステム用の必要なパッケージはダウンロードできます。 CloudWatch エージェントが Amazon EC2 インスタンスから情報を読み取り、CloudWatch に書き込むための権限を提供する必要な IAM ロールを作成します。 必要な IAM ロールを作成したら、必要な Amazon EC2 インスタンスで CloudWatch エージェントをインストールして実行できます。
ドキュメント: コマンドラインを使用した CloudWatch エージェントのインストール
AWS Observability ワークショップ: CloudWatch エージェントのセットアップとインストール
AWS Systems Manager を使用したインストール
CloudWatch エージェントは AWS Systems Manager を通じてもインストールできます。 CloudWatch エージェントが Amazon EC2 インスタンスから情報を読み取り、CloudWatch に書き込み、AWS Systems Manager と通信するための権限を提供する必要な IAM ロールを作成します。 CloudWatch エージェントを EC2 インスタンスにインストールする前に、必要な EC2 インスタンスで SSM エージェントをインストールまたは更新します。 CloudWatch エージェントは AWS Systems Manager を通じてダウンロードできます。 収集するメトリクス(カスタムメトリクスを含む)やログを指定するために、JSON 設定ファイルを作成できます。 必要な IAM ロールと設定ファイルを作成したら、必要な Amazon EC2 インスタンスに CloudWatch エージェントをインストールして実行できます。
ハイブリッド環境のオンプレミスサーバーへの CloudWatch エージェントのインストール
サーバーがオンプレミスとクラウドの両方に存在するハイブリッドな顧客環境では、Amazon CloudWatch で統合されたオ ブザーバビリティを実現するために同様のアプローチを取ることができます。CloudWatch エージェントは Amazon S3 から直接、または AWS Systems Manager を通じてダウンロードできます。オンプレミスサーバーから Amazon CloudWatch にデータを送信するための IAM ユーザーを作成します。オンプレミスサーバーにエージェントをインストールして起動します。
Amazon CloudWatch を使用した Amazon EC2 インスタンスのモニタリング
Amazon EC2 インスタンスとアプリケーションの信頼性、可用性、パフォーマンスを維持するための重要な側面は、継続的なモニタリング です。 必要な Amazon EC2 インスタンスに CloudWatch エージェントをインストールすることで、安定した環境を維持するためにインスタンスの健全性とパフォーマンスをモニタリングすることが必要です。 ベースラインとして、CPU 使用率、ネットワーク使用率、ディスクパフォーマンス、ディスクの読み書き、メモリ使用率、ディスクスワップ使用率、ディスク容量使用率、ページファイル使用率、EC2 インスタンスのログ収集などのモニタリングが推奨されます。
基本モニタリングと詳細モニタリング
Amazon CloudWatch は、Amazon EC2 から生データを収集し、読みやすいリアルタイムに近いメトリクスに処理します。 デフォルトでは、Amazon EC2 はインスタンスの基本モニタリングとして、5 分間隔でメトリクスデータを CloudWatch に送信します。 インスタンスのメトリクスデータを 1 分間隔で CloudWatch に送信するには、インスタンスで詳細モニタリングを有効にすることができます。
モニタリングのための自動化ツールと手動ツール
AWS は、Amazon EC2 をモニタリングし、問題が発生した際に報告するための自動化ツールと手動ツールの 2 種類のツールを提供しています。 これらのツールの一部は簡単な設定が必要で、一部は手動での操作が必要です。 自動化モニタリングツール には、AWS システムステータスチェック、インスタンスステータスチェック、Amazon CloudWatch アラーム、Amazon EventBridge、Amazon CloudWatch Logs、CloudWatch エージェント、AWS Management Pack for Microsoft System Center Operations Manager が含まれます。 手動モニタリング ツールには、この記事の後のセクションで詳しく説明するダッシュボードが含まれます。
ドキュメント: 自動化および手動モニタリング
CloudWatch エージェントを使用した Amazon EC2 インスタンスからのメトリクス
メトリクスは CloudWatch の基本的な概念です。メトリクスは、CloudWatch に公開される時系列のデータポイントのセットを表します。メトリクスは監視する変数として、データポイントはその変数の時間経過による値として考えることができます。例えば、特定の EC2 インスタンスの CPU 使用率は、Amazon EC2 が提供するメトリクスの 1 つです。

CloudWatch エージェントを使用したデフォルトメトリクス
Amazon CloudWatch は Amazon EC2 インスタンスからメトリクスを収集し、AWS マネジメントコンソール、AWS CLI、または API を通じて確認できます。利用可能なメトリクスは、基本モニタリングでは 5 分間隔、詳細モニタリング(有効化時)では 1 分間隔でデータポイントが収集されます。

CloudWatch エージェントを使用したカスタムメトリクス
お客様は、API または CLI を使用して、1 分間隔の標準解像度または 1 秒間隔までの高解像度で、独自のカスタムメトリクスを CloudWatch に公開することもできます。 統合された CloudWatch エージェントは、StatsD と collectd を通じてカスタムメトリクスの取得をサポートしています。
アプリケーションやサービスからのカスタムメトリクスは、StatsD プロトコルを使用した CloudWatch エージェントで取得できます。 StatsD は、さまざまなアプリケーションからメトリクスを収集できる一般的なオープンソースソリューションです。 StatsD は、Linux と Windows の両方のサーバーをサポートしており、独自のメトリクスを計測するのに特に便利です。
アプリケーションやサービスからのカスタムメトリクスは、collectd プロトコルを使用した CloudWatch エージェントでも取得できます。 collectd は、Linux サーバーのみをサポートする一般的なオープンソースソリューションで、さまざまなアプリケーションのシステム統計情報を収集できるプラグインを備えています。 CloudWatch エージェントがすでに収集できるシステムメトリクスと、collectd からの追加メトリクスを組み合わせることで、システムとアプリケーションのモニタリング、分析、トラブルシューティングをより効果的に行うことができます。