EC2にCloudWatchエージェントをインストール方法
インストール方法は2種類あります。
- CLIからのインストール
- SystemManagerを使用してインストール
CLIでインストールしてみようと思います。
気が向いたらSystemManageからもやるかも
IAMロールの作成
はじめにインスタンスにアタッチされたIAM ロールに CloudWatchAgentServerPolicyがアタッチする必要があります。
信頼されたエンティティタイプをAWSサービスを選択
ユースケースをEC2選択
CloudWatchAgentServerPolicyで検索してチェックボックスにチェックを入れる
ロール名と説明を記入する
説明はでデフォルトで記入されてます
CloudWatch エージェントによるログの保持ポリシーの設定を許可をする
先ほど作成したロール名で検索してポリシー名をクリック
許可タブから許可を追加からインラインポリシーの作成をクリック
ビジュアルタブから設定する場合PutRetentionPolicyにチェックを入れる
リソースを全てにチェックを入れる
JSONから設定する場合はJSONタブを押して以下をコピペする
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "logs:PutRetentionPolicy",
"Resource": "*"
}
]
}
これでCloudWatchAgentのIAMロールにログの保持ポリシーを設定するための許可を付与できました。
あとはEC2にアタッチするだけ
CLIからインストールしてみる
amazon linux 2を使用している場合は以下のコマンドインストール
sudo yum install amazon-cloudwatch-agent
念のためyum list installed | grep amazon-cloudwatch-agent
をしています。
ウィザードを使用してCloudWatchエージェント設定ファイルを作成する
以下のコマンドを実行
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
- エージェントを Amazon EC2 インスタンスとオンプレミスサーバーのどちらにインストールするか。
- サーバーで Linux と Windows Server のどちらが実行されているか。
- エージェントがログファイルを CloudWatch Logs に送信するようにするか。持っている場合は、既存の CloudWatch Logs エージェント設定ファイルを持っているか。持っている場合、CloudWatch エージェントは、このファイルを使用してサーバーから収集するログを判別できます。
- エージェントがログファイルを CloudWatch Logs に送信する場合、それらのログファイルを保持する必要がある期間。デフォルト値の -1 にすると、ログアイテムは無期限に保持されるように設定されます。
- サーバーからメトリクスを収集する場合は、デフォルトのメトリクスセットの 1 つを監視するか、収集するメトリクスのリストをカスタマイズしますか。
- StatsD または collectd プロトコルを使用して、アプリケーションまたはサービスからカスタムメトリクスを取得しますか。
- 既存の SSM Agent から移行しますか?
などが聞かれます。
collectdのインストールをする
configはstandardで監視するファイルは/var/log/messagesを監視
パラメータストアには登録しません。
## 実際にいろいろなメトリクスを見てみる
CloudWatchからメトリクスを見てみるとconfigをstandardにしたのでメモリ使用率や使用量が見れるはずなのにない
CloudWatchAgentが起動しているか見てみる
どうやら起動していないっぽいので起動してみる
開始してすぐに停止しているのでログを見てみる
エラー内容を見るとjsonコンフィグファイルが存在しないまたは読み込めないと言われている
lsで実際に見てみる
[ec2-user@ip-10-0-0-38 ~]$ ls -l /opt/aws/amazon-cloudwatch-agent/etc/
total 4
drwxr-xr-x. 2 root root 6 Jul 18 21:53 amazon-cloudwatch-agent.d
-rw-r--r--. 1 root root 925 Jul 18 21:53 common-config.toml
どうやら設定ファイルであるjsonがなさげということが分かった
調べた結果sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
で行けたけどsystemctl status amazon-cloudwatch-agent
をするとjsonコンフィグがないとないってる
2023-08-26T13:25:24.936Z warn ec2tagger/ec2tagger.go:495 ec2tagger: Unable to describe ec2 tags for initial retrieval {"kind": "processor", "name": "ec2tagger", "pipeline": "metrics/host", "error": "UnauthorizedOperation: You are not authorized to perform this operation.\n\tstatus code: 403, request id: 33de39c8-55a4-4993-b071-4705b158252a"}
どうやら権限がなくEC2のタグが読み込めないエラーが出ていたので、EC2のタグを削除したらCWagentが表示されるようになった
参照