clickhouse-server が起動中またはシャットダウン中に停止した場合、通常のポートは接続を受け付けず、サーバーの実行状況を確認することもできません。
イントロスペクションポートは、サーバーがテーブルのAttachを開始する前に起動し、テーブルのdetachが完了した後にのみ停止するネイティブプロトコルのTCPリスナーです。この期間中、operatorは標準の clickhouse-client で接続し、SHOW PROCESSLIST、SELECT * FROM system.stack_trace、SYSTEM INSTRUMENT ADD 'QueryMetricLog::startQuery' SLEEP ENTRY 0.5 などのクエリを実行できます。
設定
<introspection>true</introspection> でマークされたコンポーザブルプロトコルのエンドポイントです。デフォルトでは、イントロスペクションポートは設定されていません。
host、port、description、networks の許可リスト、default_database、および tls と proxy1 レイヤーによるラッピングが利用できます。
introspection フラグは、port を持つエントリであるエンドポイントのプロパティであり、impl 参照を介して継承されません。そのため、1 つのレイヤーをイントロスペクションエンドポイントと通常のエンドポイントで共有できます。
以下のセマンティクスはネイティブプロトコルハンドラーによって実装されるため、スタックの末尾は tcp レイヤーである必要があります。スタックに http、mysql、postgres、prometheus、または interserver レイヤーを含むエンドポイントをマークしようとすると、必要なときに応答しなくなるポートが生成されるのではなく、起動時に INVALID_CONFIG_PARAMETER で拒否されます。
動作
- 受け付けられるクエリは、
SELECT、SHOW、DESCRIBE、EXPLAIN、EXISTS、KILL QUERY、SYSTEM、SET、USEです。DDL やデータを変更するクエリを含むその他すべてのクエリは、サーバー状態が完全に構築される前または終了処理中でもポートが開いているため、QUERY_IS_PROHIBITEDで拒否されます。 SYSTEM RELOAD CONFIGおよびSYSTEM RELOAD USERSは、起動中に設定を再読み込みすると初期化順序が崩れる可能性があるため、サーバーが完全に起動するまでQUERY_IS_PROHIBITEDで拒否されます。- これらのポートで実行されるクエリは、
SHOW PROCESSLISTと同様に、max_concurrent_queriesとワークロードスケジューラの対象外です。 - 接続は専用のスレッドプールで処理されるため、通常の接続プールが枯渇してもこれらのポートには影響しません。プールサイズは
max_connectionsで決まります。 - CPU 過負荷によりサーバーが通常の接続を拒否している場合でも、接続は受け付けられます。
- 通常の認証と認可がすべて適用されます。このポートに接続しても、追加のアクセス権は付与されません。ただし、前述の同時実行制限は適用されないため、運用担当者のみが到達できるアドレスにバインドしてください。
- これらのポートは
SYSTEM START LISTEN/SYSTEM STOP LISTEN(ALLおよびCUSTOMを含む) の対象外であり、設定の再読み込み時にも再構成されません。