この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは。大阪オフィスの林です。
先日、Systems Manager Quick Setup内のDistributorのライブラリを使って、CloudWatch Agentのインストールや更新を簡単に行えるようになりました。
一方、Systems Manager Quick SetupにはこれまでもHost ManagementのライブラリからCloudWatch Agentのインストールや更新を行う機能があったのですが、どういった違いがあるのかが気になり、思いついたところを順番に眺めてみましたので、備忘がてら簡単にまとめておきたいと思います。
結論
セットアップされるリソースやCloudWatch Agentをインストールする時のSystems Managerのドキュメントに違いはあるものの、最終的なCloudWatch Agentの状態としては大差が無い。(と思われる)
やってみた
まずは設定箇所の違い
- Host Managementライブラリ
- Distributorライブラリ
ソフトウェアパッケージとしてCloudWatch Agentを指定し、用意された更新頻度を選択し設定を行います。
実行されたCloudFormationの違い
- Host Managementライブラリ
関連リソースが9個作成されています。
- Distributorライブラリ
関連リソースが5個作成されています。
作成されたSystems Manager Document(自己所有)の違い
- Host Managementライブラリ
CloudFormationにて作成された4つのドキュメント。
ドキュメン名 | 説明 |
---|---|
AWSQuickSetup-CreateAndAttachIAMToInstance-xxxxx | Quick Setupとの関連付けのためのドキュメント。このドキュメントでは、必要なポリシーを持つインスタンスプロファイルのIAMロールが作成されていることを確認します。 |
AWSQuickSetup-InstallAndManageCloudWatchDocument-xxxxx | AWS-InstallAndManageCloudWatchコマンドドキュメントは、Amazon CloudWatchエージェントをインストールし、Amazon EC2インスタンスのエージェントの設定を管理するコマンドです。 |
AWSQuickSetup-UpdateExistingInstanceProfile-xxxxx | Quick Setupとの関連付けのためのドキュメント。このドキュメントは、インスタンスプロファイルのロールとポリシーを更新します。 |
UpdateCloudWatchDocument-xxxxx | CloudWatchエージェントを更新するためのドキュメントです。 |
- Distributorライブラリ
CloudFormationにて作成された1つのドキュメント。
ドキュメン名 | 説明 |
---|---|
AWSQuickSetup-Distributor-CreateAndAttachIAMToInstance-xxxxx | Quick Setupとの関連付けのためのドキュメント。このドキュメントでは、必要なポリシーを持つインスタンスプロファイルのIAMロールが作成されていることを確認します。 |
実行されたRun Commandの違い
- Host Managementライブラリ
作成されたドキュメントのAWSQuickSetup-InstallAndManageCloudWatchDocument-xxxxx
とUpdateCloudWatchDocument-xxxxx
が実行されていました。
- Distributorライブラリ
AWSマネージドのドキュメントのAWS-ConfigureAWSPackage
が実行されていました。
ClowdWatch Agentのバージョン
ここからはインストール後の状態を眺めていきたいと思います。
ClowdWatch Agentのバージョンは、共に最新のバージョンがインストールされるようです。
- Host Managementライブラリ
[ec2-user@ip-172-31-3-172 ~]$ cat /opt/aws/amazon-cloudwatch-agent/bin/CWAGENT_VERSION
1.247355.0b252062
- Distributorライブラリ
[ec2-user@ip-172-31-7-120 ~]$ cat /opt/aws/amazon-cloudwatch-agent/bin/CWAGENT_VERSION
1.247355.0b252062
Quick Setup直後のClowdWatch Agentの起動状態
- Host Managementライブラリ
デフォルトで起動状態でした。
[ec2-user@ip-172-31-3-172 ~]$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status
{
"status": "running",
"starttime": "2022-09-27T07:40:52+0000",
"configstatus": "configured",
"cwoc_status": "stopped",
"cwoc_starttime": "",
"cwoc_configstatus": "not configured",
"version": "1.247355.0b252062"
}
- Distributorライブラリ
デフォルトは停止状態でした。sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a start
で起動しておきます。
[ec2-user@ip-172-31-7-120 ~]$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status
{
"status": "stopped",
"starttime": "",
"configstatus": "not configured",
"cwoc_status": "stopped",
"cwoc_starttime": "",
"cwoc_configstatus": "not configured",
"version": "1.247355.0b252062"
}
/opt/aws/amazon-cloudwatch-agent/ 配下の構成
厳密に内容の差分をチェックしていませんが、ファイル/フォルダの構成とサイズを見る限りは同じように見えます。
- Host Managementライブラリ
[ec2-user@ip-172-31-3-172 ~]$ ll /opt/aws/amazon-cloudwatch-agent/
total 192
drwxr-xr-x 2 root root 257 Sep 26 23:22 bin
drwxr-xr-x 5 root root 40 Sep 26 23:22 cwagent-otel-collector
drwxr-xr-x 2 root root 49 Sep 26 23:22 doc
drwxr-xr-x 3 cwagent cwagent 124 Sep 26 23:22 etc
-rw-r--r-- 1 root root 1148 Aug 22 15:21 LICENSE
drwxr-xr-x 2 cwagent cwagent 77 Sep 26 23:22 logs
-rw-r--r-- 1 root root 96 Aug 22 15:21 NOTICE
-rw-r--r-- 1 root root 15620 Aug 22 15:21 RELEASE_NOTES
-rw-r--r-- 1 root root 170932 Aug 22 15:21 THIRD-PARTY-LICENSES
drwxr-xr-x 2 cwagent cwagent 41 Sep 27 22:38 var
- Distributorライブラリ(ClowdWatch Agent起動後)
なお、ClowdWatch Agent起動前はフォルダ/ファイルの構成は同じもののサイズが幾つか異なっていました。
[ec2-user@ip-172-31-7-120 ~]$ ll /opt/aws/amazon-cloudwatch-agent/
total 192
drwxr-xr-x 2 root root 257 Sep 26 23:25 bin
drwxr-xr-x 5 root root 40 Sep 26 23:25 cwagent-otel-collector
drwxr-xr-x 2 root root 49 Sep 26 23:25 doc
drwxr-xr-x 3 cwagent cwagent 124 Sep 27 22:50 etc
-rw-r--r-- 1 root root 1148 Aug 22 15:21 LICENSE
drwxr-xr-x 2 cwagent cwagent 77 Sep 27 22:50 logs
-rw-r--r-- 1 root root 96 Aug 22 15:21 NOTICE
-rw-r--r-- 1 root root 15620 Aug 22 15:21 RELEASE_NOTES
-rw-r--r-- 1 root root 170932 Aug 22 15:21 THIRD-PARTY-LICENSES
drwxr-xr-x 2 cwagent cwagent 41 Sep 27 22:50 var
/opt/aws/amazon-cloudwatch-agent/bin/ 配下の構成
厳密に内容の差分をチェックしていませんが、ファイル/フォルダの構成とサイズを見る限りは同じように見えます。
- Host Managementライブラリ
[ec2-user@ip-172-31-3-172 ~]$ ll /opt/aws/amazon-cloudwatch-agent/bin/
total 218520
-rwxr-xr-x 1 root root 86631000 Aug 22 15:21 amazon-cloudwatch-agent
-rwxr-xr-x 1 root root 10197784 Aug 22 15:21 amazon-cloudwatch-agent-config-wizard
-rwxr-xr-x 1 root root 19318 Aug 22 15:21 amazon-cloudwatch-agent-ctl
-rwxr-xr-x 1 root root 9804792 Aug 22 15:21 config-downloader
-rwxr-xr-x 1 root root 12998968 Aug 22 15:21 config-translator
-rwxr-xr-x 1 root root 91185208 Aug 22 15:21 cwagent-otel-collector
-rw-r--r-- 1 root root 18 Aug 22 15:21 CWAGENT_VERSION
-rwxr-xr-x 1 root root 12907960 Aug 22 15:21 start-amazon-cloudwatch-agent
- Distributorライブラリ
[ec2-user@ip-172-31-7-120 ~]$ ll /opt/aws/amazon-cloudwatch-agent/bin/
total 218520
-rwxr-xr-x 1 root root 86631000 Aug 22 15:21 amazon-cloudwatch-agent
-rwxr-xr-x 1 root root 10197784 Aug 22 15:21 amazon-cloudwatch-agent-config-wizard
-rwxr-xr-x 1 root root 19318 Aug 22 15:21 amazon-cloudwatch-agent-ctl
-rwxr-xr-x 1 root root 9804792 Aug 22 15:21 config-downloader
-rwxr-xr-x 1 root root 12998968 Aug 22 15:21 config-translator
-rwxr-xr-x 1 root root 91185208 Aug 22 15:21 cwagent-otel-collector
-rw-r--r-- 1 root root 18 Aug 22 15:21 CWAGENT_VERSION
-rwxr-xr-x 1 root root 12907960 Aug 22 15:21 start-amazon-cloudwatch-agent
/opt/aws/amazon-cloudwatch-agent/etc/ 配下の構成
厳密に内容の差分をチェックしていませんが、ファイル/フォルダの構成とサイズを見る限りは同じように見えます。
- Host Managementライブラリ
[ec2-user@ip-172-31-3-172 ~]$ ll /opt/aws/amazon-cloudwatch-agent/etc/
total 12
drwxr-xr-x 2 cwagent cwagent 21 Sep 26 23:22 amazon-cloudwatch-agent.d
-rw-rw-r-- 1 cwagent cwagent 1118 Sep 27 22:38 amazon-cloudwatch-agent.toml
-rw-r--r-- 1 cwagent cwagent 925 Aug 22 15:21 common-config.toml
-rw-r--r-- 1 cwagent cwagent 2 Sep 27 22:38 env-config.json
- Distributorライブラリ
なお、ClowdWatch Agent起動前はamazon-cloudwatch-agent.toml
env-config.json
のファイルは存在していませんでした。
[ec2-user@ip-172-31-7-120 ~]$ ll /opt/aws/amazon-cloudwatch-agent/etc/
total 12
drwxr-xr-x 2 cwagent cwagent 21 Sep 27 22:50 amazon-cloudwatch-agent.d
-rw-rw-r-- 1 cwagent cwagent 1118 Sep 27 22:50 amazon-cloudwatch-agent.toml
-rw-r--r-- 1 cwagent cwagent 925 Aug 22 15:21 common-config.toml
-rw-r--r-- 1 cwagent cwagent 2 Sep 27 22:50 env-config.json
amazon-cloudwatch-agent.tomlの中身の違い
共に内容は同じで、Basicで設定されるメモリのused_percent
とディスクのused_percent
が設定されていました。
- Host Managementライブラリ
[ec2-user@ip-172-31-3-172 ~]$ cat /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
[agent]
collection_jitter = "0s"
debug = false
flush_interval = "1s"
flush_jitter = "0s"
hostname = ""
interval = "60s"
logfile = "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log"
logtarget = "lumberjack"
metric_batch_size = 1000
metric_buffer_limit = 10000
omit_hostname = false
precision = ""
quiet = false
round_interval = false
[inputs]
[[inputs.disk]]
fieldpass = ["used_percent"]
tagexclude = ["mode"]
[inputs.disk.tags]
metricPath = "metrics"
[[inputs.mem]]
fieldpass = ["used_percent"]
[inputs.mem.tags]
metricPath = "metrics"
[outputs]
[[outputs.cloudwatch]]
force_flush_interval = "60s"
namespace = "CWAgent"
region = "ap-northeast-1"
tagexclude = ["host", "metricPath"]
[outputs.cloudwatch.tagpass]
metricPath = ["metrics"]
[processors]
[[processors.ec2tagger]]
ec2_instance_tag_keys = ["aws:autoscaling:groupName"]
ec2_metadata_tags = ["ImageId", "InstanceId", "InstanceType"]
refresh_interval_seconds = "0s"
[processors.ec2tagger.tagpass]
metricPath = ["metrics"]
- Distributorライブラリ
[ec2-user@ip-172-31-7-120 ~]$ cat /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
[agent]
collection_jitter = "0s"
debug = false
flush_interval = "1s"
flush_jitter = "0s"
hostname = ""
interval = "60s"
logfile = "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log"
logtarget = "lumberjack"
metric_batch_size = 1000
metric_buffer_limit = 10000
omit_hostname = false
precision = ""
quiet = false
round_interval = false
[inputs]
[[inputs.disk]]
fieldpass = ["used_percent"]
tagexclude = ["mode"]
[inputs.disk.tags]
metricPath = "metrics"
[[inputs.mem]]
fieldpass = ["used_percent"]
[inputs.mem.tags]
metricPath = "metrics"
[outputs]
[[outputs.cloudwatch]]
force_flush_interval = "60s"
namespace = "CWAgent"
region = "ap-northeast-1"
tagexclude = ["host", "metricPath"]
[outputs.cloudwatch.tagpass]
metricPath = ["metrics"]
[processors]
[[processors.ec2tagger]]
ec2_instance_tag_keys = ["aws:autoscaling:groupName"]
ec2_metadata_tags = ["ImageId", "InstanceId", "InstanceType"]
refresh_interval_seconds = "0s"
[processors.ec2tagger.tagpass]
metricPath = ["metrics"]
ちゃんとCloudWatchのメトリクスとして記録されてます。
まとめ
CloudFormationで作成されるリソースの違いや、使用するSystems Managerのドキュメントに違いはあるものの、CloudWatch Agentの設定としてはほぼほぼ大差は無さそうな印象を受けました。
1つの選択方針として更新間隔を選択する必要があるかどうかでどちらのライブラリを選択するか決めても良いかもしれません。
以上、大阪オフィスの林がお送りしました!