Kubernetes の監視
このガイドでは、Kubernetes システムからログとメトリクスを収集し、可視化と分析のために ClickStack に送信します。デモデータとしては、必要に応じて公式 OpenTelemetry デモの ClickStack フォークを使用します。
前提条件
このガイドを進めるには、次のものが必要です:
- Kubernetes クラスター(v1.20 以上を推奨)で、少なくとも 32 GiB の RAM と、1 ノード上に ClickHouse 用として 100 GB の空きディスク容量があること
- Helm v3 以上
- クラスターを操作できるように設定された
kubectl
デプロイメントのオプション
このガイドは、次のいずれかのデプロイメントオプションで進めることができます。
-
オープンソース版 ClickStack: Kubernetes クラスター内に ClickStack を完全にデプロイします(以下を含む):
- ClickHouse
- HyperDX
- MongoDB(ダッシュボードの状態および設定に使用)
-
マネージド ClickStack: ClickHouse と ClickStack UI(HyperDX)が ClickHouse Cloud 上で管理されます。これにより、クラスター内で ClickHouse や HyperDX を実行する必要がなくなります。
アプリケーショントラフィックをシミュレートするために、オプションとして ClickStack フォーク版の OpenTelemetry Demo Application をデプロイできます。これにより、ログ、メトリクス、トレースを含むテレメトリデータが生成されます。すでにクラスター内でワークロードが稼働している場合は、この手順をスキップし、既存のポッド、ノード、コンテナを監視できます。
OpenTelemetryデモのデプロイ(オプション)
この手順は任意であり、監視対象となる既存のポッドがない場合を想定しています。Kubernetes環境に既存のサービスがデプロイされているユーザーはスキップできますが、このデモにはインストルメント化されたマイクロサービスが含まれており、トレースとセッションリプレイのデータを生成するため、ClickStackの全機能を確認できます。
以下では、オブザーバビリティのテストと計装のデモンストレーションに最適化された、ClickStackフォーク版のOpenTelemetry Demo ApplicationスタックをKubernetesクラスタにデプロイします。バックエンドマイクロサービス、負荷生成ツール、テレメトリパイプライン、サポートインフラストラクチャ(Kafka、Redisなど)、およびClickStackとのSDK統合が含まれます。
すべてのサービスはotel-demoネームスペースにデプロイされます。各デプロイメントには次の内容が含まれます:
- OTel および ClickStack SDKS によるトレース、メトリクス、ログの自動インストルメンテーション。
- すべてのサービスは、
my-hyperdx-hdx-oss-v2-otel-collectorという名前の OpenTelemetry コレクター(まだデプロイされていない)にインストルメンテーションデータを送信します - 環境変数
OTEL_RESOURCE_ATTRIBUTESを介してログ、メトリクス、トレースを相関付けるためのリソースタグのポッドへの転送。
デモのデプロイ後、すべてのポッドが正常に作成され、Running 状態であることを確認してください:
デモのアーキテクチャ
このデモは、gRPC と HTTP を介して相互に通信する異なるプログラミング言語で書かれたマイクロサービス群と、Locust を使用してユーザートラフィックを模倣するロードジェネレータで構成されています。このデモのオリジナルのソースコードは、ClickStack インストルメンテーション を使用するように変更されています。

出典: https://opentelemetry.io/docs/demo/architecture/
このデモの詳細については、以下を参照してください。
ClickStackのデプロイ
Helm チャートをインストールすると、クラスタに ClickStack をデプロイできます。ClickHouse と HyperDX を含むすべてのコンポーネントを Kubernetes 環境内で実行するか、コレクターのみをデプロイして ClickHouse と UI HyperDX については Managed ClickStack に依存するかを選択できます。
ClickStack オープンソース(セルフマネージド)
次のコマンドは、otel-demo ネームスペースに ClickStack をインストールします。Helm チャートは以下をデプロイします。
- ClickHouse インスタンス
- HyperDX
- ClickStack ディストリビューション版 OTel collector
- HyperDX アプリケーション状態を保存するための MongoDB
Kubernetes クラスタの構成に応じて、storageClassName の値を調整する必要がある場合があります。
OTel デモをデプロイしないユーザーは、このネームスペースを変更し、適切なネームスペースを選択できます。
このチャートは、ClickHouse と OTel collector も併せてインストールします。本番環境では、ClickHouse および OTel collector の Operator を使用するか、Managed ClickStack を利用することを推奨します。
ClickHouse と OTel collector を無効化するには、次の値を設定してください:
マネージド ClickStack
Managed ClickStack を利用したい場合は、ClickStack をデプロイして、同梱の ClickHouse を無効化できます。
現時点では、このチャートは常に HyperDX と MongoDB の両方をデプロイします。これらのコンポーネントは別経路でのアクセス手段を提供しているものの、ClickHouse Cloud の認証とは統合されていません。このデプロイメントモデルでは、デプロイ済みの OTel collector 経由でインジェストするために必要なセキュアなインジェスト API キーへのアクセスを提供する管理者向けコンポーネントとして想定されており、エンドユーザーに公開すべきではありません。
デプロイメントのステータスを確認するには、以下のコマンドを実行し、すべてのコンポーネントが Running 状態であることを確認してください。なお、Managed ClickStack を使用している場合、ClickHouse はこの出力には表示されません:
HyperDX UIへのアクセス
Managed ClickStackを使用する場合でも、KubernetesクラスタにデプロイされたローカルのHyperDXインスタンスは引き続き必要です。HyperDXにバンドルされているOpAMPサーバーが管理するインジェストキーを提供し、デプロイされたOTel collectorを通じて安全なインジェストを実現します。この機能は現在、Managed ClickStackでは提供されていません。
セキュリティのため、このサービスはClusterIPを使用し、デフォルトでは外部に公開されません。
HyperDX UIにアクセスするには、ポート3000をローカルポート8080にポートフォワードしてください。
http://localhost:8080 にアクセスして HyperDX UI を開きます。
複雑性要件を満たすユーザー名とパスワードを指定してユーザーを作成します。

インジェスト API key を取得する
ClickStack collectorによってデプロイされたOTel collectorへのインジェストは、インジェストキーで保護されています。
Team Settings に移動し、API Keys セクションから Ingestion API Key をコピーします。このインジェスト API key により、OpenTelemetry collector を通じたデータインジェストが安全に行われます。

API キー Kubernetes Secret の作成
インジェスト API key を含む新しい Kubernetes secret と、ClickStack Helm チャートでデプロイされた OTel collector の場所を含む config map を作成します。後続のコンポーネントは、これを使用して ClickStack Helm チャートでデプロイされた collector へのインジェストを可能にします:
インジェスト API key を適用するため、OpenTelemetry Demo Application のポッドを再起動してください。
デモサービスからのトレースおよびログデータが、HyperDXへ流入し始めます。

OpenTelemetry Helmリポジトリを追加する
Kubernetesメトリクスを収集するために、標準的なOTel collectorをデプロイし、上記のインジェスト API key を使用して ClickStack collector へデータを安全に送信するように設定します。
OpenTelemetry Helmリポジトリをインストールする必要があります:
Kubernetesコレクターコンポーネントのデプロイ
クラスタ全体と各ノードの両方からログとメトリクスを収集するには、それぞれ独自のマニフェストを持つ2つの個別のOpenTelemetryコレクターをデプロイする必要があります。提供される2つのマニフェスト(k8s_deployment.yamlとk8s_daemonset.yaml)は連携して、Kubernetesクラスタから包括的なテレメトリデータを収集します。
-
k8s_deployment.yamlは、単一の OpenTelemetry Collector インスタンス をデプロイし、クラスタ全体のイベントとメタデータ の収集を担当します。Kubernetes のイベントやクラスタメトリクスを収集し、ポッドのラベルおよびアノテーションをテレメトリーデータに付与して拡充します。このコレクターは、データの重複を防ぐため、レプリカ数 1 のスタンドアロンのデプロイメントとして実行されます。 -
k8s_daemonset.yamlは、クラスタ内のすべてのノードで実行される デーモンセットベースのコレクター をデプロイします。これは、kubeletstats、hostmetrics、Kubernetes Attribute Processor などのコンポーネントを使用して、ノードレベルおよびポッドレベルのメトリクス に加え、コンテナログも収集します。これらのコレクターはログにメタデータを付与し、OTLP エクスポーターを使用して HyperDX に送信します。
これらのマニフェストにより、インフラストラクチャからアプリケーションレベルのテレメトリまで、クラスタ全体のフルスタックオブザーバビリティが実現され、エンリッチされたデータがClickStackに送信されて一元的な分析が行われます。
まず、コレクターをデプロイメントとしてインストールします:
k8s_deployment.yaml
次に、ノードおよびポッドレベルのメトリクスとログを収集するため、コレクターをデーモンセットとしてデプロイします:
k8s_daemonset.yaml
k8s_daemonset.yamlHyperDXでKubernetesデータを探索する
HyperDX UIにアクセスします。Kubernetesにデプロイしたインスタンス、またはManaged ClickStack経由のいずれかを使用します。
マネージド ClickStack を使用している場合は、ClickHouse Cloud サービスにログインし、左側のメニューから「ClickStack」を選択するだけです。自動的に認証されるため、ユーザーアカウントを作成する必要はありません。 ログ、メトリクス、トレース用のデータソースはあらかじめ作成されています。 ローカルにデプロイされた HyperDX にアクセスするには、 本番環境では、Managed ClickStack を使用していない場合、TLS を有効にしたイングレスを使用することを推奨します。例えば、以下のように実行します。マネージド ClickStack
ClickStack オープンソース
kubectl port-forward を実行してポートフォワーディングを行い、http://localhost:8080 で HyperDX にアクセスできます。
Kubernetesデータを確認するには、/kubernetesの専用ダッシュボードに移動してください(例: http://localhost:8080/kubernetes)。
各タブ(ポッド、ノード、ネームスペース)にデータが入力されている必要があります。
