CloudWatchエージェントについて
・CloudWatchエージェントとは
→EC2インスタンスにインストールしておくと様々な沢山のログ(メトリクス)の収集が可能にできるサービスです。
→Amazon EC2から標準外のメトリクス及びログの両方を収集することが可能になります。
→今までEC2の詳細なメトリクスをCloudWatch上で確認するためには。collectdのCloudWatchプラグインやCloudWatch Monitoring Script、または自身のカスタムスクリプトなどでデータを収集してCloudWatchへアップロードする必要がありました。
→新しい設定オプションにより、これまではCloudWatchコンソールもしくはAWS CLIで行っていたログイベントを保持する期間についての設定についても、CloudWatchエージェントで、保持する期間を指定できるようになっています。
デフォルトの場合は、ログは無期限に保持され、期限切れになることはありません。
CloudWatch エージェントによる CloudWatch Logs へのログ出力において、ふたつの新機能が使えるようになりました。
ログフィルター式と、ログ保持期間の指定です。
- Amazon CloudWatch Agent adds Support for Log Filter Expressions
- Amazon CloudWatch Agent adds support for Configurable Log Group Retention
前者は必要なログのみ CloudWatch Logs に出力することを可能とし、見通しの良さやコスト削減に寄与します。
後者はログ保持期間を指定したい場合の追加設定が不要になり、特に動的にロググループが作成される場合の管理の手間を減らしてくれます。
・エージェント(SSM)とは
→AWS Systems Manager エージェント (SSM Agent) は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) で実行される Amazon のソフトウェアです。
→EC2などのリソースを管理してコマンドを実行したり、CLI(コマンドラインインターフェース)の操作を可能にするものです。
実際にやってみました
1.まずEC2インスタンスを設置し起動しておくか、起動可能な状態にしておきます。
2.EC2インスタンスにCloudWatch監視用のIAMロールを作成し、アタッチします。
作成時のロール名は任意ですが今回は、CloudWatchServerRoleとしました。
ロール作成時のポリシーは、以下の3つ追加しておきます。
・AmazonSSMManagedInstanceCore
・CloudWatchAgentServerPolicy
・CloudWatchAgentAdminPolicy
以下の処理をして、作成したIAMロールをEC2にアタッチします。
アタッチまで成功すると上部に以下の表示が出ます。
上記まで対応完了したときの私のインスタンスの概要は以下の通りでした。
3. CloudWatchエージェントをEC2インスタンスにインストールします。
・AmazonLinux2のOSパッケージからのインストールの想定です。
・今回は、東京リージョン(ap-northeast-1)使用での対応です。
① EC2を起動し、ターミナルにてSSH接続します。
② CloudWatchエージェントパッケージをダウンロードします。
wget https://s3.ap-northeast-1.amazonaws.com/amazoncloudwatch-agent-ap-northeast-1/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
③ CloudWatchエージェントパッケージをインストールします。
sudo rpm -U ./amazon-cloudwatch-agent.rpm
④ CloudWatchエージェントの設定ファイル内容を編集します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
※上記コマンドを実行すると設定ウィザードが起動しますので入力してゆきます。
※今回、これらはデフォルト値にて設定してあります。
※StatsDとは、さまざまなアプリケーションからメトリクスを収集できる一般的なオープンソースソリューションです。
※この質問は今回Collectデーモンを使用してのメトリクス収集はしないのでnoとしました。
※今回、これらもデフォルト値にて設定してあります。
※今回、これらもデフォルト値にて設定してあります。
以下でどのログを監視するかを聞いてきますので、今回はシステムログ「/var/log/messages」を監視する設定にし、監視する追加のログファイルは必要無いのでnoとしました。
※以降は全てデフォルトにしました。
設定ファイルが表示されます。
ここまで完了すると、設定ファイルの作成は完了です。
最後に設定されたファイルは、cat /opt/aws/amazon-cloudwatch-agent/bin/config.jsonにて確認することが可能です。
4.SSMからエージェントを起動します。(設定した内容は以下の通りです。)
以下の出力オプションはデフォルトだとS3書き込みが有効の設定となっておりますが、今回S3は未設定ですので、以下のCloudWatch出力へ変更しておきます。
※ここを変更せずに実行するとエラーが生じます。
コンソールでの出力表示は以下の内容でした。
【Output】
****** processing amazon-cloudwatch-agent ******
/opt/aws/amazon-cloudwatch-agent/bin/config-downloader –output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d –download-source ssm:AmazonCloudWatch-linux –mode ec2 –config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml –multi-config default I! Trying to detect region from ec2 D! [EC2] Found active network interface Region: ap-northeast-1 credsConfig: map[] Successfully fetched the config and saved in /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/ssm_AmazonCloudWatch-linux.tmp Start configuration validation… /opt/aws/amazon-cloudwatch-agent/bin/config-translator –input /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json –input-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d –output /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml –mode ec2 –config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml –multi-config default I! Detecting run_as_user…I! Trying to detect region from ec2 D! [EC2] Found active network interface No csm configuration found. Configuration validation first phase succeeded /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -schematest -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml Configuration validation second phase succeeded Configuration validation succeeded amazon-cloudwatch-agent has already been stopped
【Error】
2022/09/30 02:04:09 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/ssm_AmazonCloudWatch-linux.tmp … 2022/09/30 02:04:09 I! Valid Json input schema. Created symlink from /etc/systemd/system/multi-user.target.wants/amazon-cloudwatch-agent.service to /etc/systemd/system/amazon-cloudwatch-agent.service. Redirecting to /bin/systemctl restart amazon-cloudwatch-agent.service
※上記内容につきまして、Outputに「succeeded」の記載があれば正常に実行されているとみなしたので大丈夫です。
※Errorの内容に関しましては、systemctlターゲットのシンボリックリンクを作成しましたという内容の表示でしたので、問題無いと考えられます。
5.CloudWatchの内容確認をします
※ AWSのCloudWatchを選択し遷移される画面の「ロググループ」を選択します。
その中に、「messages」が存在する事が分かります。
中を開いて、ログストリームに存在するログストリーム名のリンクをクリックします。
以下に表示された通り、取得されたEC2インスタンスのログの表示がされています。
以上で今回のCloudWatchエージェントをインストールと設定をし、基本的な動作確認までが完了となります。お疲れ様でした。
コメント