2024.9.20
LightsailでCloudWatch Logsに保管する
こんにちは。かじです。
今回はCloudWatch LogsでLightsailのログを収集する方法について解説します。
CloudWatchLogsではEC2やオンプレミスのサーバのログを収集し保管することができる機能です。EC2やオンプレミスのサーバが基本的な用途ですが、LightsailでもCloudWatch Logsでログを収集、保管することはできます。ログを収集する際にはインターネットを介してログをCloudWatchに送るだけですし、内部で動いているOSはLinuxですので、なんら問題はありません。
とりあえずやってみましょう。

1.IAMユーザーを作成する
LightsailもEC2オンプレミスと変わらないから問題ないはと言ったものの、いきなり問題発生です。LightasailにはIAMロールをアタッチできません。
解決方法は、IAMユーザーを使用することです。とりあえず、これ用のIAMユーザーを作成し、アクセスキーとシークレットキーを控えてください。
2.Lightsail側の設定
aws configureでプロファイルを作成
LightsailインスタンスにSSHで接続し、下記コマンドでaws configureプロファイルを作成します。
$ sudo aws configure --profile AmazonCloudWatchAgentプロファイル名は適当で、作成したIAMユーザーのアクセスキー・シークレットキーを入力し、リージョンは ap-northeast-1 を入力します。
CloudWatchAgentをインストール
引き続き、SSH接続したまま、下記コマンドでCloudWatchAgentをインストールします。
$ sudo yum install amazon-cloudwatch-agentと思ったのですが、yum:Command not foundとなってしまいyumが使用できないようです。ひとまず下記コマンドでOSを調べてみます。
$ cat /etc/issueどうやらOSがDebian GNU/Linux 11だったため、yumではなく、aptでパッケージ管理されているとのことでした。
下記サイトにOSごとのエージェントのインストールファイルのリンクがあり、それをwgetコマンドでダウンロードし、dpkgで解凍します。
.debファイルのダウンロードコマンド
wget https://amazoncloudwatch-agent.s3.amazonaws.com/debian/amd64/latest/amazon-cloudwatch-agent.debダウンロードファイルの解凍コマンド
sudo dpkg -i -E ./amazon-cloudwatch-agent.debCloudWatchエージェントの設定
引き続きSSH接続したまま、下記コマンドでCloudWatchAgentの設定を行います。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
このコマンドでプロンプト形式で、CloudWatchエージェントの設定が始まるのですが、Lightsailの場合、下記の項目でデフォルトの回答を選択できません。
Are you using EC2 or On-Premises hosts?
Do you want to turn on StatsD daemon?
Do you want to monitor metrics from CollectD?
Do you want to monitor cpu metrics per core? Additional CloudWatch charges may apply.
Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
Do you want to monitor any log files?
Do you want to store the config in the SSM parameter store?こちらの設定が完了すると下記パスにconfig.jsonファイルが作成されています。
CloudWatchエージェントの起動
下記コマンドでCloudWatchエージェントを起動します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m onPremise -s -c /opt/aws/amazon-cloudwatch-agent/config.json
psコマンドでCloudWatchエージェントが動いているのを確認します。
また、これでCloudWatchにアクセスしてログが収集できてることを確認できれば完了です。
⚫︎参考サイト
https://repost.aws/ja/knowledge-center/lightsail-monitor-with-cloudwatch