OpenTelemetry integration
=========================

モニタリング情報とトレースを `OpenTelemetry <https://opentelemetry.io/>`_ コレクターに報告するようにEDB
Postgres分散を構成できます。

EDB
Postgres分散OTELコレクターは、いくつかのリソース属性を埋めます。これらはすべてのメトリックとトレースにアタッチされます。

-  ``service.name`` は、 ``bdr.otel_service_name``
   構成設定で構成できます。 - ``service.namespace``
   は常に\ ``edb_postgres_distributed`` に設定されます。 -
   ``service.instance.id``
   は、常にPostgresインスタンスのシステム識別子に設定されます。 -
   ``service.version``
   は、PostgresqlインスタンスにロードされたBDR拡張機能の現在のバージョンに設定されます。

OTELとOLTPの互換性
------------------

OTEL接続の場合、統合は、HTTPまたはHTTPSを介してOLTP/HTTPバージョン1.0.0のみをサポートします。
OLTP/gRPCはサポートされていません。

メトリック収集
--------------

構成オプション\ ``bdr.metrics_otel_http_url``
を空以外のURLに設定すると、メトリック収集が有効になります。

以下の表に示すように、さまざまな種類のメトリックが収集されます。

汎用メトリック
^^^^^^^^^^^^^^

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

  pg_backends_by_state,gauge,"conn_state - idle, active, idle in transaction, fastpath functioncall, idle in transaction (aborted), disabled, undefined",特定の状態のバックエンドの数
  pg_oldest_xact_start,gauge,"",最も古いトランザクション開始時刻
  pg_oldest_activity_start,gauge,"",最も古いクエリ開始時刻
  pg_waiting_backends,gauge,"wait_type - LWLock, Lock, BufferPin, Activity, Client, Extension, IPC, Timeout, IO, ??? (for unknown)",待機タイプ別の現在待機しているバックエンドの数
  pg_start_time,gauge,"",サーバーが起動したタイムスタンプ
  pg_reload_time,gauge,"",サーバーが最後に構成をリロードしたタイムスタンプ

レプリケーションメトリック
^^^^^^^^^^^^^^^^^^^^^^^^^^

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

  bdr_slot_sent_lag,gauge,slot_name - name of a slot,各レプリケーションスロットの現在の送信遅延バイト単位
  bdr_slot_write_lag,gauge,slot_name - name of a slot,各レプリケーションスロットの現在のバイト単位の書き込み遅延
  bdr_slot_flush_lag,gauge,slot_name - name of a slot,各レプリケーションスロットのバイト単位の現在のフラッシュラグ
  bdr_slot_apply_lag,gauge,slot_name - name of a slot,各レプリケーションスロットのバイト単位の現在の適用ラグ
  bdr_subscription_receive_lsn,gauge,sub_name - name of subscription,各サブスクリプションの現在受信したLSN
  bdr_subscription_flush_lsn,gauge,sub_name - name of subscription,各サブスクリプションの現在フラッシュされたLSN
  bdr_subscription_apply_lsn,gauge,sub_name - name of subscription,各サブスクリプションに現在適用されているLSN
  bdr_subscription_receiver,gauge,sub_name - name of subscription,サブスクリプションレシーバーが現在実行されているかどうか1かどうか0

コンセンサスメトリック
^^^^^^^^^^^^^^^^^^^^^^

 :ref:`Monitoring Raftコンセンサス <Monitoring Raftコンセンサス>` も参照

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

  bdr_raft_state,gauge,"state_str - RAFT_FOLLOWER, RAFT_CANDIDATE, RAFT_LEADER, RAFT_STOPPED",このノードのコンセンサスのRaft状態
  bdr_raft_protocol_version,gauge,"",このノードで使用されるコンセンサスプロトコルバージョン
  bdr_raft_leader_node,gauge,"",このノードが現在のリーダーと見なすノードのID
  bdr_raft_nodes,gauge,"",コンセンサスに参加するノードの合計数学習者/非投票ノードを含む
  bdr_raft_voting_nodes,gauge,"",コンセンサスにおける実際の投票ノードの数
  bdr_raft_term,gauge,"",このノードが存在する現在のraft
  bdr_raft_commit_index,gauge,"",このノードによってコミットされたRaftコミットインデックス
  bdr_raft_apply_index,gauge,"",このノードによって適用されるRaftコミットインデックス

トレース
--------

OpenTelemetryへのトレース収集には、\ ``bdr.trace_otel_http_url``
を構成し、\ ``bdr.trace_enable``
を使用してトレースを有効にする必要があります。

トレースは、現時点では一部のサブシステム、主にクラスター管理機能に制限されています。トレースには次のスパンが表示されます。

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

  create_node_group,グループの作成
  alter_node_group_config,グループ構成オプションの変更
  alter_node_config,ノード構成オプションの変更
  join_node_group,グループに参加するノード
  join_send_remote_request,参加ノードに代わって参加要求を送信する参加ソース
  add_camo_pair,CAMOペアを追加
  alter_camo_pair,CAMOペアを変更する
  remove_camo_pair,CAMOペアの削除
  alter_commit_scope,コミットスコープ定義の変更新規作成または既存の更新のいずれか
  alter_proxy_config,PGD-プロキシインスタンスの構成を変更します新規作成または既存の更新のいずれか
  walmsg_global_lock_send,グローバルロックWALメッセージを送信する
  walmsg_global_lock_recv,受信したグローバルロックWALメッセージ
  ddl_epoch_apply,グローバルロックエポック適用新しいエポックを開始するためにクラスターが十分に同期していることを確認します
  walmsg_catchup,ノードの削除中のキャッチアップ WALメッセージ
  raft_send_appendentries,内部Raftブックキーピングメッセージ
  raft_recv_appendentries,内部Raftブックキーピングメッセージ
  raft_request,Raftリクエストの実行
  raft_query,Raftクエリーの実行
  msgb_send,コンセンサスメッセージングレイヤーメッセージ
  msgb_recv_receive,コンセンサスメッセージングレイヤーメッセージ
  msgb_recv_deliver,コンセンサスメッセージングレイヤーのメッセージ配信
  preprocess_ddl,DDLコマンドの前処理

TLSサポート
-----------

メトリックとトレースエンドポイントは、HTTPまたはHTTPSです。
``bdr.otel_https_ca_path`` 、\ ``bdr.otel_https_key_path``
、および\ ``bdr.otel_https_cert_path``
構成オプションを使用して、CAバンドル、クライアントキー、およびクライアント証明書へのパスを構成できます。
