Kubernetes の監視
このガイドでは、Kubernetes システムからログとメトリクスを収集し、可視化と分析のために ClickStack に送信します。デモデータとしては、必要に応じて公式 OpenTelemetry デモの ClickStack フォークを使用します。
前提条件
このガイドを進めるには、次のものが必要です:
- Kubernetes クラスター(v1.20 以上を推奨)で、少なくとも 32 GiB の RAM と、1 ノード上に ClickHouse 用として 100 GB の空きディスク容量があること
- Helm v3 以上
- クラスターを操作できるように設定された
kubectl
デプロイメントのオプション
このガイドは、次のいずれかのデプロイメントオプションで進めることができます。
-
セルフホスト型: Kubernetes クラスター内に ClickStack を完全にデプロイします(以下を含む):
- ClickHouse
- HyperDX
- MongoDB(ダッシュボードの状態および設定に使用)
-
クラウドホスト型: ClickHouse Cloud を使用し、HyperDX はクラスター外で管理します。これにより、クラスター内で 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 環境内で実行するか、HyperDX がマネージドサービスとして提供されている ClickHouse Cloud を使用するかを選択できます。
セルフマネージドデプロイメント
次のコマンドは、otel-demo ネームスペースに ClickStack をインストールします。Helm チャートは以下をデプロイします。
- ClickHouse インスタンス
- HyperDX
- ClickStack ディストリビューションの OTel collector
- HyperDX アプリケーション状態を保存するための MongoDB
Kubernetes クラスターの構成に応じて、storageClassName の値を調整する必要がある場合があります。
OTel デモをデプロイしないユーザーは、この設定を変更し、適切なネームスペースを選択できます。
このチャートは、ClickHouse と OTel collector もあわせてインストールします。本番環境では、ClickHouse および OTel collector の Operator を使用するか、ClickHouse Cloud を利用することを推奨します。
ClickHouse と OTel collector を無効化するには、次の値を設定してください:
ClickHouse Cloud の使用
ClickHouse Cloud を利用したい場合は、ClickStack をデプロイして、同梱の ClickHouse を無効化できます。
現時点では、このチャートは常に HyperDX と MongoDB の両方をデプロイします。これらのコンポーネントは別経路でのアクセス手段を提供しますが、ClickHouse Cloud の認証とは統合されていません。このデプロイメントモデルでは、デプロイ済みの OTel collector 経由でインジェストするために必要なセキュアなインジェスト API キーへのアクセスを提供する管理者向けコンポーネントとして想定されており、エンドユーザーに公開すべきではありません。
デプロイメントのステータスを確認するには、以下のコマンドを実行し、すべてのコンポーネントが Running 状態であることを確認してください。なお、ClickHouse Cloud を使用している場合、ClickHouse はこの出力には表示されません。
HyperDX UIへのアクセス
ClickHouse Cloudを使用する場合でも、KubernetesクラスタにデプロイされたローカルのHyperDXインスタンスは引き続き必要です。HyperDXにバンドルされているOpAMPサーバーが管理するインジェストキーを提供し、デプロイされたOTel collectorを通じて安全なインジェストを実現します。この機能は現在、ClickHouse Cloudのホスト版では提供されていません。
セキュリティのため、このサービスは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 コレクターを通じたデータインジェストが安全に行われます。

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にデプロイしたインスタンス、またはClickHouse Cloud経由のいずれかを使用します。
ClickHouse Cloud を使用する場合は、ClickHouse Cloud サービスにログインし、左側のメニューから「HyperDX」を選択するだけです。自動的に認証されるため、ユーザーを作成する必要はありません。 データソースの作成を求められたら、作成モーダル内のデフォルト値はすべてそのままにし、Table フィールドに値 トレースとメトリクス用のデータソースも作成する必要があります。 たとえば、トレースおよび OTel メトリクス用のソースを作成するには、上部メニューから ここからは、必要なソース種別を選択し、続いて適切なテーブルを選択します。たとえばトレースの場合は、テーブル ClickStack 内の異なるデータソース(ログやトレースなど)は、互いに相関付けることができる点に注意してください。これを有効にするには、各ソースで追加の設定が必要です。たとえばログソースでは、対応するトレースソースを指定でき、逆にトレースソース側でもログソースを指定できます。詳細については「相関ソース」を参照してください。 ローカルにデプロイされた HyperDX にアクセスするには、ローカルコマンドを使用してポートフォワーディングを行い、http://localhost:8080 から HyperDX にアクセスします。 本番環境では、ClickHouse Cloud 上で HyperDX を使用していない場合、TLS 対応のイングレスを使用することを推奨します。例えば、次のとおりです。ClickHouse Cloud の使用
otel_logs を入力してログ用のソースを作成します。その他の設定は自動検出されるため、Save New Source をクリックできます。
Create New Source を選択します。
otel_traces を選択します。すべての設定は自動検出されます。
自己管理型デプロイメントを使用する
Kubernetesデータを確認するには、/kubernetesの専用ダッシュボードに移動してください(例: http://localhost:8080/kubernetes)。
各タブ(ポッド、ノード、ネームスペース)にデータが入力されている必要があります。
