公開日:2022年12月5日
データベース監視とは、データベースをリアルタイムで監視することで、データベースパフォーマンス監視とも呼ばれています。特定のメトリクスを追跡することにより、データベースシステムの健全性と動作を把握できるため、トラブルシューティングや、データベースのパフォーマンスを最適化する方法を見つけることができます。
データベースは、あらゆる組織のビジネスクリティカルなアプリケーションやサービスを支えているため、データベース監視はデータベース管理の重要な部分を担っているといえるでしょう。クエリーに時間がかかる、確立済みの接続が多すぎるなど、データベースのパフォーマンス上の問題によって、アプリやサービスが遅くなったり、一時的に利用できなくなったりすると、エンドユーザーエクスペリエンスに影響を与える可能性があります。データベース監視を行うと、ソフトウェアの健全性やデータベースサーバーのハードウェアの健全性に関するインサイトを獲得し、ユーザーに影響を与える前にパフォーマンスの問題を特定して修正することができます。また、データベース監視から得られるインサイトを生かせば、アプリケーションインフラを改善し、高いパフォーマンスを維持する方法も見出せます。
以下のセクションでは、データベース監視の仕組みと、パフォーマンスを最適化するために監視すべき最も重要なデータベースメトリクスの概要を説明します。また、利用可能なデータベース監視ツールの種類と、自社にとって最適なツールを選択する方法についても取り上げます。
データベースのパフォーマンスとは?
データベースのパフォーマンスとは、リクエストに応じてデータベースが情報を提供する速度のことです。このリクエストを高い割合で満たすデータベースは、パフォーマンスが高いとみなされます。一方で、ビジネスプロセスやアプリケーションでボトルネックを引き起こしていれば、パフォーマンスが低いとみなされます。
データベースのパフォーマンスに影響を与える要因は多数ありますが、特に影響が大きいのは以下の5つです。
- ワークロード:ワークロードとは、データベースがユーザーやアプリケーションから受け取るリクエストの合計量を指します。これには、さまざまな種類のクエリー、バッチジョブ、オンライントランザクション、システムコマンドのほか、特定の時点でシステムで処理するその他すべてのリクエストが含まれます。ワークロードは時間とともに、1秒単位で大幅に変動します。季節の買い物や月末の給与支払処理時にはリクエストが多く、営業終了後にはリクエストが少ないなど、状況によってはワークロードを予測できます。しかし、ほとんどの場合、ワークロードの予測は不可能といっても過言ではありません。
- スループット:スループットは、時間の経過とともにデータベースによって実行される作業量のことで、通常、1秒、1分、または1時間あたりに処理されるクエリーの数として測定されます。受け取るクエリー数よりもデータベースのスループットが低い場合、サーバーが過負荷になり、その結果、クエリーの応答時間が長くなって、Webサイトやアプリケーションの速度が低下する可能性があります。スループットの問題が生じていれば、クエリーを最適化するか、サーバーをアップグレードする必要があるといえるでしょう。
- リソース:リソースとは、データベースが使用するハードウェアやソフトウェアといったツールのことです。CPU、メモリー、キャッシュコントローラー、マイクロコードなどが挙げられます。データベースで自由に使えるリソース量は、データベースのパフォーマンスを左右する他のすべての要因に大きく影響します。
- 最適化:最適化とは、データベースから情報を取得する速度と効率を向上させるために使われる戦略のことです。最適化の方法には、未使用のテーブルの削除、適切なインデックス作成、適切なデータ型の使用など、データベースの調整手法が含まれます。最適化は継続的なプロセスであり、監視、分析、改善を続けていく必要があります。
- 競合:競合は、2つ以上のワークロードプロセスで同時に同じデータにアクセスしようとするときに発生します。たとえば、SQLデータベースでは、複数のトランザクションで同時に同じ行を更新しようとすると競合が発生します。あるトランザクションで変更中のデータを別のトランザクションが操作しようとした場合、データベースでは、データの正確性と一貫性を確保するために、変更が完了するまでデータへのアクセスを禁止、すなわち「ロック」する必要があります。リクエストが多いときに発生しやすい傾向にあり、競合が増えるとスループットが低下します。
最終的に、データベース管理者がこれらの要因を調整して最適なデータベースのパフォーマンスを確保します。リソースを最適化してスループットを最大化し、競合を最小限に抑えて、データベースが可能な限り最大のワークロードを効率的に処理できるようにします。
これら5つの要因は、データベースのパフォーマンスにとって特に重要です。
データベース監視の例
追跡を含め、データベース監視の例には以下があります。
- クエリーの応答時間
- データベースのスループット
- エラー
- 確立済みの接続
これらの要素は、データベースの健全性とパフォーマンスに大きな影響を及ぼします。データベース監視では、データベースがオンラインであるかどうかに加え、そのリソースの使用量も追跡されます。どちらもデータベースがサポートするアプリケーションやサービスの可用性を大きく左右します。
データベース監視のメリット
データベース監視を行って以下のような問題を特定することで、さまざまなメリットが得られます。
- パフォーマンスの問題:データベース監視は、リソースを大量に消費し、処理に時間がかかることでパフォーマンスの低下を引き起こしているクエリーを特定するのに役立ちます。この情報をもとに、特定のクエリーを調整したり、アプリケーションロジックを変更したりして、データベースの全体的な応答時間を向上させることができます。
- リソース不足:データベース監視ツールを導入すると、リソースのしきい値を超えるリスクがある場合にそれを把握し、事前に対処できます。メモリー不足やCPUの過負荷などの一般的な問題は、パフォーマンスや可用性に悪影響を与える前に解決することができます。
- 異常なユーザーアクセス:データベース監視で、通常とは異なる、または疑わしいユーザーアクセスパターンに対してアラートを生成することで、セキュリティ対策を強化できます。こうしたパターンは、機密データを侵害しようとする内部または外部の攻撃者による悪質な行動を示している可能性があります。たとえば、ログインの失敗が増加した場合、ブルートフォースサイバー攻撃のおそれがあり、調査が必要です。
データベース監視の課題
データベース監視の主な課題は、監視対象を決めることです。すべてを監視したいのはもちろんですが、それではチームが忙殺されてしまい、重点的に最適化すべき領域をなかなか把握できません。まずは、上記で概説した基本的なメトリクスと、顧客に影響を与えるその他のメトリクスを監視することから始めるとよいでしょう。
データベース監視を始めるための最初のステップ
データベース監視を始めるには、監視ツールが必要です。しかし、特定のシステムコンポーネントに対応するツールからオールインワンのソリューションまで、さまざまな製品が提供されているため、購入にあたっての意思決定が難しい場合があります。組織のニーズに焦点を合わせて製品を絞り込むために、次の質問について検討してみるとよいでしょう。
- ネットワーク、サーバー、アプリケーションなど、どのコンポーネントを監視する必要があるのか?
- どのようなデータを収集し、相関付ける必要があるのか?
- 時間の経過に伴うパターンのみを観察したいのか、それとも重大な問題についてアラートも受け取りたいのか?
- どのレベルのサポートを必要としているのか?
- 監視の予算はどれくらいか?
- オンプレミス環境(MySQL、MariaDB、PostgreSQL、Microsoft SQL Serverなど)、またはクラウド環境(Microsoft Azure、Amazon RDS、Google Cloud、AWS、Amazon Aurora、Oracle Cloudなど)、もしくはその両方を監視する予定か?
データベース監視のメトリクス
ITインフラの他のコンポーネントと同様に、データベースの健全性とパフォーマンスを示すのに役立つメトリクスが数多くあります。しかし、それらすべてを追跡すると、IT管理者の負担が大きくなってしまいます。ですが、基本的な要素を監視することで、データベースの動作を詳しく理解できます。たとえば、以下のようなものがあります。
- 応答時間:あらゆるデータベースにとって重要なメトリクスである応答時間は、データベースサーバーのクエリーごとの平均応答時間を測定します。データベース監視ソリューションでは通常、1つの数値(たとえば、5.4ミリ秒)で表します。また、ほとんどのツールでは、データベースサーバーまたはデータベースインスタンスのすべてのクエリーの平均応答時間を測定し、応答時間をクエリーの種類別(SELECT、INSERT、DELETE、UPDATE)に分類して、グラフ形式で表示することもできます。応答時間の監視は重要です。これにより、セッションでデータベースのリソースを利用できるまでの待機時間を把握し、パフォーマンスの問題の根本原因を積極的に特定して、パフォーマンスに関するより的確な意思決定を行えるためです。
- データベースのスループット:前述のとおり、スループットは、単位時間内にデータベースサーバーによって実行される作業量を表します。通常、1秒あたりに実行されるクエリーの数が測定されます。スループットを監視することで、サーバーが受け取るクエリーの処理速度を把握できます。スループットが低いとサーバーが過負荷になって、各クエリーの応答時間が長くなり、アプリケーションやWebサイトの停止へとつながります。応答時間と同様に、ほとんどのデータベース監視ソリューションでは、最もよく使用されるクエリーの種類別にスループットを監視できます。
- 確立済みの接続:データベース接続を確立することで、クライアントソフトウェアとデータベース間で通信を行い、アプリケーションがクエリーを送信し、データベースのデータソースにアクセスして、応答を受信できるようになります。データベースサーバーがダウンすると、多くの接続が確立されたままとなり、データベースサーバーが過負荷になって、処理速度が低下することがあります。確立済みの接続数を監視することで、データベースのパフォーマンスが低下する前に、数多くの接続が確立されていることで生じる問題に対処できます。
- エラー:データベースは、クエリーが正常に実行されないと必ずエラーを返します。エラーが原因でWebサイトやアプリにアクセスできなくなることがあり、影響を受けるサービスによっては、収益の損失、生産性の低下、ビジネスへのその他の悪影響が生じる可能性があります。エラーを監視することで、より迅速にエラーを修正し、データベースの可用性を向上させることができます。データベース監視ソリューションを使用すると、エラーコードごとのクエリー数を追跡できるため、最も頻繁に発生するエラーを確認し、その解決方法を決定できます。
- リクエストの多いクエリー:データベースサーバーが受け取る上位10件のクエリーを、その頻度と遅延とともに追跡することで、処理を最適化して簡単にパフォーマンスを向上させることができます。
データベースのパフォーマンスメトリクスは他にも多数ありますが、メトリクスを監視するための万能なアプローチは存在しません。とはいえ、ここに挙げたメトリクスを使えば、どのような組織でも強力な基盤を構築できます。
これらは、データベースのパフォーマンス監視を開始するための基本的なメトリクスの一部です。
DevOpsやSRE担当者向けのデータベース監視ツール
監視はシステムアーキテクチャ全体に実装でき、組織のニーズに合わせてカスタマイズすることができます。一般的に導入される監視には次のものがあります。
- リソース監視:サーバー監視またはインフラ監視とも呼ばれるこの監視手法では、ネットワークに接続されたサーバーなどのIT関連リソースのシステムパフォーマンスを追跡します。リソース監視ソリューションを導入すると、CPU負荷率、RAM使用率、ディスクの空き容量など重要なサーバーメトリクスに関するデータを収集して確認できます。
- ネットワーク監視:ネットワーク監視では、ネットワークで送受信するデータを追跡します。ネットワーク監視ツールは、ルーター、スイッチ、ファイアウォール、サーバーなど、コンピューターネットワークに接続されたあらゆるコンポーネントで受信するリクエストや送信する応答をすべて収集します。これらのソリューションに備わっている分析機能を活用して、受信データと送信データの合計量を確認したり、特定のリクエストの頻度を調査したりできます。
- アプリケーションパフォーマンス監視:アプリケーションパフォーマンス監視(APM)を行うと、ユーザーのデバイスで稼動するアプリケーションのパフォーマンスを測定して、アプリの可用性に関する重要な情報を得ることができます。APMソリューションは、エラー率、CPU使用率、応答時間など、サービス全体のパフォーマンスに関するデータを収集します。また、サービスにリクエストを送信し、その応答の速度と完全性を追跡する機能を備えています。APMを使用すると、ユーザーに影響を与える前に、アプリケーションのパフォーマンスに関する問題を検出して診断できるため、アプリサービスで期待されるパフォーマンスレベルを確保できます。
- サードパーティコンポーネント監視:この監視手法では、アーキテクチャ内のサードパーティコンポーネントの健全性と可用性を監視します。マイクロサービスベースのアーキテクチャでは、サービスで使用するクラウドホスト、広告サーバー、その他の外部サービスが適切に機能している必要があるため、とりわけこの監視が重要となります。APMソリューションと同様に、サードパーティコンポーネント監視ツールは、サードパーティサービスに独自のリクエストを送信して、パフォーマンスの状態を確認します。
監視ソフトウェアや監視ツールを選定するにあたり、オープンソース版と商用版のどちらが適切かを検討する必要があります。オープンソースの監視ツールのメリットは価格面と、カスタマイズも全面的に可能なため、既存のアーキテクチャに容易に統合できることです。一方デメリットは、実装と保守に専門的なスキルと知識が求められることが多く、まとまった開発時間が必要になることでしょう。商用ツールの場合、高額になりますが、より堅牢な機能とサポートを備えています。また、ソリューションの管理に加えて、十分なトレーニングとカスタマーサービスが提供され、一般に、ツールを自社の既存スタックに統合するためのサポートも受けられます。
データベース監視のベストプラクティス
以下のようないくつかのベストプラクティスに従うことで、データベース監視の取り組みを最大化できます。
- 可用性とリソース使用量の監視:最も基本的な監視方法は、営業時間中および営業時間外の両方で、データベースがオンラインであることを定期的に確認することです。ほとんどの監視ツールはこれを自動的に行い、サービスが停止したらチームにアラートを発します。CPU、メモリー、ディスク、ネットワークなどのリソース使用量を監視することも重要であり、これによって、パフォーマンスが低下する前に問題に関するアラートを受け取ることができます。
- 時間のかかるクエリーの監視:アプリケーションのパフォーマンスを向上させる最も簡単な方法の1つが、時間のかかるクエリーの改善です。クエリーが完了するまでの時間を追跡し、クエリーのリソース使用量を測定することで、データベースのクエリー処理の改善に必要なインサイトが得られます。クエリーは、データベースのパフォーマンスに非常に大きな影響を与えるため、よく使用されるクエリーの監視から始めましょう。
- スループットの測定:前述のとおり、スループットとは、データベースが通常の条件下で実行している作業量を指します。数週間にわたって間隔を空けて測定値を取得することにより、ベースラインを割り出します。このベースラインをもとにアラートのしきい値を設定し、通常の値から予想外の変動があった場合に通知を受け取り、調査を促すことができます。
- 監視ログ:データベースのログには情報が豊富に含まれているため、時間のかかるクエリーのログ、スケジュールされたタスクのログ、定期メンテナンスのログなど、すべての情報を収集することが重要です。ログ情報は、エラーや障害の原因の特定と解決、パフォーマンスの傾向の特定、潜在的な問題の予測、さらには悪意のあるアクティビティの発見に役立ちます。データベースシステムが生成する大量のログデータを手動で解析することは不可能ですが、優れたデータベース監視ツールがあれば、関連するデータをダッシュボードで可視化できるため、詳細をすぐに把握して行動に移すことができます。
データベースのパフォーマンス監視におけるオブザーバビリティの役割
従来のエージェントベースの監視手法やツールでは限界があるため、データベースのパフォーマンス監視では今後、オブザーバビリティの導入が進むでしょう。オブザーバビリティは、システムの外部出力を把握することによって、システム内部の状態が良好かどうかを推し量る手段です。監視データとインサイトを活用することで、ITシステムとその健全性やパフォーマンスをより包括的に把握できます。
オブザーバビリティと監視の違いは、監視では、何を監視すべきかを事前に判断する必要があるのに対して、オブザーバビリティでは、システムのパフォーマンスを継続的に監視し、機械学習を使用してその結果について質問を投げかけることによって、何が重要かを判断できる点です。現代の分散システムでは、すべてのバグや障害を予測することは不可能であるため、この機能は非常に重要です。
オブザーバビリティは、最新の分散システムの予測不可能性への対応に適しています。問題が発生したときにシステムの動作について質問することができる質問ベースのアプローチであるため、どんな質問をすればいいのか、どんな情報が必要なのかを事前に把握する必要はありません。「なぜXが故障したのか?」、「現在起きている遅延の原因は何か?」、「この問題は現在すべてのモバイルユーザーに影響を与えているのか、それとも一部のユーザーだけか?」などは、オブザーバビリティによって効果的な答えを得られる質問のほんの一例です。
データベースは現代の組織を支えています。パフォーマンスが低下すると、アプリケーションやサービスが遅くなり、最終的にビジネスに悪影響を及ぼす可能性があります。データベース監視で可視性を獲得すれば、可用性の確保、パフォーマンスの最適化はもちろん、最高レベルのユーザーエクスペリエンスを実現できます。
ガートナー社のSIEM部門のマジッククアドラント
ガートナー社の最新のマジッククアドラントでSIEM市場の動向を掴みましょう。