pg_statsinfo ライブラリ
pg_statsinfo ライブラリは以下の機能から構成されています。
- ライブラリがロードされた際に 拡張設定パラメータを登録し、必須パラメータを強制変更します。
- ライブラリがロードされた際に pg_statsinfo デーモンを起動します。
- pg_statsinfo デーモンが利用する、統計情報ビューだけでは収集の困難な内部情報を取得するための各種関数を提供します。
pg_statsinfo 実行ファイル
pg_statsinfo 実行ファイルはデーモンとして動作し、Logger, Collector, Writer という3つの構成要素から成ります。
Logger
PostgreSQLサーバが出力するCSVログと、Collector, Writerから受信したメッセージを読み込み、下記を行います。
- CSVログと内部エラーメッセージを、メッセージレベルに応じてテキストログ及びsyslogへ転送します。
- CSVログからチェックポイント、自動バキューム、シャットダウン、リロード、手動スナップショットに関するメッセージを抽出し、適切に処理します。
- postmaster プロセスを監視し、異常終了している場合には pg_statsinfo デーモンも終了させます。
Collector
監視対象インスタンスの対象データベースに接続し、下記を行います。
- 監視対象インスタンスへ接続し、statsinfo スキーマをインストールします。
- スナップショットとして必要となる情報を定期的にサンプリングします。
サンプリングでは、処理中やアイドル中などのプロセス数の集計や、最長ロングトランザクションの情報を収集し更新します。
これらの情報は統計情報ビューからでは収集することが難しいため、ポーリングを行って情報を収集しています。
- スナップショットを取得し、リポジトリに保存するため Writer に送信します。
Writer
Loggerから受信したチェックポイントや自動バキュームに関する情報と、Collectorから受信したスナップショット情報を読み込み、下記を行います。
- リポジトリに接続し、statsrepo スキーマをインストールします。
- リポジトリへ、スナップショット、チェックポイント、自動バキューム情報を保存します。
- アラート関数を実行し、メッセージが返却された場合は ALERT レベルのメッセージとしてLoggerに送信します。