AWS Lightsailの監視を始めよう:CloudWatch Agentの設定ガイド

AWS

2024.5.10

Topics

はじめに

こんにちは、Shunです!

今回は、LightsailをCloudWatch Agentで監視する方法についてご紹介します!

前提

  • Lightsailインスタンスは作成済み
  • インスタンスはUbuntu 22.04で設定
  • 実施リージョンは東京

環境構築

1. IAMユーザーの作成

CloudWatchにデータを送信するための権限を持つIAMユーザーを作成します。
(LightsailではIAMロールが利用できないため、CloudWatchへメトリクスを送信する場合IAMユーザーのアクセスキーを使用する必要があります。)

任意のユーザー名を入力し、次へ進みます。このユーザーにはマネジメントコンソールへのアクセス許可は与えません。

CloudWatchAgentServerPolicyをアタッチします。

これでユーザーの作成は完了です。

2. アクセスキーの発行

アクセスキーの取り扱いは、細心の注意を払う必要があります。
本章を実施する前に、以下のドキュメントをご確認ください。

AWS アクセスキーを管理するためのベストプラクティス

アクセスキーを発行するには、作成したIAMユーザーを選択して[アクセスキーを作成]を選びます。

[その他]を選択し、[次へ]を押下します。

[説明タグ値]は設定せず、[アクセスキーを作成]を押下します。

アクセスキーとシークレットキーを控えます。シークレットキーは、後で確認できないため、.csvファイルもダウンロードしておきます。
(これらのキーは、パブリックな場所や外部から閲覧可能な場所へ決して置かないでください。

3. CloudWatch Agentの設定

ここからは本題のLightSailへCloudWatch Agentをインストールし、設定を行います。
以下からSSHキーをダウンロードします。

LightSailへは以下のコマンドを用いてログインします。

$ sudo chmod 600 [キーファイル名]
$ ssh -i [キーファイル名] ubuntu@[パブリックIP]

ブラウザを通したログインも可能ですが、接続が切れやすく、エディタに不要な改行が入る可能性があるため、コマンドラインを推奨します。

CloudWatch Agentをインストールする前に、collectdをインストールします。

$ sudo apt -y update
$ sudo apt install collectd

CloudWatch Agentをインストールします。

$ curl -LO https://s3.ap-northeast-1.amazonaws.com/amazoncloudwatch-agent-ap-northeast-1/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
$ sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

次に、AWS CLIをインストールし、権限設定を行います。

$ sudo apt-get -y install awscli
$ aws configure
AWS Access Key ID [None]: [アクセスキー]
AWS Secret Access Key [None]: [シークレットキー]
Default region name [None]: ap-northeast-1
Default output format [None]: [指定なしでも問題ないです]

CloudWatch Agentの設定を行います。
LightSailでは、credentialsがコメントアウトされているため、先ほどのクレデンシャル設定を使用できるようにコメントアウトを削除します。

$ sudo vi /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml

以下のコメントアウトを外します。

[credentials]
   shared_credential_profile = "default"
   shared_credential_file = "/root/.aws/credentials"

collectdのconfig 設定を行います。

$ sudo vi /etc/collectd/collectd.conf

/etc/collectd/collectd.confの中身は、以下のようにします。
初期設定は、:%dで削除可能です。

LoadPlugin load
LoadPlugin network
#loadaverage
<Plugin load>
        ReportRelative true
</Plugin>
#collectd to cwa
<Plugin network>
        <Server "127.0.0.1" "25826">
                SecurityLevel "Encrypt"
                Username "user"
                Password "secret"
        </Server>
</Plugin>

collectdの認証設定を行います。

$ sudo vi /etc/collectd/collectd.conf.d/auth_file

以下を入力します。/etc/collectd/collectd.confで定めた<Plugin network>内のユーザーとパスワードです。

user: secret

最後に、CloudWatch Agentの設定を行います。

$ sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

以下の設定は一例ですが、ディスク使用率やメモリなどを取得する設定を記載します。

{
        "agent": {
                "metrics_collection_interval": 60,
                "run_as_user": "root"
        },
        "metrics": {
                "aggregation_dimensions": [
                        [
                                "InstanceId"
                        ]
                ],
                "append_dimensions": {
                        "InstanceId": "${aws:InstanceId}"
                },
                "metrics_collected": {
                        "collectd": {
                                "collectd_security_level":"encrypt",
                                "collectd_auth_file":"/etc/collectd/collectd.conf.d/auth_file",
                                "metrics_aggregation_interval": 60
                        },
                        "cpu": {
                                "measurement": [
                                        "cpu_usage_idle",
                                        "cpu_usage_iowait",
                                        "cpu_usage_user",
                                        "cpu_usage_system"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ],
                                "totalcpu": false
                        },
                        "disk": {
                                "measurement": [
                                        "used_percent"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "/"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}

これでLightsailでのCloudWatch Agentの設定は完了です。

4. メトリクスを確認する

Lightsailは、CloudWatchからインスタンス名が表示されないため、識別ができません。
そのため、対象Lightsailへログインし、以下のコマンドで、インスタンスIDを取得します。

$ curl -s http://169.254.169.254/latest/meta-data/instance-id

CloudWatchからメトリクスを見ることができれば、正常に設定が完了しています。
また、上述したように、Lightsailはインスタンス名が表示されないため、「名前が指定されていません」と表示されます。

もし、メトリクスが正常に表示されていなかった場合は、以下のログを確認してみてください。

$ less /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

さいごに

今回は、LightSailへCloudWatch Agentを設定する方法についてご紹介しました。
EC2とは異なり、LightSail独自の仕様があることを認識していないと、案外詰まる可能性があります。

本記事が誰かの助けになれば幸いです!

最後まで読んでいただきありがとうございます!

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

Shun

好きな言葉は生ビール199円です。日本ビール協会認定1冠、Google Cloud11冠、AWS12冠

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら