Cloudwatch Agentを使ってLightsailのカスタムメトリクスを取得する

IT

LightsailではCPU使用率とネットワークに関するメトリクスはデフォルトで取得することができますが、ストレージやメモリ関連のメトリクスが取得できないです。より細かいメトリクスを取得できるように、CloudwatchAgnetを使ってLightsailのインスタンスからカスタムメトリクスを取得し、運用状況が確認できるようにしてみます。

今回行う設定の概要

CloudwatchAgentを利用して、Lightsailのデフォルトでは取得できないメトリクスを取得します。

取得したメトリクスはCloudWatchにおくられ、時系列での変化をグラフにして確認することができます。

また、アラートを設定しておくことでメトリクスが指定した閾値を超えた場合にメールを送ったりアクションを起こすことができます。

大まかな流れ

今回の作業では以下の内容を行います。

  • IAMを作成
  • LightsailのインスタンスにIAMを設定
  • CloudwatchAgentのインストール
  • CloudwatchAgentの設定ファイルの作成
  • CloudwatchAgentの起動
  • Cloudwatchでアラートの設定

CloudwatchAgentとは

カスタムメトリクスはデフォルトではとれない詳細な情報を取得するのにつかわれます。CloudwatchAgnetはメトリクスの取得を容易にするためのツールで、EC2でもオンプレミスでも使うことができます。

CloudwatchAgentを設定する

IAMを作成する

CloudWatchにメトリクスを送信する権限のあるIAMユーザーを作成します。LightsailにはサービスロールというEC2系の操作を許可するロールがついていますが、このロールは権限の編集ができないので、別途IAMを用意して使うことにしました。

IAMのサービス画面を開き、左側メニューの「ユーザー」の画面を表示させます。「ユーザーを追加」のボタンから作成していきます。

ユーザー名を入力して、「プログラムによるアクセス」を選択します。ユーザー名は「CloudWatchMetricsForLightsail」にしました。

cloudwatch agent用のポリシーには以下が必要です。「既存のポリシーを直接アタッチ」からポリシーを選択し、左側のチェックボックスをチェックします。

  • CloudWatchAgentServerPolicy
  • CloudWatchAgentAdminPolicy
  • AmazonSSMManagedInstanceCore

設定を確認し、ユーザーを作成します。

作成後に表示されるアクセスキーIDとシークレットアクセスキーはこれからの設定で利用します。忘れずにcsvのダウンロードをしておきましょう。

IAMをLightsailの AWSCLIプロファイルとして設定する

LightSailのAWS CLIに先ほど作成したIAMを設定します。

Lightsailのターミナルを開きます。

ターミナルで次のコマンドを入力し、表示された設定項目に従ってIAM作成時に取得したアクセスキーIDとシークレットアクセスキーを入力します。

aws configre

CloudwatchAgentをインストールする

次にCloudwatch Agentをlightsailインストールします。以下のコマンドを利用します。

wget https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip
unzip AmazonCloudWatchAgent.zip
sudo ./install.sh

CloudwatchAgentの設定ファイルを作成する

CloudWatchAgentを使う際にはどのくらいの粒度でどのようなメトリクスを送信するかを記述した設定ファイルが必要になります。

設定ファイルはCloudwatchAgentのウィザードから作成することができます。以下のコマンドでウィザードを起動させます。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

ウィザードを起動すると、設定について対話形式で質問がされます。以下の設定を参考にしてください。

  • On witch OS are you planning to use the agent? : 1. linux
  • Are you using EC2 or On-premiss hosts? : 2. On-Premises
  • Which user are you planning to run the agent? : 3. other  bitnami
  • Do you want to monitor metrics from CollectD? : 2. no
  • Do you want to monitor any host metrics ? : 1. yes
  • Do you want to monitor cpu metrics per core? Additional CloudWatch charges may apply. : 2. no
  • Would you like to collect your metrics at high resolution(sub-minute resolution)? : 4. 60s
  • Do you have any existing CloudWatch Log Agent (…) configuration file to import for migration? : 2. no
  • Do you want to store the config in the SSM parameter store? : 1. yes
  • What parameter store name do you want to use to store your config? : default choice(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? : 2. Other
  • Please provide credentials to upload the json config file to parameter store : 先ほど取得したIAMのアクセスキーとシークレットアクセスキーを入力

最後に「program exit now」と表示され、設定ファイルの作成が完了します。

CloudwatchAgentの設定ファイルの編集

Lightsailではサービスロールで設定された権限があり、デフォルトではその権限の範囲しか使われないためCloudwatchへのメトリクスの送信に失敗してしまいます。上記で作成したIAMを使うように変更するため、ファイルを変更します。

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

common-config.tomlがvimで開かれるので、「credentials」の項目のコメントアウトを外し、(#マークを削除)以下のように編集します。

[credentials]
shared_credential_profile = “default”
shared_credential_file= “/home/bitnami/.aws/credentials”

vimでは次のように操作します。
「i」で編集モード→編集→「escキー」で編集モードを出る→「:wq」で上書き保存

CloudwatchAgentを作動させる

ここまでできたらCloudwatchAgentを以下のコマンドで起動させます。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m onPremise -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json

エラーがなければCloudwatchAgentの設定は完了です。

アラートの設定をする

LightsailのCloudwatchAgentから送られたメトリクスはCloudwatchのコンソールから確認できます。
左側のメニューの「メトリクス」を開き、「CW Agent」を検索するとCloudwatchAgentから送られるメトリクスが確認できます。

「全てのメトリクス」タブでアラートを出したいメトリクスを選択した後、「グラフ化したメトリクス」のタブに移動するとリストの右側にアラートマークが出現します。このアラートマークから設定を行なっていきます。

アラートマークをクリックすると、メトリクスと条件の指定画面が出てきます。上部の設定は特に変更する必要はないので、下の方にスクロールします。

アラートを飛ばす条件を設定します。今回の例だとストレージの容量を確認したいので、ストレージの使用量が50%以上になった時にアラートが飛ぶようにします。

アラーム状態になった時に、SNS(Simple Notification Service。通知を行うのに便利なAWSのサービス)が実行されて、自分のメールアドレス宛にアラートメールを送ってもらうようにします。

「新しいトピックの作成」を選択し、トピック名とアラートを送るメールアドレスを入力します。

簡単な説明文とアラームの名前をつけて完了です。

さいごに

CloudwatchAgentをつかってカスタムメトリクスを取得すれば、いろんな項目を取得することができます。Lightsailの場合はデフォルトでアタッチされているサービスロールを使わないようにすることが難点でした。

ここまでやらなくともCPU使用率とネットワークの使用率だけ分かれば良いという方は、Lightsaiの運用状況を確認してトラブルに備えるで簡単な設定方法を紹介していますのでよろしければご覧ください。

コメント

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