sql >> データベース >  >> RDS >> PostgreSQL

Moodle用のPostgreSQLを監視するためのヒント

    Moodleは、教育者、管理者、学習者に、パーソナライズされた学習環境を作成するための単一の堅牢で安全な統合システムを提供するように設計された学習管理システム(LMS)です。さまざまなデータベーステクノロジー(MariaDB、MySQL、PostgreSQLなど)をサポートします。

    COVID-19により、最近、自宅での作業と学習が指数関数的に増加しているため、この種の学習プラットフォームの可用性とパフォーマンスがますます重要になっています。すべてが正常に機能していることを確認する唯一の方法は、適切な監視およびアラートシステムを導入することですが、問題は、システムが正常に動作していることを確認するために何を監視する必要があるかです。

    このブログでは、PostgreSQL Moodleデータベースで監視する必要があるものと、ClusterControlを使用して監視を簡単にする方法について説明します。

    PostgreSQLで監視するもの

    データベースノードまたはクラスターを監視する場合、考慮すべき主な事項が2つあります。オペレーティングシステムとデータベース自体です。両側から監視するメトリックと、それを実行する方法を定義する必要があります。

    オペレーティングシステムの監視

    1つの重要なこと(これはすべてのデータベースエンジン、さらにはすべてのデータベースエンジンに共通です)システム)は、オペレーティングシステムの動作を監視することです。ここで確認すべき点がいくつかあります。

    CPU使用率

    通常の動作でない場合、CPU使用率の過剰な割合が問題になる可能性があります。この場合、この問題を引き起こしている1つまたは複数のプロセスを特定することが重要です。問題がデータベースプロセスにある場合は、データベース内で何が起こっているかを確認する必要があります。

    RAMメモリまたはSWAPの使用量

    この指標に高い値が表示されていて、システムに何も変更がない場合は、データベースの構成を確認する必要があります。 shared_buffersやwork_memなどのパラメーターは、PostgreSQLデータベースに使用できるメモリの量を定義するため、これに直接影響を与える可能性があります。

    ディスク使用量

    PostgreSQLログファイルに多数のエラーが記録されたり、キャッシュ構成が正しくなかったりする可能性があるため、ディスクスペースの使用量の異常な増加やディスクアクセスの過剰な消費を監視することが重要です。クエリの処理にメモリを使用する代わりに、重要なディスクアクセスの消費を生成します。

    平均負荷 上記の3つのポイントに関連しています。 CPU、RAM、またはディスクの過剰な使用により、高い負荷平均が生成される可能性があります。

    ネットワーク

    アプリケーションがデータベースに接続できない(または失われたパッケージを接続できない)ため、ネットワークの問題がすべてのシステムに影響を与える可能性があるため、これは実際に監視する重要な指標です。遅延またはパケット損失を監視できます。主な問題は、ネットワークの飽和、ハードウェアの問題、または単にネットワーク構成の不良である可能性があります。

    データベースの監視

    PostgreSQLデータベースを監視することは、問題が発生しているかどうかを確認するだけでなく、データベースのパフォーマンスを向上させるために何かを変更する必要があるかどうかを知ることも重要です。これはおそらく最も重要なことの1つです。データベースで監視します。これに重要ないくつかの指標を見てみましょう。

    クエリの監視

    一般に、データベースはデフォルトで互換性と安定性を念頭に置いて構成されているため、クエリとそのパターンを理解し、トラフィックに応じてデータベースを構成する必要があります。ここでは、EXPLAINコマンドを使用して、特定のクエリのクエリプランを確認できます。また、各ノードのSELECT、INSERT、UPDATE、またはDELETEの量を監視することもできます。長いクエリまたは多数のクエリを同時に実行している場合、それはすべてのシステムで問題になる可能性があります。

    アクティブセッション アクティブなセッションの数も監視する必要があります。制限に近づいている場合は、問題がないかどうか、またはデータベース構成の最大接続値を増やす必要があるかどうかを確認する必要があります。数の違いは、接続の増加または減少である可能性があります。接続プール、ロック、またはネットワークの問題の不適切な使用は、接続数に関連する最も一般的な問題です。

    ロック

    別のクエリを待機しているクエリがある場合は、その別のクエリが通常のプロセスであるか、何か新しいものであるかを確認する必要があります。たとえば、誰かが大きなテーブルを更新している場合、このアクションはデータベースの通常の動作に影響を及ぼし、多数のロックを生成する可能性があります。

    レプリケーション

    レプリケーションを監視するための主要なメトリックは、ラグとレプリケーションの状態です。最も一般的な問題は、ネットワーキングの問題、ハードウェアリソースの問題、または寸法の問題です。レプリケーションの問題に直面している場合は、高可用性環境を確保するために修正する必要があるため、このことをできるだけ早く知る必要があります。

    バックアップ

    データ損失の回避は基本的なDBAタスクの1つであるため、バックアップを取る必要があるだけでなく、バ​​ックアップが完了したかどうか、およびバックアップが使用可能かどうかを知る必要があります。通常、この最後の点は考慮されませんが、バックアッププロセスでおそらく最も重要なチェックです。

    データベースログ

    データベースログを監視して、エラー、認証の問題、さらには長時間実行されるクエリがないかどうかを確認する必要があります。ほとんどのエラーは、それらを修正するための詳細な有用な情報とともにログファイルに書き込まれます。

    通知とアラート

    各問題に関する通知を受け取らなければ、システムを監視するだけでは不十分です。警告システムがない場合は、監視ツールにアクセスしてすべてが正常かどうかを確認する必要があります。何時間も前から大きな問題が発生している可能性があります。このアラートジョブは、電子メールアラート、テキストアラート、またはSlackなどの他のツールを使用して実行できます。

    ClusterControlを使用したPostgreSQLMoodleデータベースの監視

    ClusterControlは、使いやすいインターフェイスからデータベースを展開、管理、監視、および拡張するのに役立つ管理および監視システムです。 ClusterControlは、トップのオープンソースデータベーステクノロジーをサポートしており、新しいノードの追加とスケーリング、バックアップと復元の実行など、定期的に実行する必要のあるデータベースタスクの多くを自動化できます。

    事前定義されたダッシュボードのセットを使用してサーバーをリアルタイムで監視し、最も一般的な指標のいくつかを分析できます。

    クラスターで使用可能なグラフをカスタマイズでき、次のことができます。エージェントベースの監視を有効にして、より詳細なダッシュボードを生成します。

    クラスター内のイベントを通知するアラートを作成することもできますが、または、PagerDutyやSlackなどのさまざまなサービスと統合します。

    クエリモニターセクションでは、実行中の上位クエリを見つけることができますデータベーストラフィックを監視するためのクエリ、クエリの外れ値、およびクエリの統計。

    バックアップ管理のために、ClusterControlはバックアップを一元化して、データ、および検証バックアップ機能を使用すると、バックアップが適切かどうかを確認できます。

    この検証バックアップジョブは、別のスタンドアロンホストにバックアップを復元するため、バックアップが機能していることを確認できます。

    最後に、ログを確認するためにデータベースノードにアクセスする必要はありません。すべてのデータベースログは、ClusterControlログセクションに一元的に表示されます。

    ご覧のとおり、上記のすべてを同じものから処理できます。一元化されたシステム:ClusterControl。

    ClusterControlコマンドラインを使用した監視

    タスクのスクリプト作成と自動化、またはコマンドラインだけを使用する場合でも、ClusterControlにはs9sツールがあります。これは、データベースクラスターを管理するためのコマンドラインツールです。

    クラスターリスト ノードリスト

    ClusterControlで表示できるすべてのタスクを実行できますUI(およびそれ以上)。この機能をSlackなどの外部ツールと統合して、そこから管理できます。

    結論

    Moodle PostgreSQLデータベースの監視は必要ですが、これを支援するツールがない場合は時間のかかる作業でもあります。このブログでは、Moodle PostgreSQLデータベースで監視するいくつかの主要なメトリックと、ClusterControlを使用してシステムを制御下に置く方法について説明しました。


    1. SQL Serverクエリの最大サイズ? IN句?より良いアプローチはありますか

    2. LEFT JOINを使用してクエリを実行すると、カウントが0の行が返されません。

    3. データベーステーブルのtable_nameからcount(1)を選択するとはどういう意味ですか?

    4. LOAD DATA INFILEエラーコード:13