#やりたいこと
Session Manager 経由で、CloudWactch Agent をインストールして、messages を CloudWatch Logs に出力する
環境
・パブリックサブネットの Amazon Linux 2
Session Manager からのアクセス許可設定
以下の通り、AWS 管理ポリシー [AmazonSSMManagedInstanceCore] を EC2 に付与する。
[AmazonEC2RoleforSSM] は非推奨になったみたい。
ステップ 2: Session Manager のアクセス許可を持つ IAM インスタンスプロファイルを確認または作成する
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-getting-started-instance-profile.html
CloudWactch Agent のインストール
以下を参考に AWS Systems Manager の Run Command でコマンドドキュメント[AWS-ConfigureAWSPackage] を実行。
「Name」は [AmazonCloudWatchAgent] を指定すること。
パッケージの 1 回インストールまたは更新 (コンソール)
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/distributor-working-with-packages-deploy.html#distributor-deploy-pkg-console
ポリシーの付与
以下の通り、AWS 管理ポリシー [CloudWatchAgentServerPolicy] を EC2 に付与する。
[AmazonSSMManagedInstanceCore] のみだと CloudWatch Logs にログ出力されない。
Amazon EC2 インスタンスの CloudWatch エージェントで使用する IAM ロールを作成する
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html#create-iam-roles-for-cloudwatch-agent-roles
CloudWactch Agent の設定
AWS Systems Manager のパラメータストアに以下のようなパラメータを登録。
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/messages",
"log_group_name": "/var/log/messages",
"log_stream_name": "{instance_id}"
}
]
}
}
}
}
上記の設定ファイルの詳細は以下を参照。
CloudWatch エージェント設定ファイルを手動で作成または編集する
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html
続いて AWS Systems Manager の Run Command でコマンドドキュメント[AmazonCloudWatch-ManageAgent] を実行。
「Optional Configuration Location」は上記のパラメータ名を指定すること。
以上で、messages が CloudWatch Logs の以下に出力される。
パラメータ | 値 |
---|---|
ロググループ | /var/log/messages |
ログストリーム | インスタンスID |
出力先を変更する場合は上記の log_group_name と log_stream_name を変更すること。
参考資料
AmazonCloudWatch-ManageAgentドキュメントでCloudWatchエージェントを設定する際の挙動を確認した
https://dev.classmethod.jp/articles/amazoncloudwatch-manageagent-ssm-run-command/