0
1

AWS運用ハンズオン(Systems Manager・CloudWatch編) その1

Last updated at Posted at 2024-04-04

はじめに

本記事はサービスの紹介ハンズオンの大きく2つの章で構成されています。
手を実際に動かして学んでいただくことを主眼としており、実際に操作して学べることに関してはハンズオンの冒頭をご確認ください。

AWSにより構築されたアプリケーションの健全性を評価するためには、リソースの利用状況とアプリケーションログの監視が必要不可欠となります。
AWSは、これらの運用監視を行うためのサービスを提供しており、これらを適切に活用することで、運用の効率化が可能となります。
本記事では、そのようなサービスの中から、特に代表的なものとして、AWS Systems ManagerAmazon 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を選択してください。

g1.png

画面中央にあるインスタンスを起動ボタンをクリックしてください。

g2.png

どのようなインスタンスをプロビジョニングするか設定を入力する画面が表示されます。
名前とタグセクションではインスタンスの名前、インスタンスを区別するタグを指定できます。
名前にインスタンスの名前を入力してください。今回は以下の形式で入力しました。

handson-<名前>

概要セクションでは立ち上げるインスタンス数の指定および設定の概要を確認できます。
インスタンス数はデフォルトの1のままにしてください。

g3.png

アプリケーションおよび OS イメージ (Amazon マシンイメージ)セクションでは、AMI(インスタンス起動時に必要なソフトウェア設定を含むテンプレート)の選択とアーキテクチャの選択をします。
クイックスタートではAmazon Linuxが選択されていること、Amazon マシンイメージ (AMI)ではAmazon Linux 2023 AMIが選択されていることを確認してください。
アーキテクチャ64 ビット(x86)が選択されていることを確認してください。

g4.png

インスタンスタイプでは、インスタンスのスペックを選択します。
t2.microが選択されていることを確認してください。

g5.png

キーペア (ログイン)セクションではインスタンスにアクセスする際に使用するSSHキーペアを作るか作らないかを選択します。
キーペアなしで続行(推奨されません)を選択してください。

g6.png

ネットワーク設定セクションではインスタンスがプロビジョニングされるネットワークの設定をします。
すべてデフォルト値でかまいません。

g7.png

以降の設定は変更不要です。
右下インスタンスを起動ボタンをクリックしてください。

g8.png

起動中画面になります。
しばらくすると以下のような表示になります。
右下すべてのインスタンスを表示ボタンをクリックしてください。

g9.png

Nameがインスタンス生成時に入力したインスタンス名のものを探してください。
そのインスタンスのインスタンスの状態列の値が実行中ステータスチェック列の値が2/2 のチェックに合格しましたになっていることを確認してください。
インスタンスのチェックボックスをチェックし、右上にある接続ボタンをクリックしてください。

g10.png

EC2インスタンスへの接続方法を選択する画面が表示されます。
EC2 Instance Connectタブを選択してください。
入力はデフォルト値でかまいません。
右下接続ボタンをクリックしてください。

g11.png

ブラウザの新しいタブが自動的に開き、EC2インスタンスのコンソールが表示されることを確認してください。

g12.png

IAMロールの作成

検索窓にiamと入力し、表示されたIAMを選択してください。

h1.png

左メニューロールを選択してください。

h2.png

左上ロールの作成ボタンをクリックしてください。

h3.png

信頼されたエンティティタイプセクションではAWSのサービスユースケースセクションのサービスまたはユースケースEC2ユースケースEC2を選択してください。
右下次へボタンをクリックしてください。

h4.png

検索窓にCloudWatchAgentAdminPolicyAmazonSSMManagedInstanceCoreをそれぞれ入力し、表示された項目のチェックボックスをチェックしてください。

h5.png
h6.png

ロールの詳細セクションでロール名を入力します。
ロール名は以下の形式で入力してください。

handson-role-<ユーザ名>

それ以降の値はデフォルト値でかまいません。
画面最下部右下ロールを作成ボタンをクリックしてください。

h7.png

IAMロールアタッチ

作成したIAMロールをEC2インスタンスにアタッチします。
EC2インスタンスの一覧画面を表示してください。
各自作成したEC2インスタンスをチェックし、右上アクションセキュリティIAMロールを変更を選択してください。

i1.png

IAMロールのプルダウンで前工程で作成したIAMロールを選択し、右下IAMロールの更新をクリックしてください。

i2.png

IAMロールの更新に成功したら、再度EC2インスタンスをチェックし、右上インスタンスの状態インスタンスを再起動を選択してください。

i3.png

ダイアログ右下再起動ボタンをクリックしてください。

i4.png

EC2一覧上部に再起動に成功した旨のトーストが表示されたらOKです。

i5.png

Systems ManagerにEC2インスタンスを管理させる

検索窓にsystemsと入力し、表示されたSystems Managerを選択してください。

j1.png

左メニューフリートマネージャーを選択してください。
一覧に自分が生成したEC2インスタンスが表示されていることを確認してください。
また、エージェントのバージョン列の番号を確認してください。(ハンズオン作成時は3.2.2303.0でした)

j2.png

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エージェントの稼働状況を確認できます。

j3.png

SSMエージェントの自動更新設定

SSMエージェントは常に最新を保つことが推奨されています。
その理由は、最新の状態でなければ、Systems Managerに新たに追加された機能や変更を活用できなくなるからです。
SSMエージェントの自動更新を設定できます。
フリートマネージャーの右上設定を選択し、SSMエージェントの自動更新を選択してください。

j4.png

SSMエージェントの自動更新ボタンをクリックすれば、自動更新設定の完了です。

j5.png

フリートマネージャーの右上設定を選択し、すべての設定を選択してください。

j6.png

エージェントの自動更新セクションで更新がいつ実行されたか、自動更新の状況など確認ができます。
設定ステータス成功になっていれば、最初のSSMエージェントのバージョンからアップデートが行われたはずです。
確認してみます。

j7.png

エージェントのバージョン列の値が3.2.2303.0から3.3.131.0になっており、バージョンアップが自動的に実行されることが確認できました。

j8.png

CloudWatchエージェントのインストール

EC2インスタンスにCloudWatchエージェントをインストールします。
Systems Managerに管理されているインスタンスであれば、Systems Manager Run Commandという機能で複数インスタンスに一括でコマンドを実行できます。
CloudWatchエージェントをインストールするコマンドを実行し、インスタンスにインストールさせてみます。

Systems Manager左メニューRun Commandを選択してください。
コマンドタブを選択し、一覧右上のRun Commandボタンをクリックしてください。

k1.png

コマンドドキュメントセクションの検索窓でAWS-ConfigureAWSPackageと入力し、検索結果をチェックしてください。

k2.png

コマンドのパラメータセクションでは、コマンドドキュメントに付属するパッケージをインストールするかアンインストールするかなどを選択できます。
ActionInstallになっていることを確認してください。
NameAmazonCloudWatchAgentと入力してください。

k3.png

ターゲットセクションでCloudWatchエージェントをインストールするインスタンスを指定します。
ターゲットインスタンスを手動で選択するを選択し、インスタンス一覧で自分のインスタンスをチェックしてください。

k4.png

画面最下部の実行ボタンをクリックしてください。
ターゲットにインストールコマンドが実行され、CloudWatchエージェントのインストールが開始されます。

k5.png

ステータスが成功になればインストール完了です。

k6.png

CloudWatchエージェントの起動

SSMパラメータストアにCloudWatchエージェントの設定をJson形式で登録します。
Systems Manager左メニューパラメータストアを選択し、右上パラメータの作成ボタンをクリックしてください。

l1.png

パラメータについて入力します。
パラメータ名は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"
			}
		}
	}
}

l2.png

再度コマンドの実行画面に遷移してください。
コマンドドキュメントセクションの検索窓でAmazonCloudWatch-ManageAgentと入力し、検索結果をチェックしてください。

l3.png

コマンドのパラメータセクションでは、Actionconfigureになっていることを確認してください。
また、Optional Configuration Sourcessmになっていることを確認してください。
Optional Configuration Locationに先ほど登録したパラメータ名を入力してください。(AmazonCloudWatch-Handson-<ユーザ名>

l4.png

ターゲットセクションでCloudWatchエージェントを実行するインスタンスを指定します。
ターゲットインスタンスを手動で選択するを選択し、インスタンス一覧で自分のインスタンスをチェックしてください。

l5.png

画面最下部の実行ボタンをクリックし、ステータスが成功になれば完了です。

l6.png

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

m1.png

検索窓にcloudwatchと入力し、表示されたCloudWatchを選択してください。

m2.png

左メニューロググループを選択し、検索窓にはCloudWatchエージェントの起動で作成したJsonのlog_group_nameの値を入力してください。
表示されているロググループ名のリンクをクリックしてください。

m3.png

CloudWatchエージェントの起動で作成したJsonのlog_stream_nameの値と同じログストリームが表示されているのでリンクをクリックしてください。

m4.png

ログ一覧にLinuxコマンドで書き込んだ文字列が表示されていることを確認してください。

m5.png

続いて、EC2インスタンスのメトリクスの確認をします。
左メニューすべてのメトリクスを選択し、プルダウンはTokyo、検索窓にEC2と入力し、エンターキーを押してください。
表示されているEC2 > インスタンス別メトリクスを選択してください。

m6.png

インスタンス名毎のEC2メトリクスの情報がこの一覧から閲覧できます。
インスタンス名が自分のインスタンス、メトリクス名CPUUtilizationである行をチェックしてください。
EC2インスタンスのCPU利用率が上部グラフに表示されました。

m7.png

EC2インスタンスの停止

注意
今回作成したEC2インスタンスは次回以降のハンズオンで使用する予定です。
そのため、EC2インスタンスの「終了」ではなく、「停止」をしています。
もし、今後インスタンスを使用する予定がなければ、インスタンスの「終了」をしてください。

EC2インスタンスは起動している間料金が掛かります。そのため、使用しないときはインスタンスを停止します。
正確に言うと起動時間に対する料金のほか、EC2についているストレージ(EBS)に対する料金、付与されているパブリックIPに対する料金、外部通信に対する料金などがかかります。

EC2インスタンスの一覧画面に遷移してください。
自分のインスタンスをチェックし、インスタンスの状態インスタンスの停止を選択してください。

n1.png

確認画面が出ます。
停止ボタンをクリックしてください。

n2.png

以上の操作でインスタンスが停止されます。

参考

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1