Monitoring metrics reference
============================

PGD Monitorは、これらのメトリックを収集し、
:ref:`bdr.ts_metrics() <System functions>` および関連ファンクション、およびそのREST API、Web
UI、およびPrometheus ``/metrics`` エンドポイントを使用して、
SQL全体で一貫して公開します。これらの各インターフェイスを有効にしてアクセスする方法については、
:ref:`Using the PGD Monitor <Using the PGD Monitor>` を参照してください。

PGD時系列メトリック
-------------------

これらのメトリックは、 ``bdr.ts_metrics()``
が返すレジストリから取得します。監視ワーカーは、特に断りのない限り、およそ10秒ごとにそれらをサンプリングします。

.. csv-table::
  :header: Metric,Unit,Sample interval,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `pgd_sys_cpu_pct`,Percent,10s,合計容量に対するCPU使用率。
  `pgd_sys_mem_pct`,Percent,10s,使用可能な合計に対するメモリ使用率。
  `pgd_sys_disk_pgdata_free_bytes`,Bytes,60s,PGDATAボリュームの空きディスク領域。
  `pgd_sys_disk_pgdata_total_bytes`,Bytes,60s,PGDATAボリュームの合計ディスク領域。
  `pgd_sys_disk_pgwal_free_bytes`,Bytes,60s,ログ先行書き込みWALボリュームの空きディスク領域。
  `pgd_sys_disk_pgwal_total_bytes`,Bytes,60s,WALボリュームの合計ディスク領域。
  `pgd_pg_connections`,Count,10s,アクティブなPostgresバックエンド接続の合計数。
  `pgd_pg_active_queries`,Count,10s,現在アクティブな非アイドルクエリーの数。
  `pgd_connmgr_conns_rw`,Count,10s,Connection Managerの読み取り/書き込みプロキシポートを介したクライアント接続。
  `pgd_connmgr_conns_ro`,Count,10s,接続マネージャーの読み取り専用プロキシポートを介したクライアント接続。
  `pgd_pg_tps`,Per second,10s,1秒ごとのコミットおよび中止されたトランザクション。
  `pgd_pg_cache_hit_pct`,Percent,10s,PGDデータベースのバッファキャッシュヒット率。
  `pgd_pg_deadlocks_rate`,Per second,10s,PGDデータベースの1秒ごとのデッドロック数。
  `pgd_pg_wraparound_age_max`,Count,60s,すべてのデータベースにわたる最も古いフローズンxidホライズンのトランザクションの経過時間。
  `pgd_pg_longest_tx_seconds`,Seconds,10s,最も長く開いているトランザクションの秒単位の経過時間。
  `pgd_max_replay_lag_bytes`,Bytes,10s,すべてのピアにわたるバイト単位の最大レプリケーション再生遅延。
  `pgd_oldest_kept_lag_bytes`,Bytes,10s,クラスターが必要とする保持WALのサイズ。グループスロットを使用して維持されます。
  `pgd_analytics_lag_bytes`,Bytes,10s,分析ノードのバイト単位のレプリケーションラグ。
  `pgd_clock_drift_max_milliseconds`,Milliseconds,10s,ノード全体のおおよその最大クロックドリフト。
  `pgd_conflicts_rate`,Per second,10s,すべての適用ワーカーにわたる1秒ごとのレプリケーション競合。
  `pgd_apply_errors_rate`,Per second,10s,すべての適用ワーカーにおける1秒ごとの適用エラー。

コミットレイテンシーヒストグラム
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``pgd_commit_latency_milliseconds``
は、すべてのアクティブなコミットスコープにわたってミリ秒単位の平均コミットレイテンシーを提供するヒストグラム種類のメトリックです。監視ワーカーは60秒ごとにそれをサンプリングします。
``bdr.ts_histogram()`` 、\ ``bdr.ts_histogram_distribution()``
、または\ ``bdr.ts_histogram_cumulative()``
で、またはPrometheusエンドポイントで\ ``_bucket`` 、\ ``_sum``
、および\ ``_count`` シリーズとして読み取ります。

クラスター状態メトリック
------------------------

これらのIDとRaftメトリックは、時系列レジストリではなく、キャッシュされたクラスターカタログデータから取得されるため、PrometheusエンドポイントとREST
APIで使用できますが、\ ``bdr.ts_metrics()``
を介しては使用できません。特に断りのない限り、それぞれは定数値\ ``1``
を持つIDメトリックであり、ラベルでペイロードを運びます。

.. csv-table::
  :header: Metric,Labels,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `pgd_node_info`,`node_name`,要求を提供するノードのID。
  `pgd_raft_state`,"`node_group`, `state`",グループ内のこのノードのRaft状態。
  `pgd_raft_leader`,"`node_group`, `node_name`",グループの現在のRaftリーダー。
  `pgd_raft_term`,`node_group`,現在のRaftタームゲージ。
  `pgd_raft_commit_index`,`node_group`,Raftコミットインデックスゲージ。
  `pgd_write_leader`,"`node_group`, `node_name`",グループの現在の書き込みリーダー。
  `pgd_read_node`,"`node_group`, `node_name`",グループの現在の読み取りノード。読み取りノードごとに1回繰り返します。
  `pgd_replication_sent_lsn_bytes`,`target_name`,`0/0`以降のバイトとしてターゲットノードに送信されたWAL位置。
  `pgd_replication_replay_lsn_bytes`,`target_name`,`0/0`以降のバイトとして、ターゲットノードによって適用されたWAL位置。
  `pgd_replication_received_lsn_bytes`,`origin_name`,`0/0`以降のバイトとして、オリジンノードから受け取ったWAL位置。

``0/0``
以降、ログシーケンス番号LSN位置はバイトとしてエクスポートされるため、PromQLで直接それらを減算できます。たとえば、送信マイナス再生は、バイト単位の遅延を適用することに等しいです。

コミットスコープカウンター
--------------------------

``commit_scope``
のラベルが付けられるコミットスコープごとのトランザクションカウンター。使用されたスコープのみが報告されます。

.. csv-table::
  :header: Metric,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `pgd_commit_scope_calls_total`,コミットスコープを使用したトランザクション。
  `pgd_commit_scope_commits_total`,コミットスコープの下でコミットします。
  `pgd_commit_scope_aborts_total`,コミットスコープで中止します。
  `pgd_commit_scope_degrades_total`,コミットスコープで低下モードにヒットしたトランザクション。
  `pgd_commit_scope_config_degrades_total`,コミットスコープが既に縮退モードであるときに開始されたトランザクション。

Postgres統計メトリック
----------------------

これらのメトリックは、ローカルノードの統計ビューから読み取られたPrometheus
 
`postgres_exporter <https://github.com/prometheus-community/postgres_exporter>`_ コレクターをミラーリングします。これらはPrometheusエンドポイントでのみ、 :ref:`bdr.monitor_prometheus_pg_metrics <bdr.monitor_prometheus_pg_metrics>` が\ ``on``
デフォルトの場合にのみ使用できます。 ``postgres_exporter``
が既に実行されており、重複したシリーズが必要ない場合、ノードで\ ``off``
に設定して、構成をリロードします。
PGDネイティブメトリックは、いずれの方法でもエクスポートし続けます。

データベースごと
^^^^^^^^^^^^^^^^

``datname``
によるラベル付け。ラップアラウンドにはフリーズxidホライズンが重要であるため、テンプレートデータベースが含まれます。

.. csv-table::
  :header: Metric,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `pgd_pg_stat_database_numbackends`,Gauge,現在データベースに接続しているバックエンド。
  `pgd_pg_stat_database_xact_commit_total`,Counter,コミットされたトランザクション。
  `pgd_pg_stat_database_xact_rollback_total`,Counter,ロールバックされたトランザクション。
  `pgd_pg_stat_database_blks_read_total`,Counter,ディスクブロックの読み取り。
  `pgd_pg_stat_database_blks_hit_total`,Counter,共有バッファで見つかったディスクブロック。
  `pgd_pg_stat_database_deadlocks_total`,Counter,デッドロックが検出されました。
  `pgd_pg_stat_database_temp_files_total`,Counter,クエリーによって書き込まれる一時ファイル。
  `pgd_pg_stat_database_temp_bytes_total`,Counter,クエリによって一時ファイルに書き込まれたバイト数。
  `pgd_pg_database_wraparound_age_datfrozenxid`,Gauge,データベースのフローズンxidホライズンのトランザクションの経過時間。
  `pgd_pg_database_wraparound_age_datminmxid`,Gauge,データベースのminimum-multixactホライズンのmultixactsでの経過時間。
  `pgd_pg_database_size_bytes`,Gauge,バイト単位のデータベースサイズ。

非PGDレプリケーションスロット
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``slot_name`` 、\ ``slot_type`` 、および\ ``database``
によってラベル付けされます。
PGD自分のスロットには既に上記の専用の\ ``pgd_replication_*``
ファミリーがあるため、このグループは代わりに外部または孤立したスロット、変更データキャプチャCDCコンシューマ、削除されたサブスクライバ、またはWALをサイレントに保持するフィジカルスタンバイなどをキャッチします。

.. csv-table::
  :header: Metric,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `pgd_pg_replication_slot_active`,スロットにアクティブな接続があるかどうか。
  `pgd_pg_replication_slot_retained_wal_bytes`,スロットによって保持されるWAL。
  `pgd_pg_replication_slot_safe_wal_size_bytes`,スロットは`max_slot_wal_keep_size`に到達する前に引き続き書き込むことができます。
  `pgd_pg_replication_slot_wal_status`,スロットのWAL可用性IDメトリック、値が`reserved`、`extended`、`unreserved`、または`lost`の`wal_status`とラベル付けされます。

インスタンス全体のメトリック
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. csv-table::
  :header: Metric,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `pgd_pg_wal_segments`,Gauge,`pg_wal`のWALセグメントファイル。
  `pgd_pg_wal_size_bytes`,Gauge,`pg_wal`のWALセグメントファイルの合計サイズ。
  `pgd_pg_stat_archiver_archived_total`,Counter,WALファイルは正常にアーカイブされました。
  `pgd_pg_stat_archiver_failed_total`,Counter,失敗したWALアーカイブ試行。
  `pgd_pg_stat_archiver_last_archive_age_seconds`,Gauge,最後に成功したWALアーカイブからの秒数。どちらかが成功するまで不在。
  `pgd_pg_stat_checkpointer_timed_total`,Counter,スケジュールされたチェックポイントが実行されました。
  `pgd_pg_stat_checkpointer_requested_total`,Counter,要求されたチェックポイントが実行され、スケジュールではなくWALボリュームによって駆動されます。
  `pgd_pg_stat_checkpointer_write_time_seconds_total`,Counter,チェックポイントファイルのディスクへの書き込みに費やされた秒数。
  `pgd_pg_stat_checkpointer_sync_time_seconds_total`,Counter,チェックポイントファイルをディスクとの同期に費やした秒数。
  `pgd_pg_stat_checkpointer_buffers_written_total`,Counter,チェックポイントおよびリスタートポイント中に書き込まれるバッファー。
  `pgd_pg_stat_bgwriter_buffers_clean_total`,Counter,バックグラウンドライタによって書き込まれたバッファー。
  `pgd_pg_stat_bgwriter_maxwritten_clean_total`,Counter,バックライタのライタークリーニングスキャンは、書き込み制限で停止しました。
  `pgd_pg_stat_bgwriter_buffers_alloc_total`,Counter,割り当てられたバッファー。
  `pgd_pg_postmaster_start_time_seconds`,Gauge,ポストマスター起動のUNIXタイムスタンプ、インスタンスのアップタイムを提供します。

17より前のPostgresバージョンでは、\ ``checkpointer``
カウンターは代わりに\ ``pg_stat_bgwriter``
から取得します。メトリック名はバージョン間で同一のままです。

アクティビティとロック
^^^^^^^^^^^^^^^^^^^^^^

.. csv-table::
  :header: Metric,Labels,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `pgd_pg_stat_activity_backends`,`state`,状態別のクライアントバックエンド。
  `pgd_pg_stat_activity_max_tx_duration_seconds`,`state`,状態ごとの、クライアントバックエンド間で最も古いオープントランザクションの経過時間。
  `pgd_pg_stat_activity_waiting_backends`,`wait_event_type`,待機イベントタイプ別の現在待機しているバックエンド。アイドルなバックグラウンドワーカーは常に`Activity`待機を報告します。競合は`Lock`、`LWLock`、および`BufferPin`として表示されます。
  `pgd_pg_locks`,"`mode`, `granted`","ロックモードごとに、保持または待機されているロック。 `granted=""false""`の行は、ロックで待機しているバックエンドです。"
