<!--
doc/src/sgml/ref/pcp_node_info.sgml
Pgpool-II documentation
-->

<refentry id="PCP-NODE-INFO">
 <indexterm zone="pcp-node-info">
  <primary>pcp_node_info</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>pcp_node_info</refentrytitle>
  <manvolnum>1</manvolnum>
  <refmiscinfo>PCP Command</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>pcp_node_info</refname>
  <refpurpose>
   <!--
   displays the information on the given node ID</refpurpose>
   -->
   指定されたノードの情報を表示する</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
  <cmdsynopsis>
   <command>pcp_node_info</command>
   <arg rep="repeat"><replaceable>option</replaceable></arg>
   <arg><replaceable>node_id</replaceable></arg>
  </cmdsynopsis>
 </refsynopsisdiv>

 <refsect1 id="R1-PCP-NODE-INFO-1">
  <!--
  <title>Description</title>
  -->
  <title>説明</title>
  <para>
   <command>pcp_node_info</command>
   <!--
   displays the information on the given node ID.
   -->
   指定されたノードの情報を表示します。
  </para>
 </refsect1>

 <refsect1>
  <!--
  <title>Options</title>
  -->
  <title>オプション</title>
  <para>
   <variablelist>

    <varlistentry>
     <term><option>-n <replaceable class="parameter">node_id</replaceable></option></term>
     <term><option>--node-id=<replaceable class="parameter">node_id</replaceable></option></term>
     <listitem>
      <para>
       <!--
       The index of backend node to get information of.
       -->
       情報を表示するバックエンドノードのインデックスを指定します。
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>-a</option></term>
     <term><option>--all</option></term>
     <listitem>
      <para>
       <!--
       Display all backend nodes information.
       -->
       すべてのバックエンドノードの情報を表示します。
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <!--
     <term><option>Other options </option></term>
     -->
     <term><option>その他 </option></term>
     <listitem>
      <para>
       <!--
       See <xref linkend="pcp-common-options">.
       -->
       <xref linkend="pcp-common-options"> を参照してください。
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>

 <refsect1>
  <!--
  <title>Example</title>
  -->
  <title>例</title>
  <para>
   <!--
   Here is an example output:
   -->
   ここでは例を示します。
   <programlisting>
$ pcp_node_info -w -p 11001 -n 1
/tmp 11003 1 0.500000 waiting up standby standby 0 streaming async 2021-02-27 14:51:30
   </programlisting>
  </para>
  <para>
   <!--
   The result is in the following order:
   -->
   結果は以下の順のとおりです。
   <literallayout class="monospaced">
    <!--
    1. hostname
    2. port number
    3. status
    4. backend status
    5. load balance weight
    6. status name
    7. backend role
    8. actual backend role
    9. replication delay
    10. replication state (PostgreSQL 9.1以降。pg_stat_replicationから取得)
    11. sync replication state (PostgreSQL 9.2以降。pg_stat_replicationから取得)
    12. last status change time
    -->
1. ノードのホスト名
2. ノードのポート番号
3. ステータス
4. ロードバランスウェイト
5. バックエンドステータス名
6. 実際のバックエンドの状態 (Pgpool-II 4.3以降。PQpingParamsで取得)
7. バックエンドの役割
8. 実際のバックエンドの役割(Pgpool-II 4.3以降。pg_is_in_recoveryで取得)
9. レプリケーションの遅延
10. レプリケーション状態 (Pgpool-II 4.1以降。pg_stat_replicationから取得)
11. 同期レプリケーション状態 (Pgpool-II 4.1以降。pg_stat_replicationから取得)
12. 最終ステータス変更時刻
   </literallayout>
  </para>
  <para>
   <!--
   <emphasis>3 (status)</> is represented by a digit from [0 to 3].
   -->
   <emphasis>3（ステータス）</>は [0..3] までの数字で表わされます。各数字の意味は以下のとおりです。
  </para>
  <para>
   <itemizedlist>
    <!--
    <listitem><para>0 - This state is only used during the initialization. PCP will never display it. </para></listitem>
    <listitem><para>1 - Node is up. No connections yet. </para></listitem>
    <listitem><para>2 - Node is up. Connections are pooled. </para></listitem>
    <listitem><para>3 - Node is down. </para></listitem>
    -->
    <listitem><para>0 - 初期化時のみに表われる。PCP コマンドで表示されることはない。 </para></listitem>
    <listitem><para>1 - ノード稼働中。接続無し </para></listitem>
    <listitem><para>2 - ノード稼働中。接続有り </para></listitem>
    <listitem><para>3 -  ノードダウン </para></listitem>
   </itemizedlist>
  </para>
  <para>
   <!--
   4 (load balance weight) is displayed in normalized format.
   -->
   <emphasis>4（ロードバランスウェイト）</>は0から1に正規化されたフォーマットで出力されます。
  </para>
  <para>
   <!--
   <emphasis>5 (status name)</> indicates the status of a
   <productname>PostgreSQL</productname> node as recognized by
   <productname>Pgpool-II</productname>. It corresponds to the numeric value
   shown in "<emphasis>3 (status)</>" and represents the node's internal state
   in a human-readable format maintained by <productname>Pgpool-II</productname>.
   -->
   <emphasis>5（バックエンドステータス名）</>は<productname>Pgpool-II</productname>から見た<productname>PostgreSQL</productname>ノードのステータス名を示します。
   これは、上記「<emphasis>3（ステータス）</>」の数値に対応する状態名（文字列）であり、<productname>Pgpool-II</productname>が内部的に保持しているノードの状態を、可読性の高い形式で表現したものです。
  </para>
  <para>
   <emphasis>6（実際のバックエンドの状態）</>は実際のバックエンドの状態をリアルタイムで取得して表示します。
   情報の取得は、このコマンドが実行された時に<function>PQpingParams</function>を呼び出すことによって行われます。
   <function>PQpingParams</function>は<productname>PostgreSQL</productname> 9.1以降でのみサポートされています。
   <productname>Pgpool-II</productname>が<productname>PostgreSQL</productname> 9.0以前とともに構築されると、この列は"unknown"と表示されます。
   また、<link linkend="runtime-config-health-check">ヘルスチェック</link>が無効になっている場合も"unknown"と表示されます。
   <xref linkend="pcp-detach-node">でバックエンドノードを切り離すと、<productname>Pgpool-II</productname>が管理する状態は"down"になりますが、バックエンドの実際の状態は"up"なので、5と6が一致しないことはあり得ます。
    逆に、5が"up"なのに、6が"down"というのは起こらないはずです。
  </para>
  <para>
   <emphasis>7（バックエンドの役割）</>は<productname>Pgpool-II</productname>から見た<productname>PostgreSQL</productname>ノードの役割（primaryまたはstandby）を示します。<productname>Pgpool-II</productname>が内部的に保持している情報に基づいて表示されます。
  </para>
  <para>
   <emphasis>8（実際のバックエンドの役割）</>は実際のバックエンドの役割（primaryまたはstandby）をリアルタイムで取得して表示します。
   その結果はストリーミングレプリケーションモードでは、"primary"か"standby"ですが、情報が取得できなければ"unknown"と表示します。
   <productname>Pgpool-II</productname>はノードID順にバックエンドノードを調べ、最後に見つけたスタンバイ以外のノードをプライマリとするので、誤ってスタンバイ以外のノードが複数できたときなどには、7と8が一致しないことはありえます。
   （このコマンドはそのような状態を見つけるのに役立ちます。)
   それ以外のモードでは、"main"あるいは"replica"と表示されます。
   ストリーミングレプリケーションモードと違って、<function>pg_is_in_recovery</function>は呼び出されず、7と8が異なる値になることはありません。
  </para>
  <para>
   <emphasis>9, 10, 11</>を正しく表示させるに、<xref linkend="guc-sr-check-period">が0以外に設定されている必要があります。
    さらに10, 11を正しく表示させるには、以下の追加設定が必要です。
   <itemizedlist>
    <listitem>
     <para>
      <xref linkend="guc-backend-application-name">パラメータを設定する必要があります。
     </para>
     <para>
      各<varname>backend_application_nameX</varname>に設定された値が、該当ノードの<varname>primary_conninfo</varname>の<varname>application_name</varname>に指定された値と一致している必要があります。
     </para>
     <para>
      特に、<productname>Pgpool-II</productname>の<xref linkend="pcp-recovery-node">コマンドを用いてスタンバイノードを構築し、コミュニティ提供のサンプルスクリプトを使用している場合は、<varname>backend_application_nameX</varname>の値を<varname>backend_hostnameX</varname>と一致させてください。
      具体的な設定例については<xref linkend="example-cluster-pgpool-config-backend-settings">をご参照ください。
     </para>
    </listitem>
    <listitem>
     <para>
      <xref linkend="guc-sr-check-user">が<productname>PostgreSQL</productname>のスーパーユーザーであるか、もしくは<literal>pg_monitor</literal>ロールの権限が付与されている必要があります。
     </para>
    </listitem>
   </itemizedlist>
   <note>
    <para>
    <xref linkend="guc-sr-check-user">に<literal>pg_monitor</literal>ロールの権限を付与するには、以下のSQLコマンドを<productname>PostgreSQL</productname>スーパーユーザーで実行してください（"sr_check_user"を<xref linkend="guc-sr-check-user">の設定値で置き換えてください）
	 <programlisting>
GRANT pg_monitor TO sr_check_user;
	 </programlisting>
	<productname>PostgreSQL</productname> 9.6にはpg_monitorグループがないので、<xref linkend="guc-sr-check-user">は<productname>PostgreSQL</productname>のスーパーユーザーでなければなりません。
    </para>
   </note>
  </para>

  <para>
  <!--
    From <productname>Pgpool-II</productname> 4.4, 9 (replication
    delay) is displayed in either bytes or
    seconds. See <xref linkend="guc-delay-threshold-by-time"> for more
    details.
    -->
    <productname>Pgpool-II</productname> 4.4から、9 (レプリケーション遅延)はバイトもしくは秒単位で表示されます。
    詳細は<xref linkend="guc-delay-threshold-by-time">を参照ください。
  </para>

  <para>
   <!--
   The <option>-a</option> or <option>all</option> option lists all backend nodes information.
   -->
   <option>-a</option>または <option>--all</option>オプションはすべてのバックエンドノードの情報を表示します。
  </para>
  <programlisting>
$ pcp_node_info -w -p 11001 -a
/tmp 11002 1 0.500000 waiting up primary primary 0 none none 2021-02-27 14:51:30
/tmp 11003 1 0.500000 waiting up standby standby 0 streaming async 2021-02-27 14:51:30
  </programlisting>

  <para>
   <!--
   The <option>verbose</option> option can help understand the output. For example:
   -->
   <option>--verbose</option> オプションは出力内容を理解するのに役に立ちます。例を示します：
  </para>
  <programlisting>
$ pcp_node_info -w -p 11001 --verbose 1
Hostname               : /tmp
Port                   : 11003
Status                 : 1
Weight                 : 0.500000
Status Name            : waiting
Backend Status Name    : up
Role                   : standby
Backend Role           : standby
Replication Delay      : 0
Replication State      : streaming
Replication Sync State : async
Last Status Change     : 2021-02-27 14:51:30
  </programlisting>
 </refsect1>

</refentry>
