2021/05/27

AWSでメトリクスを設定して効率的にリソースモニタリングしよう

 
  

メトリクスとは?


Amazon Web Services(AWS)では、Amazon CloudWatchによりAWSで利用しているアプリケーションをリアルタイムに監視できます。

監視の対象となるのがメトリクスであり、メトリクスとはCPUの利用率やストレージの空き容量などリソースやアプリケーションの状態を数値で測定できる変数のことを指します。

AWSでは、提供サービスごとにあらかじめメトリクスが設定されているものもありますが、ユーザーがカスタムすることも可能です。

利用するメリットは?

AWSのEC2やEBSなどのサービスに対してメトリクスを設定してCloudWatchで監視することで、設定数値が閾値を超えたときにメールで管理者に通知を送信したり、モニタリング対象のリソースのスケール変更を自動的に完了してくれます。

これにより、AWS管理担当者自身が24時間監視しなかったり、急なアクセス上昇や処理負荷が増大しても、リソース不足に陥ったままになることを避けられます。

メトリクスの種類は?


システムパフォーマンスを計測するメトリクスは、サービスごとに様々な種類があります。ここではEC2やEBSを対象として標準で用意されている一部と、メトリクスのリスト化の方法についても紹介していきます。

EC2のメトリクス

EC2には、CPUの利用率や通信状態を出力するメトリクスが用意されています。ここではEC2インスタンスで設定可能なメトリクスを紹介します。

CPUUtilizationでは、EC2に割り当てているコンピュートユニットの利用率をパーセントで出力します。このメトリクスを監視しておくことで、計算処理能力の過不足状況を確認することができます。

NetworkInでは、割り当てているネットワークインターフェース経由で受信したデータ容量をバイト単位で出力します。

トラフィック量を監視しておくことで、異常にデータ送信されている攻撃がされていないか、ストレージ容量に空きがなくなって、新たにデータを受信できなくなっていないかなどの確認ができます。

NetworkOutでは逆に、インスタンスから送信されているデータ容量をバイト単位で出力します。NetworkInも同様ですが、監視対象は5分間や1分間などの時間幅と平均や合計などの算出方法を必要に応じて、変更ができます。

EBSのメトリクス

EBSには一定期間の読み書き回数や、データサイズを出力するメトリクスが用意されています。

VolumeReadOpsでは、EBSボリュームの読み込みI/O操作回数を個単位で出力します。書き込み回数についてはVolumeWriteOpsが利用できます。また、バイト数で出力したい場合には、VolumeReadBytesならびにVolumeWriteBytesが対応しています。

BurstBalanceでは、バーストパケットに残っているI/Oクレジットもしくは、スループットクレジットの割合を出力します。一定時間ごとに読み書きスピードを上げる運用方法をとっている場合、残りのバーストチケットを管理するための一助となります。

なお、空き容量の出力は標準的なメトリクスとして用意されていないため、カスタムメトリクスとして各自で設定する必要があります。EC2のオペレーティングシステムがLinuxの場合は、下記のコードからディスクの空き容量を出力できます。

df -hT /dev/xvda1

他のメトリクスを知りたい(コンソールから)

上記以外にも多くのメトリクスが用意されています。どんなメトリクスが用意されているかはAWSコンソールからCloudWatchを開き、ナビゲーションペインでメトリクスを選ぶことで確認できます。

メトリクスは、例えばEC2を対象としたものやEBSを対象としたものなど、サービスごとにカテゴライズされて表示されていますので、メトリクスの設定したいサービスを対象に、検索してください。

他のメトリクスを知りたい(AW SCLIから)

AWS CLIから利用可能なメトリクスの一覧をリスト化することができ、表示する際には、下記のコードから確認できます。
aws cloudwatch list-metrics --namespace AWS/EC2

上記はEC2サービスについてのコードになり、EC2の部分を変更することで、他のサービスについてのメトリクスを確認できます。

更に、インスタンスを指定してメトリクスのリストを表示する方法は次の通りになります。
aws cloudwatch list-metrics --namespace AWS/EC2 --dimensions Name=InstanceId,Value=i-1234567890abcdef0

利用するには?


AWSではメトリクスをリアルタイムにモニタリングするために、グラフ化することや、メトリクスが一定の閾値を超えたときに起動するアクションを設定できます。ここでは3つの方法を紹介します。

メトリクスをグラフにしてモニタリングする

CloudWatchコンソールからはメトリクスを集計しグラフ化してモニタリングできます。

まず、AWSコンソール画面から検索等でCloudWatchを開きます。次にナビゲーションペインからメトリクスを選択し、モニタリングしたいメトリクスを選択するとグラフが表示されます。

グラフ化するメトリクスの統計値は、一定時間ごとのAverage、Minimum、Maximum等から選択でき、統計窓幅も1分間や1時間、3日間等、詳細にモニタリングするか傾向をつかむか、目的に合わせて変更できます。

時間をおいてから同じグラフにアクセスするために、グラフモニタリング時の下側ペインの「Actions」「Share」を選択しURLを取得しておくと、手順を短縮できます。また「Actions」「Add to dashboard」を選択すると、ダッシュボードに追加することもできます。

メトリクスが閾値を超えたらアラームする

CloudWatchではメトリクス値の状態に応じて、異常か否かを判定して出力する機能があります。

まず、CloudWatchコンソールを開き、ナビゲーションペインから「Alarms」「Create Alarm」を選択し、さらにメトリクスの選択から、アラーム対象とするメトリクスのチェックボックスを「オン」にします。

次にグラフ化したメトリクスタグを選択し、統計および期間を設定してメトリクスの選択をクリックします。この設定値に従って、アラームがALARM状態、OK状態、統計データが不足しているINSUFFICIENT_DATA状態に遷移します。

登録したアラームの状態は、CloudWatchコンソールのナビゲーションペインから「Alarms」を選択することで確認できます。

アラーム時にEC2インスタンスを停止する

アラームには、ALARM状態になったことをトリガとして、アクションを付随させることが可能です。以下はEC2に関するメトリクスに対してアラームを設定することを前提とします。

設定したアラームの編集に入り、アラームの定義ステップでEC2アクションを選択します。アラームが警告状態の条件に対して「このインスタンスを停止する」を選択すると、設定したアラームがALARM状態に遷移した後、対象のインスタンスが自動的に停止します。

また、アラームの定義ステップではメール通知も設定できるため、管理者がアラーム状態と対処結果を後から把握することも可能です。

このようなアクションを例えば、1か月のCPU使用率が10%未満か否かを監視するアラームに対して付随させることにより、不要になったインスタンスを停止でき、無駄な利用料をカットする効果があります。

メトリクスを設定して管理を自動化してみよう


メトリクスはAWSで利用できるサービスのパフォーマンス値を出力することについて説明し、サービスごとに出力できる数値の種類の一部と設定方法について紹介しました。

管理するリソースが多くなったり、24時間の監視が必要となると管理者の負荷が大きくなります。メトリクスを適切に選択して自動的にリソース状態の監視、オーバーシュート状態や対処アクションを設定して、少しでも管理負担を減らしましょう。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】