はじめに
以下のような方にオススメの内容です。
- AWS初心者でDynamoDBを運用している
- モニタリングの効率化・自動化に興味がある
- アラート設定のベストプラクティスを知りたい
AWS DynamoDBの運用管理を効率化するために、CloudWatchを使った監視とアラート設定方法を解説します。
DynamoDBのモニタリング
DynamoDBのパフォーマンスの可視化や障害を見逃さないために、CloudWatchの活用をオススメします。
CloudWatchでモニタリングをするべきメトリクスを紹介します。
高:必須レベル
中:必要に応じて
低:特定の状況
メトリクス名 | 重要度 | 説明 | モニタリング理由 |
---|---|---|---|
ReadThrottleEvents/WriteThrottleEvents | 高 | リクエストがプロビジョニングされたスループットを超えた際に発生 | 負荷が高すぎる場合の早期公告として使用します |
SystemErrors | 高 | DynamoDB内部で発生したシステムエラーの回数を示す | システム全体の安定性を確認し、エラー発生時のトラブルシューティングに使用 |
ConsumedReadCapacityUnits /ConsumedWriteCapacityUnits | 高 | 実際に消費された読み取りおよび書き込みスループットを表す | スループットの利用効率を把握し、不要な過剰プロビジョニングを防ぐ |
SuccessfulRequestLatency | 中 | 読み取りおよび書き込みリクエストが成功するまでにかかった時間(ミリ秒単位) | テーブルやインデックスのパフォーマンスを測定し、潜在的な遅延問題を特定するために使用 |
ProvisionedThroughputExceeded | 中 | プロビジョニングされたスループットを超過したリクエストの数 | テーブルやインデックスの負荷状況を分析し、スケーリングの必要性を判断 |
PendingReplicationCount | 中 | グローバルテーブルで未複製のレコード数を示す | レプリケーションの遅延を把握し、グローバルなデータ一貫性を維持するために使用 |
ConditionalCheckFailedRequests | 低 | 条件付き書き込みや削除が失敗したリクエスト数 | ビジネスロジックの問題を特定するために使用 |
UserErrors | 低 | ユーザーが原因で発生したエラー(例: 不適切なパーティションキーを使用したリクエストなど) | アプリケーションの問題や不適切なリクエストの特定に使用 |
ユースケース別のおすすめ設定
スループット不足によるアプリケーションの遅延やエラーを防ぐ
ReadThrottleEvents
WriteThrottleEvents
ProvisionedThroughputExceeded
アラームはReadThrottleEvents
またはWriteThrottleEvents
が1分間に1以上がおすすめです。
アラートを構築チームに送信し、自動スケーリングを検討しましょう。
DynamoDB内部のエラーを迅速に検知してトラブルシューティング
SystemErrors
アラートはSystemErrors
が5分間で1以上がおすすめです。
アラートを受け取ったら、AWSサポートに迅速に連絡しましょう。
スループット利用効率を最適化
ConsumedReadCapacityUnits
ConsumedWriteCapacityUnits
アラートはConsumedReadCapacityUnits
またはConsumedWriteCapacityUnits
がプロビジョンドスループットの10%未満で24時間以上続く設定がおすすめです。
アラートを受け取ったら、テーブルのスループットを下げましょう。(手動または自動スケーリング)
アプリケーションのパフォーマンス問題を検知
SuccessfulRequestLatency
アラートはSuccessfulRequestLatency
が5分間で平均100msを超えるように設定するのがおすすめです。
アラートを受け取ったら、テーブル設計やインデックスの見直しましょう。
グローバルテーブルのレプリケーション遅延を防ぐ
PendingReplicationCount
条件: PendingReplicationCount
が1分間で100以上がおすすめです。
アラートを受け取ったら、リソース状態の確認と、AWSサポートへの問い合わせを行いましょう。
CloudWatchのメトリクスがない場合は生成
一部のメトリクスは初期状態では表示されていないものもあります。
以下のメトリクスの生成方法の記事を紹介しているので、参考にしてください。
ReadThrottleEvents/WriteThrottleEventsのメトリクス生成してカスタムメトリクスを作成!【DynamoDB】
SystemErrorsのメトリクス生成してカスタムメトリクスを作成!【DynamoDB】
ベストプラクティスと大事な点
運用上に必要な点をまとめました。
全て設定した方がいいというわけではなく、設定を増やしすぎたことによって、ノイズになってしまうことも少なくありません。
以下のことを押さえていきましょう。
適切なメトリクス選択
アプリケーションや運用の目的に合ったメトリクスのみを監視。
不要なアラートの削減
しきい値やアラート条件を適切に設定し、ノイズを減らす。
アラートの分類
重要度に応じてアラートを分け、優先度を明確化。
定期的な見直し
メトリクスやアラーム設定は運用状況に応じて調整する。
まとめ
DynamoDBの運用効率を高めるためには、CloudWatchを活用したモニタリングとアラート設定が必要です。
適切なメトリクスを選び、ノイズの少ないアラートを設計することで、パフォーマンスの可視化と障害の早期検知が可能になります。
CloudWatchの設定を活用し、DynamoDBの運用管理をより効率的に進めていきましょう。