こんにちは。かじです。
今回は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.deb
CloudWatchエージェントの設定
引き続き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にアクセスしてログが収集できてることを確認できれば完了です。
⚫︎参考サイト