CloudWatchダッシュボードのグラフ移動機能を試してみた

2021.08.25

みなさんこんにちは、杉金です。

少し前に発表されたのですが、CloudWatchダッシュボードにグラフ移動機能が追加されました。可視化好きにとってはたまらないアップデートですので試してみました。

AWS公式アナウンス
https://aws.amazon.com/jp/about-aws/whats-new/2021/04/announcing-moving-graphs-for-cloudwatch-dashboards/

AWS公式ドキュメント(Viewing an animated dashboard)
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-animated-dashboard.html

使ってみる

それではCloudWatchのコンソールを開きましょう。AWSマネジメントコンソールでCloudWatchを開くときはお気に入りに入れておくか、私はだいたい検索バーで「cw」と入力してそのままEnterキーで移動しています。

今回の機能は古いコンソールには対応していないため、新しいコンソールに切り替える必要があります。

CloudWatchダッシュボードから対象のダッシュボードを選び、アクションから「ダッシュボードのリプレイ」を選択します。

画面上部に再生ボタンがありますのでこれを押します。

うおおお!グラフが動きました!!

一時停止したり、シークバーを動かしたり、再生スピードを変えたりもできます。また、右上の時間範囲を設定することでリプレイしたい時間と範囲を指定できます。

おや?と、お気づきになられた方もいるかと思いますが、リプレイで動くものと動かないものがあり、時間軸のあるウィジェット「線」や「スタックされたエリア」は動きますが、それ以外の円グラフや数値、アラームはリプレイ機能には対応していません。

使ってみた感想

この機能は異なるグラフを並べたときに関連性を見出しやすくなり、様々な調査や分析をする際に役立ちそうです。 要望を挙げるなら、数値や円グラフ、アラームも連動して動くようになってくれれば、より視覚的に追えそうです。あとは日毎にグラフを分けて再生できたりすると特定曜日の特定時間だけ負荷が高いみたいなことが見つけやすくて面白そうです。そのあたり今後対応してくれることを願うばかりです。

(おまけ)この検証環境の作り方

今回のダッシュボードに表示させていたデータは検証用に立てたEC2(RHEL8)から取得したものです。 より多くのデータを取得できるようにEC2にCloudWatchエージェントを入れています。 CloudWatchエージェントの導入方法はいくつかありますが、一例として紹介したいと思います。
(特殊なやり方ではなくマニュアルに沿った内容です。検証機としてRHEL8を選んだのは何となく)

始める前に用意しておくもの

  • EC2 1台(作成当時最新のRHEL8.4使用) インスタンスタイプは小さめ(t3.microとか)
  • EC2にIAMロールをアタッチする。IAMロールに設定するポリシーは2つ
    (CloudWatchAgentServerPolicy、AmazonSSMManagedInstanceCore)

Systems Manager(SSM)エージェントのインストール

最新のAmazonLinux2のAMIであればSSMエージェントは最初からインストールされていますが、RHELの場合別途インストールが必要です。EC2にログインして、以下のコマンドからSSMエージェントをインストールします。RHEL8なのでyumではなくdnfを使います。

region="ap-northeast-1"
sudo dnf install -y "https://s3.${region}.amazonaws.com/amazon-ssm-${region}/latest/linux_amd64/amazon-ssm-agent.rpm"
#SSM起動ステータス確認、自動起動設定確認
sudo systemctl status amazon-ssm-agent
sudo systemctl is-enabled amazon-ssm-agent

ステータスがrunningであり、起動設定がenabledになっていること、 SSMのフリートマネージャにインスタンスが登録されることを確認します。

CloudWatchエージェントのインストール

以下のページを参考にCloudWatchエージェントをインストールします。 ページにある「Systems Manager を使用して CloudWatch エージェントをダウンロードするには」のところを参考にRun commandを実行します。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/download-CloudWatch-Agent-on-EC2-Instance-SSM-first.html

Run commandからAWS-ConfigureAWSPackageドキュメントを選択します。

Nameに「AmazonCloudWatchAgent」、Versionを「latest」に設定します。

インスタンスを手動で選択するを選び、導入対象のEC2インスタンスにチェックを入れます。

あとはそのままに「実行」ボタンを押下します。

実行後にコマンドの結果が「成功」になることを確認します。

CloudWatchエージェントの設定

設定ファイルをパラメータストアに保存する場合はIAMロールに別のポリシーをアタッチする必要がありますが、今回は検証機ですのでパラメータストアへの保存は行いません。設定方法は以下のページを参考にします。 https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html

設定方法は2種類あり、設定ファイルを用意するか設定ウィザードに従って設定するかです。今回は設定ウィザードを使います。以下のコマンドから設定ウィザードを呼び出します。

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

このウィザードを使って質問に答える形で設定していきます。基本はデフォルトで選択されているものでよく、デフォルトから変えたものだけ以下に記載していきます。

Do you want to turn on StatsD daemon?
1. yes
2. no
default choice: [1]:

使用しないため2を選択します。StatsDを使用したカスタムメトリクス取得は以下のページが参考になります。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-statsd.html

Do you want to monitor metrics from CollectD?
1. yes
2. no
default choice: [1]:

使用しないため2を選択します。 CollectDを使用したカスタムメトリクス取得は以下のページが参考になります。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-collectd.html

Which default metrics config do you want?
1. Basic
2. Standard
3. Advanced
4. None
default choice: [1]:

CPUで割合グラフを作りたかったので2を選択します。

Do you want to monitor any log files?
1. yes
2. no
default choice: [1]:

今回ログファイルをモニタしないので2を選択します。

Do you want to store the config in the SSM parameter store?
1. yes  
2. no  
default choice: [1]:

パラメータストアに保存しないため2を選択します。

設定を反映させるために以下のコマンドを実行します。コマンド後半でconfigのファイルパスを指定していますので必要に応じて修正してください。

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

CloudWatchダッシュボードの設定

しばらくするとCloudWatchメトリクスにCWAgentという名前空間が登場します。

メトリクスを選択してダッシュボードに追加します。

このように次々と必要なデータ(メトリクス)を追加していきダッシュボードを仕上げていきます。(ページの不意なリロードで編集内容が消えるため、こまめにダッシュボードを保存することをオススメします)

メモリ使用率の円グラフを作りたい場合、メモリ使用率のメトリクス(mem_used_percent)はあるものの未使用率のメトリクスはありません。ひとつの値だけでは円グラフは作れないため、計算式を使って未使用率を求めるとメモリ使用率の円グラフも作れます。
(下記画像では100-メモリ使用率の計算式を入れています)

このあたりコンソールではなくCDKやCloudFormationなどを使って、自分好みのダッシュボードを楽に作れるといいなとは思っています。

さいごに

最近、シン・ゴジラを見直したのですが、登場人物たちが熱く議論を交わしている後ろで謎の数字とグラフが動く黒いPCが写ってて思わず気になりました。動くグラフには何とも言えないロマンがあるように思います。同じようなことができる今回の機能いいですね。

参考情報