はじめに
本記事はサービスの紹介とハンズオンの大きく2つの章で構成されています。
手を実際に動かして学んでいただくことを主眼としており、実際に操作して学べることに関してはハンズオンの冒頭をご確認ください。
AWSにより構築されたアプリケーションの健全性を評価するためには、リソースの利用状況とアプリケーションログの監視が必要不可欠となります。
AWSは、これらの運用監視を行うためのサービスを提供しており、これらを適切に活用することで、運用の効率化が可能となります。
本記事では、そのようなサービスの中から、特に代表的なものとして、AWS Systems ManagerとAmazon CloudWatchを取り上げます。
これらのサービスの概要について説明し、EC2インスタンスをこれらのサービスと連携させる方法を紹介します。
さらに、インスタンスから監視に必要な情報を実際に取得するためのハンズオンを実施します。
このハンズオンを通じて、AWSの運用監視サービスの活用方法とその効果を具体的に理解できます。
注意①
本資料内スクショのAWS管理コンソールのデザインは資料作成当時のものです。
デザインは今後変更される可能性があり、スクショと差異がある場合がありますのでご了承ください。
注意②
今までのハンズオン(前提条件・知識に記載)で実施した手順は基本省略して記載するのでご了承ください。
複雑な手順等は例外として記載する場合があります。
注意③
ハンズオンで作成したリソースについてはハンズオン終了後、各自削除をお願いします。
前提条件・知識
- リージョンは
ap-northeast-1(Tokyo)
ゴール
- Systems Managerの基本的な概念について理解が深まっている
- CloudWatchの基本的な概念について理解が深まっている
- EC2インスタンスとSystems Managerとの間での連携を実現する能力がある
- EC2インスタンスとCloudWatchとの間での連携を実現し、メトリクスとログを送信する能力がある
使用サービス紹介
ハンズオンで触るサービスの概要について説明します。
AWS Systems Manager
AWS Systems ManagerはEC2を中心としたAWS環境の運用を効率化するためのサービスです。
特定の設定(たとえば、エージェントをインストールするなど)を行うことで、オンプレミス環境の運用も監理できます。
Systems Managerは多様な機能を提供しています。
これらの機能は、以下のようなカテゴリ毎に分類されており、それらを適切に活用することで運用の効率化を実現できます。
- アプリケーション管理
- 変更管理
- ノード管理
- オペレーション管理
- Quick Setup
- 共有リソース
今回使用する機能について概要を説明します。
| カテゴリ | 機能 | 概要 |
|---|---|---|
| ノード管理 | フリートマネージャー | マネージドインスタンスをマネジメントコンソールから管理する機能 |
| アプリケーション管理 | パラメータストア | CloudFormationやLambdaなどで使用するパラメータを一元管理する機能 |
| ノード管理 | Run Command | マネージドインスタンス上でコマンドを実行する機能 |
用語
| 用語 | 定義 |
|---|---|
| マネージドインスタンス | Systems Managerのエージェントがインストールされ、Systems Managerの管理対象となったEC2インスタンス(オンプレサーバも含む) |
| AWS Systems Managerドキュメント | Systems Managerがマネージドインスタンスに対して実行するアクションを定義したもの |
Amazon CloudWatch
Amazon CloudWatchはAWSリソースやアプリケーションの監視をするためのサービスです。
CloudWatchは多彩な機能を提供しています。
これらの機能は、以下のようなカテゴリ毎に分類されており、それらを適切に活用することで運用の効率化を実現できます。
- 収集
- モニタリング
- アクション
- 分析
- コンプライアンスとセキュリティ
今回使用する機能について概要を説明します。
| カテゴリ | 機能 | 概要 |
|---|---|---|
| 収集・モニタリング | CloudWatch Metrics | 監視対象リソースのメトリクスの収集、集計、可視化をする機能 |
| 収集・モニタリング | CloudWatch Logs | ログの監視、保存、アクセスをする機能 |
用語
| 用語 | 定義 |
|---|---|
| メトリクス | システムパフォーマンスを示す時系列の測定値のセット |
| ログイベント | CloudWatch Logs構成要素の一つ。モニタリングしているアプリケーションやリソースによって記録されたログデータ |
| ログストリーム | CloudWatch Logs構成要素の一つ。モニタリングしているアプリケーションやリソースから送信された順序に従って集約された一連のログイベント |
| ロググループ | CloudWatch Logs構成要素の一つ。ログストリームをグルーピングしたもの |
ハンズオン
本ハンズオンでは、次の操作を体験します。
- EC2インスタンスをプロビジョニングし、SSHログインを行う
- EC2インスタンスをSystems Managerが管理できるように、IAMロールを作成し、それをアタッチする
- Systems Managerの機能を利用して、EC2インスタンスにCloudWatchエージェントをインストールし、起動する
- EC2インスタンスからCloudWatchにメトリクスが送信されていることを確認する
- EC2インスタンスからCloudWatchにログが送信されていることを確認する
EC2インスタンス起動
検索窓にec2と入力し、表示されたEC2を選択してください。
画面中央にあるインスタンスを起動ボタンをクリックしてください。
どのようなインスタンスをプロビジョニングするか設定を入力する画面が表示されます。
名前とタグセクションではインスタンスの名前、インスタンスを区別するタグを指定できます。
名前にインスタンスの名前を入力してください。今回は以下の形式で入力しました。
handson-<名前>
概要セクションでは立ち上げるインスタンス数の指定および設定の概要を確認できます。
インスタンス数はデフォルトの1のままにしてください。
アプリケーションおよび OS イメージ (Amazon マシンイメージ)セクションでは、AMI(インスタンス起動時に必要なソフトウェア設定を含むテンプレート)の選択とアーキテクチャの選択をします。
クイックスタートではAmazon Linuxが選択されていること、Amazon マシンイメージ (AMI)ではAmazon Linux 2023 AMIが選択されていることを確認してください。
アーキテクチャは64 ビット(x86)が選択されていることを確認してください。
インスタンスタイプでは、インスタンスのスペックを選択します。
t2.microが選択されていることを確認してください。
キーペア (ログイン)セクションではインスタンスにアクセスする際に使用するSSHキーペアを作るか作らないかを選択します。
キーペアなしで続行(推奨されません)を選択してください。
ネットワーク設定セクションではインスタンスがプロビジョニングされるネットワークの設定をします。
すべてデフォルト値でかまいません。
以降の設定は変更不要です。
右下インスタンスを起動ボタンをクリックしてください。
起動中画面になります。
しばらくすると以下のような表示になります。
右下すべてのインスタンスを表示ボタンをクリックしてください。
Nameがインスタンス生成時に入力したインスタンス名のものを探してください。
そのインスタンスのインスタンスの状態列の値が実行中、ステータスチェック列の値が2/2 のチェックに合格しましたになっていることを確認してください。
インスタンスのチェックボックスをチェックし、右上にある接続ボタンをクリックしてください。
EC2インスタンスへの接続方法を選択する画面が表示されます。
EC2 Instance Connectタブを選択してください。
入力はデフォルト値でかまいません。
右下接続ボタンをクリックしてください。
ブラウザの新しいタブが自動的に開き、EC2インスタンスのコンソールが表示されることを確認してください。
IAMロールの作成
検索窓にiamと入力し、表示されたIAMを選択してください。
左メニューロールを選択してください。
左上ロールの作成ボタンをクリックしてください。
信頼されたエンティティタイプセクションではAWSのサービス、ユースケースセクションのサービスまたはユースケースはEC2、ユースケースはEC2を選択してください。
右下次へボタンをクリックしてください。
検索窓にCloudWatchAgentAdminPolicy、AmazonSSMManagedInstanceCoreをそれぞれ入力し、表示された項目のチェックボックスをチェックしてください。
- CloudWatchAgentAdminPolicy:CloudWatchエージェントを使用するためのフルアクセスを持つマネージドポリシー
- AmazonSSMManagedInstanceCore:Systems Managerのコア機能を使用する権限を持つマネージドポリシー
ロールの詳細セクションでロール名を入力します。
ロール名は以下の形式で入力してください。
handson-role-<ユーザ名>
それ以降の値はデフォルト値でかまいません。
画面最下部右下ロールを作成ボタンをクリックしてください。
IAMロールアタッチ
作成したIAMロールをEC2インスタンスにアタッチします。
EC2インスタンスの一覧画面を表示してください。
各自作成したEC2インスタンスをチェックし、右上アクション、セキュリティ、IAMロールを変更を選択してください。
IAMロールのプルダウンで前工程で作成したIAMロールを選択し、右下IAMロールの更新をクリックしてください。
IAMロールの更新に成功したら、再度EC2インスタンスをチェックし、右上インスタンスの状態、インスタンスを再起動を選択してください。
ダイアログ右下再起動ボタンをクリックしてください。
EC2一覧上部に再起動に成功した旨のトーストが表示されたらOKです。
Systems ManagerにEC2インスタンスを管理させる
検索窓にsystemsと入力し、表示されたSystems Managerを選択してください。
左メニューフリートマネージャーを選択してください。
一覧に自分が生成したEC2インスタンスが表示されていることを確認してください。
また、エージェントのバージョン列の番号を確認してください。(ハンズオン作成時は3.2.2303.0でした)
EC2インスタンスにAmazonSSMManagedInstanceCoreを付与し、Systems Managerのエージェント(SSMエージェント)をインストールすることで、インスタンスはSystems Managerによって管理されます。
管理されているインスタンスは、フリートマネージャーで一覧表示されます。
AMIによっては、SSMエージェントがすでにインストールされている場合があります。
今回選択したAmazon Linux 2023は、SSMエージェントがすでにインストールされているAMIです。
SSMエージェントがプリインストールされているAMIのリストは、下記リンクに記載されています。
また、SSMエージェントが稼働しているか確認するコマンドも記載されているので試してみてください。
たとえば、Amazon Linux 2023の場合、sudo systemctl status amazon-ssm-agentを実行することで、SSMエージェントの稼働状況を確認できます。
SSMエージェントの自動更新設定
SSMエージェントは常に最新を保つことが推奨されています。
その理由は、最新の状態でなければ、Systems Managerに新たに追加された機能や変更を活用できなくなるからです。
SSMエージェントの自動更新を設定できます。
フリートマネージャーの右上設定を選択し、SSMエージェントの自動更新を選択してください。
SSMエージェントの自動更新ボタンをクリックすれば、自動更新設定の完了です。
フリートマネージャーの右上設定を選択し、すべての設定を選択してください。
エージェントの自動更新セクションで更新がいつ実行されたか、自動更新の状況など確認ができます。
設定ステータスが成功になっていれば、最初のSSMエージェントのバージョンからアップデートが行われたはずです。
確認してみます。
エージェントのバージョン列の値が3.2.2303.0から3.3.131.0になっており、バージョンアップが自動的に実行されることが確認できました。
CloudWatchエージェントのインストール
EC2インスタンスにCloudWatchエージェントをインストールします。
Systems Managerに管理されているインスタンスであれば、Systems Manager Run Commandという機能で複数インスタンスに一括でコマンドを実行できます。
CloudWatchエージェントをインストールするコマンドを実行し、インスタンスにインストールさせてみます。
Systems Manager左メニューRun Commandを選択してください。
コマンドタブを選択し、一覧右上のRun Commandボタンをクリックしてください。
コマンドドキュメントセクションの検索窓でAWS-ConfigureAWSPackageと入力し、検索結果をチェックしてください。
コマンドのパラメータセクションでは、コマンドドキュメントに付属するパッケージをインストールするかアンインストールするかなどを選択できます。
ActionがInstallになっていることを確認してください。
NameにAmazonCloudWatchAgentと入力してください。
ターゲットセクションでCloudWatchエージェントをインストールするインスタンスを指定します。
ターゲットはインスタンスを手動で選択するを選択し、インスタンス一覧で自分のインスタンスをチェックしてください。
画面最下部の実行ボタンをクリックしてください。
ターゲットにインストールコマンドが実行され、CloudWatchエージェントのインストールが開始されます。
ステータスが成功になればインストール完了です。
CloudWatchエージェントの起動
SSMパラメータストアにCloudWatchエージェントの設定をJson形式で登録します。
Systems Manager左メニューパラメータストアを選択し、右上パラメータの作成ボタンをクリックしてください。
パラメータについて入力します。
パラメータ名はAmazonCloudWatch-から始まるものでなければなりません。
今回はAmazonCloudWatch-Handson-<ユーザ名>とします。
値は下記Jsonを入力してください。
<ユーザ名>の部分は各自キャメルケース(記号なし)で入力してください。
右下パラメータの作成ボタンをクリックしてください。
設定ファイルには以下3つのセクションがあります。
それぞれの概要を説明します。
- agent:CloudWatchエージェントに関する全般的な設定を定義
- metrics:CloudWatch Metricsへ出力するメトリクス情報を定義
- logs:CloudWtch Logsへ出力するログ情報を定義
{
"agent": {
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/home/ec2-user/logs",
"log_group_name": "Handson<ユーザ名>LogGroup",
"log_stream_name": "/home/ec2-user/logs"
}
]
}
}
},
"metrics": {
"metrics_collected": {
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
再度コマンドの実行画面に遷移してください。
コマンドドキュメントセクションの検索窓でAmazonCloudWatch-ManageAgentと入力し、検索結果をチェックしてください。
コマンドのパラメータセクションでは、Actionがconfigureになっていることを確認してください。
また、Optional Configuration Sourceがssmになっていることを確認してください。
Optional Configuration Locationに先ほど登録したパラメータ名を入力してください。(AmazonCloudWatch-Handson-<ユーザ名>)
ターゲットセクションでCloudWatchエージェントを実行するインスタンスを指定します。
ターゲットはインスタンスを手動で選択するを選択し、インスタンス一覧で自分のインスタンスをチェックしてください。
画面最下部の実行ボタンをクリックし、ステータスが成功になれば完了です。
CloudWatch確認
以上の手順により、EC2インスタンスの情報(メトリクス、ログ)がCloudWatchに連携できるようになりました。
CloudWatchエージェントの起動で作成したJsonのfile_pathで指定したファイルをCloudWatchは監視します。
そのファイルに書き込みがあったら内容をCloudWatch Logsに転送します。
file_pathに何か書き込んでみましょう。
EC2インスタンス起動で実施したのと同様にEC2 Instance Connectでインスタンスにログインしてください。
以下のコマンドを実行し、file_pathに指定しているファイルに書き込みをします。
echo "Hello World" > /home/ec2-user/logs
検索窓にcloudwatchと入力し、表示されたCloudWatchを選択してください。
左メニューロググループを選択し、検索窓にはCloudWatchエージェントの起動で作成したJsonのlog_group_nameの値を入力してください。
表示されているロググループ名のリンクをクリックしてください。
CloudWatchエージェントの起動で作成したJsonのlog_stream_nameの値と同じログストリームが表示されているのでリンクをクリックしてください。
ログ一覧にLinuxコマンドで書き込んだ文字列が表示されていることを確認してください。
続いて、EC2インスタンスのメトリクスの確認をします。
左メニューすべてのメトリクスを選択し、プルダウンはTokyo、検索窓にEC2と入力し、エンターキーを押してください。
表示されているEC2 > インスタンス別メトリクスを選択してください。
インスタンス名毎のEC2メトリクスの情報がこの一覧から閲覧できます。
インスタンス名が自分のインスタンス、メトリクス名がCPUUtilizationである行をチェックしてください。
EC2インスタンスのCPU利用率が上部グラフに表示されました。
EC2インスタンスの停止
注意
今回作成したEC2インスタンスは次回以降のハンズオンで使用する予定です。
そのため、EC2インスタンスの「終了」ではなく、「停止」をしています。
もし、今後インスタンスを使用する予定がなければ、インスタンスの「終了」をしてください。
EC2インスタンスは起動している間料金が掛かります。そのため、使用しないときはインスタンスを停止します。
正確に言うと起動時間に対する料金のほか、EC2についているストレージ(EBS)に対する料金、付与されているパブリックIPに対する料金、外部通信に対する料金などがかかります。
EC2インスタンスの一覧画面に遷移してください。
自分のインスタンスをチェックし、インスタンスの状態、インスタンスの停止を選択してください。
確認画面が出ます。
停止ボタンをクリックしてください。
以上の操作でインスタンスが停止されます。
参考
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/what-is-systems-manager.html
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/documents.html
https://aws.amazon.com/jp/cloudwatch/features/
https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html




















































