はじめに
以前CloudwatchでEC2のメモリ・ディスク監視だけを行う方法を調べたのですが、
その後の調べで比較的簡単にSSMのセットアップができることが分かったので、
SSMからCloudwatch Agentをインストールする方法を検証しました。
内容
作成したCloudWatchエージェントを導入してメモリとディスク監視のメトリクスをCloudWatchへ届けるところまで実施します。
CloudWatchに届いたメトリクスは15か月間消すことができないようなので注意しましょう。
事前準備
- EC2に下記のポリシーがアタッチされたロールを付与します。
CloudWatchAgentServerPolicy
AmazonSSMManagedInstanceCore
- SSMから対象のEC2に下記をRun CommandしてSSMエージェントをUpdateします。
AWS-UpdateSSMAgent
パラメータストアにCloudWatchエージェントのconfig.jsonをセットする
パラメータストアは複数のEC2などから共通的に参照することができます。つまりconfig.json
に記載するような設定を共有することができるのです。
- SSMのメニューからパラメータストアを開く
- パラメータストアの設定
- 名前:
AmazonCloudWatch-agent-config
- タイプ:
文字列
- データ型:
text
- 値:config.jsonで作成された内容
- 名前:
- パラメータの作成ボタンを押してパラメータを作成します。
値の例
AmazonCloudWatch-agent-config
{
"metrics": {
"aggregation_dimensions": [
[
"InstanceId"
]
],
"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
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
CloudWatch Agentのインストールと設定
- Run Commandで
AWSEC2-ApplicationInsightsCloudwatchAgentInstallAndConfigure
を実行します。 - 実行時にParameter Store Nameを上記で作成した
AmazonCloudWatch-agent-config
とします。
CloudWatchにてメトリクス確認
CloudWatch上でメトリクスとして、上記で指定したインスタンスのメモリやディスク空き情報が取得されているか確認します。
おわりに
EC2のディスクとメモリの監視ができてしまうわけですが、すごいところは
- 一度もEC2のOSにログインしないで設定できる
- WindowsもLinuxも関係なく設定できる
- 対象のEC2が何インスタンスあっても1回のRunCommandで設定できる
参考文献