CloudWatch で Service Quotas をグラフ化・アラート通知できるようになりました!

2019.11.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは 園部です。

今日は、 AWS Community Day Kanazawa ですね! Youtube で配信されているようなので、気になるセッションがある方は是非チェックしてはいかがでしょうか?

さて本日、CloudWatch で Service Quotas が扱えるようになりました!(対象サービスが限定されていています)

(2019/11/20 現在) 対象サービス

  • Amazon EC2
  • Amazon DynamoDB
  • Amazon Kinesis Data Firehose
  • AWS Key Management Service
  • AWS CloudHSM
  • Amazon CloudWatch

やってみる

今回は、Amazon EC2 (以下、EC2) の vCPU 上限を対象に、グラフ化とアラート設定・通知まで行います。

現在状況

  • EC2(t2.micro) が4台起動

  • vCPU の上限と利用状況( Service Quotas より)
  • サービスクォータ: Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances
  • 適用されたクォータ値: 2112
  • 使用率: 4

CloudWatch で Service Quotas をグラフ化、アラート設定

CloudWatch >>> メトリクス >>> 使用 >>> AWSリソース を選択

グラフ化したメトリクス タブを選択

使用している 4 vCPU がグラフとして表示されています。

Service Quotas のメトリクスとするため、 SERVICE_QUOTA 関数を利用した数式を追加します。

Math expression >>> Start with empty expression を選択

「詳細」欄に、以下を入力します。

m1/SERVICE_QUOTA(m1)*100

Service Quotas メトリクスが追加されました。

  • ResourceCount(使用): 4
  • 式(ServiceQuotas): 0.189

アラート設定していきます。本来であれば、 90% を超えた場合などが良いと思いますが、検証のため、 0.2 を超えたらアラート通知とします。

EC2 インスタンスを増やしてアラート通知をします

  • EC2(t2.micro) を 4台 → 6台 へ変更

  • vCPU の上限と利用状況( Service Quotas より)
  • サービスクォータ: Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances
  • 適用されたクォータ値: 2112
  • 使用率: 6

しばらくすると、CloudWatch グラフ上でも反映され、アラーム状態となります。

メールも通知されました。

さいごに

今回のアップデートで、Service Quotas の状況を CloudWatch で可視化、アラート設定が可能となりました。対応しているサービスは限定されますが、検証例とした EC2 は先日 vCPU での上限カウントへ変更となっていることもあり、不安なユーザーにはありがたい機能ではないかと思います。

(function(){
    var corecss = document.createElement('link');
    var themecss = document.createElement('link');
    var corecssurl = "https://dev.classmethod.jp/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b";
    if ( corecss.setAttribute ) {
            corecss.setAttribute( "rel", "stylesheet" );
            corecss.setAttribute( "type", "text/css" );
            corecss.setAttribute( "href", corecssurl );
    } else {
            corecss.rel = "stylesheet";
            corecss.href = corecssurl;
    }
    document.getElementsByTagName("head")[0].insertBefore( corecss, document.getElementById("syntaxhighlighteranchor") );
    var themecssurl = "/wp-content/themes/regeneration/plugins/syntaxhighlighter/styles/shCoreDevIO.css?ver=3.0.9b";
    if ( themecss.setAttribute ) {
            themecss.setAttribute( "rel", "stylesheet" );
            themecss.setAttribute( "type", "text/css" );
            themecss.setAttribute( "href", themecssurl );
    } else {
            themecss.rel = "stylesheet";
            themecss.href = themecssurl;
    }
    //document.getElementById("syntaxhighlighteranchor").appendChild(themecss);
    document.getElementsByTagName("head")[0].insertBefore( themecss, document.getElementById("syntaxhighlighteranchor") );
})();
SyntaxHighlighter.config.strings.expandSource = 'ソースを表示';
SyntaxHighlighter.config.strings.help = 'SyntaxHighlighterについて';
SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n';
SyntaxHighlighter.config.strings.noBrush = '指定のブラシが見つかりませんでした: ';
SyntaxHighlighter.config.strings.brushNotHtmlScript = 'HTMLスクリプトのオプションのためにブラシが構成されませんでした: ';
SyntaxHighlighter.defaults['pad-line-numbers'] = false;
SyntaxHighlighter.defaults['tab-size'] = 2;
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();