Amazon CloudWatch Database Insightsを使ったAurora for PostgreSQLのパフォーマンス監視
株式会社IVRy / ryuichi1208
メンバー / インフラエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
パフォーマンス分析、監視 | 11名〜50名 | 2024年12月 | B to B |
利用機能 | パフォーマンス分析、監視 |
---|---|
ツールの利用規模 | 11名〜50名 |
ツールの利用開始時期 | 2024年12月 |
事業形態 | B to B |
導入の背景・解決したかった問題
導入背景
導入検討の背景と当時の状況
私たちのチームがAmazon Aurora PostgreSQLに対してAmazon CloudWatch Database Insightsを導入することを検討し始めたのは、システムのスケーラビリティと可用性向上が急務となったタイミングでした。具体的には、IVRyのシステムで使用するRDBにおいて、契約いただいたお客様がダイヤルプッシュの分岐ルールを設定したり、電話履歴を参照したりする場面が多く、これに伴うデータベースへの負荷が増大していました。
サービスの成長に伴い、データベースへの負荷が増加。それに比例してパフォーマンスの劣化や障害発生時の検知遅延が顕著になっていました。当時は、手動でのパフォーマンス監視や簡易的なログ確認、アプリケーションログとデータベースログの付き合わせに多くの時間を消費しており、問題が発生しても事後対応が中心。これが以下の課題として浮き彫りになっていました。
ツール導入前の課題
- 障害検知の遅延と反応の遅さ
障害やパフォーマンス低下の検知に時間を要し、お客様からの問い合わせによって初めて問題が表面化するケースがありました。
- データベースパフォーマンスの可視化不足
高負荷時のボトルネック特定が難しく、特にスロークエリやレプリケーション遅延の根本原因分析に時間を要していました。
- スケールに対応した監視体制の未整備
サービスの成長に伴い、手動監視の限界が明確になり、自動化されたモニタリングの必要性が高まりました。
どのような状態を目指していたか
CloudWatch導入にあたり、私たちは以下の状態を目指しました。
- データ駆動のパフォーマンス最適化
- CPU使用率、クエリ遅延、接続数などの重要メトリクスを可視化し、パフォーマンスのボトルネックを迅速に特定できるようにしました
- CloudWatch Logs Insightsを活用し、スロークエリ分析やエラーログの集計を自動化することを目標としました
- 監視の標準化と運用負荷の削減
- 誰でも同じ品質のモニタリングが行えるよう、ダッシュボードとアラートの標準テンプレートを作成。
- Terraformを利用してインフラ構成と監視設定のコード化(IaC)を進め、監視の一貫性を担保しました。
比較検討したサービス
比較した軸
- 取得して確認できるメトリクスが運用において必要最低限であるかどうか
- メトリクス、スロークエリ、エラーログのそれぞれにアクセスしやすいかどうか
選定理由
- 重要視していたポイントがAuroraの設定を変えるだけで実現できる点
- Performance Insightsとの親和性
導入の成果
どのような成果が得られたか
- スロークエリの改善促進
- クエリごとのパフォーマンスが可視化されたことで、ボトルネックの特定と最適化が容易になりました
- クエリレベルでのメトリクスの可視化
- どのクエリがどのくらいのロックを持っているのかやDiskIOについての詳細をモニタリングすることができるようになりました
導入時の苦労・悩み
AWS re:Invent 2024で発表されたばかりの機能を多く使っておりドキュメントなどがまだ整備されていない、Terraformが対応していない状態だったりして手探りでの導入となりました。
新しい Amazon CloudWatch Database Insights: フリートからインスタンスまで、包括的なデータベースのオブザーバビリティ
導入に向けた社内への説明
上長・チームへの説明
過去の障害からその時に必要だった情報を確認しAmazon CloudWatch Database Insightsでそれが実現できるかを調査しました。その後に具体的にどのように使うことができるのかというドキュメントを作成しチーム内外のメンバーに展開し導入しました。
活用方法
現時点では個人でスロークエリやメトリクスの傾向調査などを行っています。
よく使う機能
- メトリクス
- CPU使用率やDiskIOのDBにおける基本的なメトリクスの確認
- Performance Insights
- DBの負荷が高い場合に実際に負荷を発生させているクエリの特定
- エラーログ
- 設定変更やマイグレーション実施後にDBでエラーが起きていないかを確認
- スロークエリログ
- パフォーマンス劣化の兆候を早期発見
ツールの良い点
- 取得して確認できるメトリクスがプロダクション環境での運用において追加で何も実装せずとも必要最低限揃っている
- メトリクス、スロークエリ、エラーログのそれぞれに関連性を持たせやすく画面遷移などで調査が行いやすい
ツールの課題点
スロークエリ分析において、Webコンソール上でEXPLAINが実行できるとさらに便利。 リアルタイム性が若干低く、実行中クエリのリアルタイム把握が課題。
ツールを検討されている方へ
Amazon CloudWatch Database Insightsは、Aurora for PostgreSQLの可観測性を強化するための強力なツールです。DatadogやPrometheusといった専用ツールも優れていますが、テレメトリを一元的に管理・分析したい場合にはCloudWatchが非常に有効です。
より実践的な内容は別途書いていますのでそちらもご参照いただければと思います。
今後の展望
現状、アラート設定はまだ整備途中のため、今後は自動アラートの構築を進めていきたいと考えています。これにより、さらに迅速な障害検知と対応を目指します。
またこの記事を書いてる途中でもlock contention diagnosticsがリリースされるなど、この分野の機能追加は非常に速いペースで進んでいます。こちらの機能も早速触ってみましたがトランザクションのロック状況などをDatabase Insightsから見ることが大変便利そうです。今後も引き続き、こうしたアップデートを追いかけていくつもりです。
株式会社IVRy / ryuichi1208
メンバー / インフラエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
https://www.notion.so/Resume-3699b8c3f4d34a49a86b576f85e10b2d
よく見られているレビュー
株式会社IVRy / ryuichi1208
メンバー / インフラエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
https://www.notion.s...