MongoDB Atlas・Cloud Managerで防ぐ!トラブル事例と予防策まとめ

メディア統括本部 サービスリライアビリティグループ(SRG)の小林(@berlinbytes)です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
本記事では、MongoDBのこれまでの運用で得られた知見を基に、発生しうるトラブルとその予防策について、事例を交えて紹介します。
 

はじめに


弊社では、ソーシャルゲームの初期段階からMongoDBを運用してきています。
その歴史は、物理的な筐体での運用から始まり、より高集約なホストへ、そしてSSDやNVMeといった高速ストレージを持つサーバーへと進化を遂げてきました。
現在では、プライベートクラウドやパブリッククラウド上の仮想インスタンス、さらにはマネージドサービスでの利用が主流となっています。
MongoDBは、JSONライクなドキュメントを使用して柔軟なデータ管理を可能にするNoSQLデータベースです。
MongoDB AtlasやCloud Managerといったマネージメントツールを導入したことで、運用の際に注目すべきポイントが変化してきました。

過去のトラブルから学ぶ、今も潜むリスク


これまでに経験したトラブルの大部分は、現在でも発生する可能性があるものになります。 特定のバージョンのみで発生するような問題を除き、ここでは主なトラブルを3つのカテゴリに分けて解説します。

バージョン起因の問題

MongoDB本体や、Cloud Managerでの運用に不可欠なMongoDB Agentのバージョンが古くなることで、サポート対象外となるケースがありました。
MongoDB Agentは、モニタリング、バックアップ、自動化といった機能を単一のバイナリで提供する重要なコンポーネントです。
サポートが終了すると、インスタンスに直接SSH接続して手動でアップグレード作業を行う必要などの作業が生じ、運用負荷の増大につながります。

バックアップのトラブル

バージョンの問題は、バックアップにも影響を及ぼします。
サポート対象外(EOL)となったバージョンのMongoDBでは、バックアップが取得できなくなることがあります。
また、手動での作業ミスが原因で、バックアップの再同期(resync)が必要になるパターンも存在します。

コレクションやindexの構成ミス

データベースの設計ミスは、パフォーマンスに深刻な影響を与えます。
特に、以下のような構成ミスは、クラスター全体や特定インスタンスの負荷を異常に高騰させる原因となります。
  • シャーディングされていないコレクションへのアクセス集中
    • シャーディングとは、データを複数のサーバーに分散させる水平分割の技術です
  • index(索引)を使用しない非効率なクエリの実行
    • クエリとは、データベースへの問い合わせや命令のことです
    • indexが適切に設定されていないと、データ検索に時間がかかり、スロークエリ(処理の遅いクエリ)が発生します
  • データの偏りを引き起こす設計
    • 例えば、データ量の少ないマスターデータをキーにしてシャーディングを行うと、データが特定のシャード(分散先サーバー)に偏り、負荷が集中してしまいます
これらのトラブルをまとめると、以下の3点に集約されます。
  • モニタリングやアラートの不備による、障害やその兆候の見逃し
  • Agentやバイナリのバージョン追従の遅れによる、サポート切れや新機能の利用不可
  • コレクションやindexの構成ミスによる、負荷高騰やスロークエリの発生

安定運用のための具体的な予防策


前述したトラブルを未然に防ぐためには、日頃からの予防策が重要です。

まずはバージョンに追従する

MongoDBは、現在年に1回のペースでメジャーバージョンがリリースされています。
必ずしも即座に追従する必要はありませんが、EOL(End of Life)ポリシーを考慮し、定期的にバージョンの追従要否を判断することが推奨されます。
特に、セキュリティ修正やバグフィックスが含まれるパッチリリースについては、最新版へのアップグレードを基本方針とすることが望ましいです。

適切なアラートを整備する

問題の早期発見には、アラートの整備が重要です。
ここでは、MongoDB AtlasとCloud Managerそれぞれで設定すべき代表的なアラートを紹介します。

MongoDB Atlasの場合

AtlasのUIから、以下の条件でアラートを設定します。
  • バックアップのトラブル
    • : スナップショットの取得に失敗した場合
    • : スナップショットのスケジュールが遅延した場合
  • コレクションやindexの構成ミス
    • : クエリが非効率で、返されるドキュメント数に比べてスキャンするドキュメント数が多すぎる場合に発生し、indexが適切に設定されていない可能性を示唆します
    • : Performance Advisorが、パフォーマンス改善のためのindex作成を提案した場合に発生(Performance Advisorはクエリのパフォーマンスを分析し、最適なindexを提案してくれる便利な機能です)

MongoDB Cloud Managerの場合

Cloud ManagerのUIから、以下の条件でアラートを設定します。
  • バージョン起因
    • : Monitoring Agentのバージョンが古い場合
    • : MongoDB本体のバージョンが古い場合
  • バックアップのトラブル
    • : Backup Agentのバージョンが古い場合
    • : バックアップ機能が停止している場合
    • : バックアップの再同期が必要な場合
    • : バックアップ用のoplog(操作ログ)が遅延している場合
  • コレクションやindexの構成ミス
    • : Performance Advisorがindex作成を提案した場合(Cloud PremiumユーザーであればPerformance Advisorを利用できますが、そうでない場合はDatadog Database Monitoringのような外部ツールや、ログ解析ツールで補完することが可能です)

MongoDB Atlasで設定すべきアラート一覧


前述のアラートに加え、以下の設定をベストプラクティスとして推奨します。
  • Atlas Auto Scaling
  • Backup
  • Billing
  • Maintenance Window
  • Host
  • Limit
  • Replica Set

MongoDB Cloud Managerで設定すべきアラート一覧


Cloud Manager環境では、以下の設定を推奨します。
  • Agent
  • Backup
  • Billing
  • Host
  • Replica Set
    • : レプリカセットを構成する正常なメンバー数を指定

Datadogなどの外部ツールで取得すべきメトリクス


AtlasやCloud Managerの標準機能に加え、DatadogやPercona Monitoring and Management (PMM) といった外部のモニタリングツールを活用することで、より柔軟なアラート設定や、障害の早期発見が可能になります。
以下に、取得しておくべき主要なメトリクスを挙げます。

Hosts単位

  • CPU: プロセスのCPU使用率
  • Memory: メモリ使用量
  • Network I/O Usage: ネットワーク使用量
  • Disk Usage / I/O Usage: ディスク使用量とI/O量
  • Page Faults: ページフォルトの発生状況

DB単位

  • Read Request (query, getmore): 読み取りリクエストの増減
  • Write Request (insert, update, delete): 書き込みリクエストの増減
  • Assertions: アサーションエラーの発生数

Replication(ReplicaSet)単位

  • Connections: コネクション数
  • oplogサイズ / oplog windowサイズ: 操作ログのサイズと保持期間
  • Replication Lag: レプリケーションの遅延時間
  • Read / Write tickets: 読み書きの待機状況
  • Lock (Read / Write): ロックの発生状況

終わりに


MongoDBを安定して運用するためには、バージョンの追従、バックアップの健全性維持、そして適切なアラート設定が極めて重要です。
特に、バージョン管理とモニタリングによって多くのトラブルを未然に防ぐことができます。
さらに、Datadogのような外部ツールを組み合わせることで、より詳細なメトリクスに基づいた監視と迅速な問題解決が可能となり、運用の効率化と高度化を実現できます。
他にも、Datadog Database Monitoring for MongoDBや、Percona Monitoring and Managementなど有用なサードパーティ製ツールも紹介していければと思います。
 
SRGにご興味ありましたらぜひこちらからご連絡ください。