CloudWatchエージェントを入れてみる

CloudWatch

CloudWatchエージェントについて

・CloudWatchエージェントとは

→EC2インスタンスにインストールしておくと様々な沢山のログ(メトリクス)の収集が可能にできるサービスです。
→Amazon EC2から標準外のメトリクス及びログの両方を収集することが可能になります。
→今までEC2の詳細なメトリクスをCloudWatch上で確認するためには。collectdのCloudWatchプラグインやCloudWatch Monitoring Script、または自身のカスタムスクリプトなどでデータを収集してCloudWatchへアップロードする必要がありました。
→新しい設定オプションにより、これまではCloudWatchコンソールもしくはAWS CLIで行っていたログイベントを保持する期間についての設定についても、CloudWatchエージェントで、保持する期間を指定できるようになっています。
デフォルトの場合は、ログは無期限に保持され、期限切れになることはありません。

CloudWatch エージェントによる CloudWatch Logs へのログ出力において、ふたつの新機能が使えるようになりました

ログフィルター式と、ログ保持期間の指定です。

前者は必要なログのみ 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

※上記コマンドを実行すると設定ウィザードが起動しますので入力してゆきます。

On which OS are you planning to use the agent?
→どのOSでエージェントを使用しますか?今回はLinux
Are you using EC2 or On-Premises hosts?
→使用しているホストはEC2とオンプレミスのどちらですか?今回はEC2
Which user are you planning to run the agent?
→エージェントを実行するユーザーはどのユーザーですか?今回はroot
Do you want to turn on StatsD daemon?
→Statsデーモン(メトリクス収集のツール)を使いたいですか?今回は追加でカスタムメトリクスを使用しますのでyes。
Which port do you want StatsD daemon to listen to? default choice: [8125]
→Statsデーモンの待ち受けるポート番号はデフォルトの8125でいいですか?今回、指定の要件は特にないので8125のまま変更しません。

※今回、これらはデフォルト値にて設定してあります。
※StatsDとは、さまざまなアプリケーションからメトリクスを収集できる一般的なオープンソースソリューションです。

Do you want to monitor metrics from CollectD?
→Collectデーモンを使ってメトリクスを収集しますか?今回は使用しません。
→メモリ監視をする必要が有る場合は、こちらのCollectデーモンによるメトリクス収集の設定が必要になります。

※この質問は今回Collectデーモンを使用してのメトリクス収集はしないのでnoとしました。

Do you want to monitor any host metrics? e.g. CPU, memory, etc.
→CPUやメモリを収集しますか?収集しておきますのでyes。
Do you want to monitor cpu metrics per core?
→コアあたりのCPUを監視しますか?yes。
Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
→メトリクスに利用可能なディメンションを利用しますか?yes。
Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolution for all metrics, but you can customize for specific metrics in the output json file.1. 1s 2. 10s 3. 30s 4. 60s
→高解像度でのメトリクスの収集間隔を選んでください。今回はデフォルトの60秒。
Which default metrics config do you want?1. Basic 2. Standard 3. Advanced 4. None
→メトリクスセットをどれにするか選択してください。今回はサービス監視の設定練習だけなので最低限なBasicにします。

※今回、これらもデフォルト値にて設定してあります。

Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items. 1. yes 2. no
→設定ファイルが作成されたので、これで良いかの確認をしています。問題無ければyesです。

※今回、これらもデフォルト値にて設定してあります。

Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) configuration file to import for migration? 1. yes 2. no
→既にCloudWatchエージェントが存在するか?新規なのでno
Do you want to monitor any log files? 1. yes 2. no
→ログファイルの監視をしたいか?したいのでyes。

以下でどのログを監視するかを聞いてきますので、今回はシステムログ「/var/log/messages」を監視する設定にし、監視する追加のログファイルは必要無いのでnoとしました。
※以降は全てデフォルトにしました。

Do you want to specify any additional log files to monitor?1. yes 2. no
→監視する追加のログファイルを指定したいか?追加の監視は今回不要なのでno。

設定ファイルが表示されます。

Do you want to store the config in the SSM parameter store?
→設定ファイルをSSMのパラメーターストアに入れていいですか?yes。
What parameter store name do you want to use to store your config? (Use ‘AmazonCloudWatch-‘ prefix if you use our managed AWS policy) default choice: [AmazonCloudWatch-linux]
→パラメーターストアの名前は何にしますか?デフォルトの[AmazonCloudWatch-linux]にします。
Which region do you want to store the config in the parameter store?
→パラメータストアのリージョンはどれにしますか?今回は東京リージョンなのでデフォルトの[ap-northeast-1]にします。
Which AWS credential should be used to send json config to parameter store?
→設定ファイルをパラメータストアに送信するためのクレデンシャルはどちらにしますか?今回はデフォルトにします。

ここまで完了すると、設定ファイルの作成は完了です。
最後に設定されたファイルは、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エージェントをインストールと設定をし、基本的な動作確認までが完了となります。お疲れ様でした。

※もしも、このあと、他の設定や実際の利用等をされない場合は、このままだと料金がかかってしまいますので、後片付け(インスタンスの停止及び削除)はしておきましょう。

プロフィール
この記事を書いた人
k_atarashi

←↑ コチラは…テレワークの時、代わりに働いてくれる!?あざらし君です(笑)

アラフィフからの運用保守未経験者の挑戦をしています。
以前は、電気通信設備系の技術者をしていました。
介護に関しては、専門外かつ現在いろいろ進行中ですが、相当苦労してきましたので、かなり詳しくなってしまいました。
今後とも、どうぞ生温かい目で見守っていただけますと幸いです。

k_atarashiをフォローする
フェイスでは一緒に働く仲間を募集しています

フェイス・ソリューション・テクノロジーズ株式会社では、一緒に働いてくれる仲間を募集しています。
いろいろな案件があるので、いろいろなことに挑戦できる会社です。
「面白いこと」に積極的なので、あなたの「面白そうなことだからやってみたい」を形にできるチャンスがあります!

CloudWatch
フェイススタッフブログ

コメント

タイトルとURLをコピーしました