AWS Systems Manager のパラメータストアを利用した Cloudwatch Agent の設定をやってみた(Windows 編)

2023.12.25

この記事は アノテーション株式会社 AWS Technical Support Advent Calendar 2023 | Advent Calendar 2023 - Qiita 25日目の記事です。

はじめに

テクニカルサポートの 片方 です。
AWS Systems Manager のパラメータストアを利用した Cloudwatch Agent の設定を行います。その後 Memory などカスタムメトリクスの取得、ログ取得が出来ているかまで確認したいと思います。
なお、本ブログでは マネージドノード の方法については触れないことを、予めご了承ください。

参考までに、対象マネージドノード(EC2 インスタンス)のインスタンスプロファイル(ロール) には、以下のポリシーをアタッチしています。

  • "AmazonSSMManagedInstanceCore"
  • "CloudWatchAgentAdminPolicy""CloudWatchAgentServerPolicy" でも可)

やってみた

以下の順番でやってみました。

  1. Run Command による Cloudwatch Agent のインストール
  2. Run Command とパラメータストアを利用した Cloudwatch Agent の設定
  3. カスタムメトリクスの取得、ログ取得が出来ているか確認

手順については以下のドキュメントを参考に実施しました。

Run Command による Cloudwatch Agent のインストール

EC2 インスタンス: "i-0d93ca253077c3bb8 (Test-Windows-Server)"を対象に実施してきます。

AWS マネジメントコンソールから「Systems Manager」を選択します。 画面左側のメニューのフリートマネージャーより 対象EC2 インスタンスがマネージドノードになっていることを確認します。確認が終えたら、「Run Command」を選択します。

画面右上の「Run Command」をクリックします。

「AWS-ConfigureAWSPackage」を検索窓に記入するか、選択します。

「コマンドのパラメータ」部分は以下のように設定します。

  • Action は「Install」を選択します。
  • Name は「AmazonCloudWatchAgent」と入力します(大文字小文字区別あり)
  • Version は「latest」を選択します。

次に「ターゲット」からターゲットの選定方法を選択します。今回は「インスタンスを手動で選択する (Choose instances manually)」を行いました。
タグで一致するインスタンスのみに対して実行させることもできます。

「レートの制御」で並行で実行するターゲットの台数なども指定可能です。また「出力オプション」から出力結果を S3 に保存することも可能ですが、今回は設定せずにそのまま下部までスクロールさせて「実行」をクリックします。

コマンドが実行されると、「進行中」のステータスになります。

その後、ステータスが「成功」となれば Run Command による Cloud WatchAgent のインストールは完了です。

Run Command とパラメータストアを利用した Cloudwatch Agent の設定

AWS マネジメントコンソールから「Systems Manager」をクリックします。画面左側の「パラメータストア」をクリックし、「パラメータの作成」をクリックします。

パラメータストアを下記の参考例のように作成します。

  • 名前 は「AmazonCloudWatch-Windows-Parameter」と入力します。(大文字小文字区別あり)
  • 利用枠 は「標準」を選択します。
  • タイプ は「文字列」を選択します。

パラメータの値となる Cloudwatch の設定は、以下のようにしています。
("log_group_name" は "WindowsCWLogs" に設定)
ご自身でカスタマイズや名前の変更をする場合は、ドキュメント参考に設定してください。

※ パラメータ値の参考例

{
	"logs": {
		"logs_collected": {
			"windows_events": {
				"collect_list": [
					{
						"event_format": "text",
						"event_levels": [
							"VERBOSE",
							"INFORMATION",
							"WARNING",
							"ERROR",
							"CRITICAL"
						],
						"event_name": "System",
						"log_group_name": "WindowsCWLogs"
					}
				]
			}
		}
	},
	"metrics": {
		"append_dimensions": {
			"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
			"ImageId": "${aws:ImageId}",
			"InstanceId": "${aws:InstanceId}",
			"InstanceType": "${aws:InstanceType}"
		},
		"metrics_collected": {
			"LogicalDisk": {
				"measurement": [
					"% Free Space"
				],
				"metrics_collection_interval": 60,
				"resources": [
					"*"
				]
			},
			"Memory": {
				"measurement": [
					"% Committed Bytes In Use"
				],
				"metrics_collection_interval": 60
			},
			"Paging File": {
				"measurement": [
					"% Usage"
				],
				"metrics_collection_interval": 60,
				"resources": [
					"*"
				]
			},
			"PhysicalDisk": {
				"measurement": [
					"% Disk Time",
					"Disk Write Bytes/sec",
					"Disk Read Bytes/sec",
					"Disk Writes/sec",
					"Disk Reads/sec"
				],
				"metrics_collection_interval": 60,
				"resources": [
					"*"
				]
			},
			"Processor": {
				"measurement": [
					"% User Time",
					"% Idle Time",
					"% Interrupt Time"
				],
				"metrics_collection_interval": 60,
				"resources": [
					"*"
				]
			},
			"TCPv4": {
				"measurement": [
					"Connections Established"
				],
				"metrics_collection_interval": 60
			},
			"TCPv6": {
				"measurement": [
					"Connections Established"
				],
				"metrics_collection_interval": 60
			}
		}
	}
}

上記のパラメータ値の内容をコピーして入力します。完了後、「パラメータの作成」をクリックします。

パラメータストアの一覧に以下のように表示されていることを確認します。

再度 Run Command の設定を行います。ここでは、前の手順でインストールした EC2 インスタンスの Cloudwatch Agent に対して設定を行います。
画面左側のメニューの「Run Command」を選択します。
ページが切り替わったら画面右上の「Run Command」をクリックします。

「AmazonCloudWatch-ManageAgent 」を検索窓に記入するか、選択します。

「コマンドのパラメータ」の設定は以下のように行います。

  • Action は「configure」 を選択します。
  • Mode は「ec2」を選択します。
  • Optional Configuration Location は作成したパラメータ名「AmazonCloudWatch-Windows-Parameter」と入力します(大文字小文字区別あり)
  • Optional Restart は「yes」を選択します。(エージェントの設定後 Cloudwatch Agent を再起動します。)

設定する CloudWatch Agent をインストールした EC2 インスタンスを選択します。

「レートの制御」、「出力オプション」を必要に応じて設定し、最後に「実行」をクリックします。

ステータスが「成功」となれば Run Command とパラメーターストアによる Cloudwatch Agent の設定は完了です。

カスタムメトリクスの取得、ログ取得が出来ているか確認

EC2 インスタンス: "i-0d93ca253077c3bb8 (Test-Windows-Server)" を対象に実施していました。
AWS マネジメントコンソールから「CloudWatch」を開きます。左側メニュー「ロググループ」をクリックし、ロググループの一覧から「WindowsCWLogs」ロググループを選択します。

"i-0d93ca253077c3bb8" のログストリームが表示されており、ログイベントも取得出来ているので「成功」です。

カスタムメトリクスの取得についても、以下の通り確認を行いました。
結果は問題なく取得できているので「成功」しています。

まとめ

本ブログでは実施していませんが、Run Command より複数のノード(EC2 インスタンス)へ Cloudwatch Agent の一括インストールも可能です。 本ブログが誰かの参考となれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。