LoginSignup
5
2

More than 5 years have passed since last update.

AWS EC2 T2 Unlimitedの有効化

Last updated at Posted at 2018-01-10

T2インスタンスに対してT2 Unlimited機能を有効にしてみた。

T2 Unlimited機能について

T2インスタンスはCPUクレジットを消費してCPU能力を上げるバーストという機能が使用できる。

このバーストはCPUクレジットを消費し尽くした場合は使えなくなってしまうが、消費し尽くした場合でもバーストし続けることができる機能をT2 Unlimitedと呼ぶ。

CPUクレジットの消費量は1vCPU毎1分間に1クレジットで、CPUクレジットの回復量と回復上限はインスタンスタイプごとに違う。

具体的には下記ページの表にまとまっている。

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-instances.html

バースト / T2 Unlimited詳細

CPUクレジットを消費し尽くした後T2 Unlimitedによりバーストが発生してもすぐには課金されない。

この場合CPUクレジットの回復上限の値までCPUクレジットを使って、初めて課金 (vCPU時間あたり0.05ドル)が発生する。

これらはそれぞれCPUSurplusCreditBalanceとCPUSurplusCreditsChargedというメトリクスで追跡できる。

つまり、バースト発生 → クレジットを使い切る → CPUSurplusCreditBalanceも上限 (CPUクレジットの回復上限の値) まで使い切る → 課金が発生という流れになる。

なおCPUSurplusCreditBalanceを使った場合では、CPUクレジットの回復にはまずCPUSurplusCreditBalanceの返済が必要で、返済が終わった段階からCPUクレジットの回復が始まる。

監視 (アラート)

何らかの問題によりバーストが発生し続けて、T2 Unlimitedの課金が気が付かれずに発生し続けることを避けるため、監視とアラートを設定する。

CloudWatchで設定を行い、アラートは課金が始まった時、つまりCPUSurplusCreditsChargedが0より大きくなった場合にアラートを送信するよう設定する。

設定

下記設定でT2 Unlimitedの設定と監視(アラート)の設定を行った。

  • 対象: T2系インスタンス
  • アラート条件: CPUSurplusCreditsChargedが0より大きくなった時 (5分間隔1回連続)
  • アラート送信先: (既存SNSトピックを使用)

#!/bin/bash
set -euo pipefail

RET=$(aws ec2 describe-instances --query \
      'Reservations[].Instances[].{HostName:Tags[?Key==`Name`].Value|[0],InstanceId:InstanceId}' \
      --filters "Name=instance-type,Values=t2.*" --output text | awk '{ print $1","$2}' | sort)

for LINES in $RET;
do
        INSTANCE_NAME=$(echo $LINES | awk -F, '{ print $1 }')
        INSTANCE_ID=$(echo $LINES | awk -F, '{ print $2 }')
        echo $INSTANCE_NAME

        aws ec2 modify-instance-credit-specification \
                --instance-credit-specification "[{\"InstanceId\": \"${INSTANCE_ID}\",\"CpuCredits\": \"unlimited\"}]"

        aws cloudwatch put-metric-alarm \
                --alarm-name "$INSTANCE_NAME でのT2 Unlimited課金発生" \
                --namespace AWS/EC2 \
                --metric-name CPUSurplusCreditsCharged \
                --dimensions "Name=InstanceId,Value=$INSTANCE_ID" \
                --period 300 \
                --statistic Average \
                --threshold 0 \
                --comparison-operator GreaterThanThreshold \
                --evaluation-periods 1 \
                --alarm-actions (既存SNSトピックを使用) \
                --ok-actions (既存SNSトピックを使用)
        echo "-----------"
done

参考
https://aws.amazon.com/jp/blogs/news/new-t2-unlimited-going-beyond-the-burst-with-high-performance/

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2