CloudWatchからDynamoDBのメトリクスをSDKで取得する方法!運用監視をカスタマイズしましょう

CloudWatchからDynamoDBのメトリクスをSDKで取得する方法!運用監視をカスタマイズしましょう

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

こんにちは!

Amazon DynamoDBは、高可用性とスケーラビリティを備えたNoSQLデータベースサービスです。本記事では、DynamoDBのメトリクスを取得する方法を紹介します。

はじめに

DynamoDBは、高可用性とスケーラビリティを備えたNoSQLデータベースサービスです。DynamoDBを運用する上で、スロットリング、レイテンシー防止、コスト最適化のために稼働状況をモニタリングすることが重要です。

DynamoDBのメトリクスの取得

DynamoDBの稼働状況を取得するためには、AWS CloudWatchを使用します。CloudWatchは、AWSリソースの状態をモニタリングするためのサービスです。CloudWatchを使用すると、DynamoDBのリソース使用量やレイテンシなどをモニタリング・取得することができます。

CloudWatchでは、以下のようなメトリクスを取得することができます。

  • テーブルの読み取り/書き込みレイテンシ
  • テーブルの読み取り/書き込みキャパシティユニット使用量
  • テーブルの読み取り/書き込みキャパシティユニットの最大使用量
  • テーブルの読み取り/書き込みキャパシティユニットの最小使用量

CloudWatchでは、上記のメトリクスを取得するためのAPIが用意されています。以下のサンプルプログラムを使用して、CloudWatchからDynamoDBのメトリクスを取得する方法を紹介します。

CloudWatchからDynamoDBのメトリクスを取得するサンプルプログラム

以下のサンプルプログラムを使用して、CloudWatchからDynamoDBのメトリクスを取得します。

// AWS SDKの読み込み
const AWS = require('aws-sdk');

// CloudWatchクライアントの作成
const cloudwatch = new AWS.CloudWatch({
  apiVersion: '2010-08-01'
});

// DynamoDBテーブル名
const tableName = 'MyTable';

// メトリクスを取得する関数
const getMetrics = async () => {
  const params = {
    MetricDataQueries: [
      {
        Id: 'ReadCapacityUnits',
        MetricStat: {
          Metric: {
            Dimensions: [
              {
                Name: 'TableName',
                Value: tableName
              }
            ],
            MetricName: 'ConsumedReadCapacityUnits',
            Namespace: 'AWS/DynamoDB'
          },
          Period: 60,
          Stat: 'Sum',
          Unit: 'Count'
        },
        ReturnData: true
      },
      {
        Id: 'WriteCapacityUnits',
        MetricStat: {
          Metric: {
            Dimensions: [
              {
                Name: 'TableName',
                Value: tableName
              }
            ],
            MetricName: 'ConsumedWriteCapacityUnits',
            Namespace: 'AWS/DynamoDB'
          },
          Period: 60,
          Stat: 'Sum',
          Unit: 'Count'
        },
        ReturnData: true
      }
    ],
    StartTime: new Date(Date.now() - 60000),
    EndTime: new Date()
  };

  // メトリクスの取得
  const data = await cloudwatch.getMetricData(params).promise();
  console.log(data);
};

// メトリクスの取得
getMetrics();

上記のサンプルプログラムを実行すると、CloudWatchからDynamoDBのメトリクスを取得することができます。

まとめ

本記事では、DynamoDBの稼働状況を取得するための方法を紹介しました。CloudWatchを使用することで、DynamoDBのリソース使用量やレイテンシなどをモニタリングすることができます。

サーバーレス開発低コストなAWS開発内製化はお気軽にお問い合わせください。