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

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

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

Amazon EC2 インスタンスへの CloudWatch エージェントのインストール
コマンドラインインストール
CloudWatch Agent はコマンドラインを通じてインストールできます。さまざまなアーキテクチャとさまざまなオペレーティングシステムに必要なパッケージはダウンロードできます。CloudWatch エージェントが Amazon EC2 インスタンスから情報を読み取り、CloudWatch に書き込むための権限を提供する必要な IAM ロールを作成します。必要な IAM ロールが作成されたら、必要な Amazon EC2 インスタンスに CloudWatch エージェントをインストールして実行できます。
ドキュメント:コマンドラインを使用した CloudWatch エージェントのインストール
AWS Observability Workshop: CloudWatch エージェントのセットアップとインストール
AWS Systems Manager を使用したインストール
CloudWatch Agent は、AWS Systems Manager を通じてインストールすることもできます。CloudWatch エージェントが Amazon EC2 インスタンスから情報を読み取り、CloudWatch に書き込み、AWS Systems Manager と通信するための権限を提供する必要な IAM ロールを作成します。EC2 インスタンスに CloudWatch エージェントをインストールする前に、必要な EC2 インスタンスに SSM エージェントをインストールまたは更新します。CloudWatch エージェントは AWS Systems Manager を通じてダウンロードできます。収集するメトリクス (カスタムメトリクスを含む) やログを指定するために JSON 設定ファイルを作成できます。必要な IAM ロールが作成され、設定ファイルが作成されたら、必要な Amazon EC2 インスタンスに CloudWatch エージェントをインストールして実行できます。
ドキュメント:AWS Systems Manager を使用した CloudWatch エージェントのインストール
AWS Observability Workshop: AWS Systems Manager Quick Setup を使用した CloudWatch エージェントのインストール
YouTube 動画: CloudWatch エージェントを使用して Amazon EC2 インスタンスからメトリクスとログを収集する
ハイブリッド環境のオンプレミスサーバーへの CloudWatch Agent のインストール
サーバーがオンプレミスとクラウドの両方に存在するハイブリッドな顧客環境では、Amazon CloudWatch で統合されたオブザーバビリティを実現するために同様のアプローチを取ることができます。CloudWatch エージェントは、Amazon S3 から直接ダウンロードするか、AWS Systems Manager を通じてダウンロードできます。オンプレミスサーバーが Amazon CloudWatch にデータを送信するための IAM ユーザーを作成します。オンプレミスサーバーにエージェントをインストールして起動します。
Amazon CloudWatch を使用した Amazon EC2 インスタンスのモニタリング
Amazon EC2 インスタンスとアプリケーションの信頼性、可用性、パフォーマンスを維持するための重要な側面は、継続的なモニタリングです。必要な Amazon EC2 インスタンスに CloudWatch Agent をインストールすることで、インスタンスの健全性とパフォーマンスを監視することが、安定した環境を維持するために必要です。ベースラインとして、CPU 使用率、ネットワーク使用率、ディスクパフォーマンス、ディスク読み取り/書き込み、メモリ使用率、ディスクスワップ使用率、ディスク容量使用率、ページファイル使用率、および EC2 インスタンスのログ収集などの項目が推奨されます。