State Manager の AWS-RunShellScript で CloudWatch エージェントを自動アップデート
はじめに
こんにちは、 岩崎 です。
下記記事でCloudWatch エージェントをState Manager で自動アップデートを設定したのですが、エージェントの UnInstall を行なっており、エージェントの設定なども更新されてしまう可能性がありました。
CloudWatchエージェントをState Managerで自動更新を設定してみた。 | DevelopersIO
本記事では、AWS-RunShellScript ドキュメントを使用し、UnInstallしない方法でバージョンの更新をしてみました。
やってみた
今回もLinuxサーバーにインストールされたCloudWatch エージェントの自動アップデートを設定してみます。
対象のEC2の設定は以下の通りです。
- AMI : Amazon Linux 2023
- AMIインスタンスタイプ : t2.micro
- SSMエージェントバージョン : 3.3.1957.0
- CloudWatch エージェントバージョン : 1.300032.0b330
Session Manager で接続し、CloudWatch エージェントのバージョンを確認すると下記のように表示されます。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status | grep -i version
State Manager で関連付けを作成
AWS Systems Managerコンソールを開き、左メニューから「State Manager」(日本語表記でステートマネージャー)を選択します。
ステートマネージャーの画面より、関連付けの作成を選択します。
次の設定は下記の通りです。
- 名前:「CloudWatchAgent-AutoUpdate-NonUnInstall」(名前は任意です。分かりやすい名前に設定しています。)
- ドキュメント:AWS-RunShellScript
パラメータは下記の通りです。
# Amazon Linux 2023 の場合
yum update -y amazon-cloudwatch-agent
# エージェントの再起動
systemctl restart amazon-cloudwatch-agent
他は初期のままです。
スケジュールは下記のように設定しています。
- 毎月第1月曜の12時
cron(0 12 ? * MON#1 *)
設定が完了したら、関連付けの作成をします。
作成が完了しましたら、ステートマネージャーの画面に戻ります。
先ほど作成した関連付けが表示されました。
表示された関連付けのステータスが成功であることを確認してください。
CloudWatch エージェントが更新されているか確認する。
ステータスが成功していたら、CloudWatch エージェントのバージョンが最新のものへとなっているか確認してみます。
Session Manager で接続し、CloudWatch エージェントのバージョンを確認したところ、正常に更新が完了していることが確認できました。
が、、、バージョンが最新ではなく、少し古いバージョンでした。
GitHubで確認すると 「v1.300054.0」が一番上にあるため、少なくとも最新ではないことがわかります。
Releases · aws/amazon-cloudwatch-agent · GitHub
yum update コマンドを使用する方法では、Yumリポジトリにあるバージョンまでしかアップデートできないようです。
commandsの修正
関連付けの編集から、「commands」を更新し、再度実行してみます。
# 最新バージョンのインストール
yum install -y https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
# エージェントの再起動
systemctl restart amazon-cloudwatch-agent
ステータスが成功になりました。
Session Manager で接続し、CloudWatch エージェントのバージョンを確認したところ、最新バージョンになりました。
まとめ
本記事では、AWS Systems Manager の State Manager を使用して、CloudWatch エージェントの自動アップデートを設定する方法をご紹介しました。
前回の AWS-ConfigureAWSPackage を使用した方法とは異なり、AWS-RunShellScript を使用することで、エージェントをアンインストールすることなくバージョンアップが可能となります。これにより、既存の設定を維持したまま更新することができます。
また、yum update コマンドではリポジトリの制限により最新バージョンまで更新できない場合があるため、S3から直接最新バージョンをインストールする方法を使用することで、確実に最新バージョンへの更新が可能となります。
この方法を活用することで、より安全に CloudWatch エージェントの自動更新を実現することができます。
参考資料
チュートリアル: Run Command で AWS CLI を使用する - AWS Systems Manager
AWS Systems Manager State Manager - AWS Systems Manager
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。