データベースの現在の状態を理解する必要があるため、データベースの監視とアラートはデータベース操作の特に重要な部分です。適切なデータベース監視が行われていないと、データベースの問題をすばやく見つけることができません。これにより、ダウンタイムが発生する可能性があります。
監視に使用できるツールの1つは、PostgreSQLデータベースの監視とアラートを行うためのSaaSアプリケーションであるpgDashです。
pgDashのインストール手順
pgDashの登録は、Webサイトから行うか、RapidLoopが提供するようにダウンロード(セルフホスト)することもできます。
pgDashのインストールプロセスは簡単です。必要なパッケージをpgDashからダウンロードして、ホスト/データベースサーバー側で構成する必要があります。
[[email protected] ~]$ curl -O -L https://github.com/rapidloop/pgmetrics/releases/download/v1.9.0/pgmetrics_1.9.0_linux_amd64.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 647 100 647 0 0 965 0 --:--:-- --:--:-- --:--:-- 964
100 3576k 100 3576k 0 0 189k 0 0:00:18 0:00:18 --:--:-- 345k
[[email protected] ~]$ tar xvf pgmetrics_1.9.0_linux_amd64.tar.gz
pgmetrics_1.9.0_linux_amd64/LICENSE
pgmetrics_1.9.0_linux_amd64/README.md
pgmetrics_1.9.0_linux_amd64/pgmetrics
[[email protected] ~]$ curl -O -L https://github.com/rapidloop/pgdash/releases/download/v1.5.1/pgdash_1.5.1_linux_amd64.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 644 100 644 0 0 1370 0 --:--:-- --:--:-- --:--:-- 1367
100 2314k 100 2314k 0 0 361k 0 0:00:06 0:00:06 --:--:-- 560k
[[email protected] ~]$ tar xvf pgdash_1.5.1_linux_amd64.tar.gz
pgdash_1.5.1_linux_amd64/LICENSE
pgdash_1.5.1_linux_amd64/README.md
pgdash_1.5.1_linux_amd64/pgdash
[[email protected] ~]$ ./pgmetrics_1.9.0_linux_amd64/pgmetrics --no-password -f json ccdb | ./pgdash_1.5.1_linux_amd64/pgdash -a NrxaHk3JH2ztLI06qQlA4o report myserver1
pgDashとは別に、監視用に別のパッケージpgmetricsをインストールする必要があります。 pgmetricsは、pgDashが必要とするデータベース内の情報と統計を収集することを目的としたオープンソースユーティリティであり、pgdashの役割は、その情報をダッシュボードに送信することです。
監視プラットフォームにデータベースを追加する場合は、次のものが必要になります。データベースごとに上記のプロセスを繰り返します。
pgDashのインストールは簡単ですが、監視する必要のある追加のデータベースがある場合に問題になる可能性のある反復プロセスがあります。ほとんどの場合、そのための自動化スクリプトを作成する必要があります。
pgDashメトリクス
pgDashダッシュボードには3つの主な機能があり、それらは次のとおりです。
- ダッシュボード :概要、データベース、クエリ、バックエンド、ロック、テーブルスペース、レプリケーション、WALファイル、BGライター、バキューム、ロール、構成などのサブメニューで構成されています。
- ツール :インデックス管理、テーブルスペース管理、診断、Top-Kなどのサブメニューで構成されます。
- アラート :アラートや変更アラートなどのサブメニューで構成されています。
ClusterControlによるPostgreSQLモニタリング
ClusterControlによって実行される監視では、sshメソッドを使用し、ダッシュボードに表示する必要のある情報を収集する際に、コントローラーノードからターゲットデータベースノードに直接接続します。
ClusterControlには、簡単にアクティブ化できるエージェントベースの監視機能もあります。以下でご覧いただけます...
ClusterControlは、プロメテウスのインストールプロセス、ノードエクスポーター、PostgreSQLを実行します。メトリックを表示するためにダッシュボードに必要な情報を収集および収集することを目的とした、ターゲットデータベース内のエクスポーター。
エージェントベースの監視がアクティブな場合、新しいターゲットデータベースは自動的に追加され、エージェントベースの監視によって監視されます。
ClusterControlダッシュボード
ここでは、PostgreSQLクラスターの概要画面とシステム情報画面で情報を確認できます。この機能では、データベースのバージョン、トランザクションID、最終チェックポイント、サーバーが稼働している日時などの詳細情報を確認できます。この情報を以下に示します:
システム情報ページでは、負荷平均などの情報を取得できます。メモリ使用量、スワップ使用量、下の図を参照してください:
- データベース :データベース名、データベースサイズ、テーブル数、インデックス、テーブルスペースなどの情報を取得できます。
- クエリ :クエリからの呼び出し、ディスク書き込み、ディスク読み取り、バッファヒットを監視できます。また、特定の期間内に実行されるクエリを検索できます。
- バックエンド :データベースバックエンドの現在の状態を監視できます。この情報内で、ロックを待機しているバックエンド、他の待機中のバックエンド、トランザクションのオープン時間が長すぎる、トランザクションでのバックエンドのアイドリングなどの重要な詳細が提供されます。データベースで実行されているすべてのバックエンドも表示できます。
- ロック :合計ロック数、許可されていないロック、ブロックされたクエリの数を確認できます。
- テーブルスペース :テーブルスペースに関連する情報を提供します。表領域のサイズ、ディスクとiノードの使用量。
- レプリケーション :PostgreSQLデータベースでレプリケーションのステータスを監視できます。レプリケーションスロット、受信レプリケーション、送信レプリケーション、レプリケーションパブリケーション、レプリケーションサブスクリプションから開始できます。
- ウォルマートファイル :WAL(ログ先行書き込み)に関連する情報と統計情報を提供します。例:WALファイル数、WAL生成率、1時間ごとに生成されるWALファイル。
- BGライター :チェックポイントデータベース、書き込まれたバッファ、およびバックグラウンドライターに関連するパラメータに関連する情報を提供します。
- バキュームプログレス :データベースで実行されるバキュームに関連する情報と、バキュームパラメータが含まれています。
- 役割 :特権など、データベースに存在する役割に関連する情報が含まれています。
- 構成 :データベースPostgreSQLのパラメータが含まれています。
ツール内には、情報を提供するインデックス管理などのサブメニューがあります。未使用インデックス、Bloatインデックス、キャッシュヒット率の低いdanインデックス。 Tablespace Managementは、Tablespaceおよびで利用可能な他のオブジェクトに関連する情報を提供します。
診断。上位10の最も肥大化したテーブル、上位10の最も肥大化したインデックス、非アクティブなレプリケーションスロットのリスト、上位10の最も長く実行されているトランザクションなどを通じて発生する可能性のある潜在的な問題を理解します。
ClusterControlには、個別のメニューの下にいくつかのメトリックがあります。それらは、概要、ノード、ダッシュボード、クエリモニター、パフォーマンスです。下の図を参照してください:
エージェントベースの監視が有効になっている場合、統計に関連するすべての情報データベースに関連するその他の情報は、時系列データベース(プロメテウス)に保存されます。以下に示すように、ClusterControlでこれらの情報を確認できます:
クエリモニターでは、上位のクエリ、実行中のクエリ、クエリを見つけることができます外れ値、またはクエリ統計メニュー。これらは、実行中のクエリ、上位のクエリ、およびデータベースの統計に関連する情報を提供します。低速クエリと非インデックスクエリを構成することもできます。
パフォーマンスには、データベースとテーブルサイズの統計情報を表示できるDBGrowthなどのサブメニューがあります。 Schema Analyzerは、主キーなしで冗長インデックスとテーブルに関連する情報を提供します。
PostgreSQLアラート
- アラートルール :アラートルールが主要な役割を果たします。DBAへのアラームをトリガーできるパラメータとして制限を定義できます。
- サードパーティの統合 :は、PagerDuty、OpsGenie、Slack、または電子メールを介したコミュニケーションとコラボレーションのためのインシデント管理プラットフォームへの統合チャネルです。
PgDashには、アラートルールに関連して設定できるデータベースパラメータの多くのオプションがあり、サーバー、データベース、テーブル、インデックス、テーブルスペース、クエリから始まるいくつかのレイヤーに分割されています。以下に示すように、これらの情報はpgDashで確認できます...
サードパーティの統合チャネルに関しては、pgDashは次のようないくつかのチャネルをサポートしています。 Slack、Pagerduty、VictorOps、Xmatters、電子メール、または他のサービスで使用できるように独自のWebhookを作成するなど。
以下は、pgDashのサードパーティ統合の外観です:
pgDashとは対照的に、ClusterControlにはより広くより一般的なイベントアラートオプションがあります、ホスト、ネットワーク、クラスター、およびデータベース自体に関連するアラートから始めます。選択できるイベントオプションの例を次に示します:
ClusterControlは、1つのイベントアラートで複数のデータベースクラスターを選択できます。 ClusterControlのサードパーティ統合は、PagerDuty、VictorOps、Telegram、OpsGenie、Slack、ServiceNowなどのいくつかのインシデント管理およびコミュニケーション/コラボレーションツールをサポートするか、独自のWebhookを作成できます。
アラートルールセクションでは、pgDashとClusterControlの両方に長所と短所があります。 pgDashの利点は、送信される内容に関連する非常に詳細なデータベースアラートを設定できることですが、欠点は、各データベースでこれらの設定を行う必要があることです(ただし、他のデータベース構成からインポートする機能があります。
>ClusterControlには詳細なイベントアラートがなく、一般的なデータベースイベントのみですが、ClusterControlはデータベースに関連するアラートを送信できるだけでなく、ノード、クラスター、ネットワークなどからイベントアラートを送信できます。いくつかのデータベースクラスターに対するこれらのアラート。
サードパーティの統合セクションでは、pgDashとClusterControlの両方が、さまざまなサードパーティのインシデント管理および通信チャネルをサポートしています。実際、どちらも独自のWebhookを作成して、他のサービス(Grafanaなど)で使用できるようにすることができます。