メインコンテンツへスキップ
メインコンテンツへスキップ

ClickStack - サンプルのログ、トレース、メトリクス

以下の例では、オールインワンイメージ用の手順に従って ClickStack を起動し、ローカルの ClickHouse インスタンスまたは ClickHouse Cloud インスタンスに接続していることを前提とします。

ClickHouse Cloud における HyperDX

このサンプルデータセットは、記載のとおり手順に対してごくわずかな調整を行うだけで、ClickHouse Cloud における HyperDX でも利用できます。ClickHouse Cloud で HyperDX を使用する場合は、このデプロイメントモデルの入門ガイドで説明されているように、ローカルで OpenTelemetry コレクターを実行しておく必要があります。

HyperDX UIへ移動する

ローカルにデプロイする場合は、http://localhost:8080 にアクセスしてHyperDX UIを開きます。ClickHouse CloudでHyperDXを使用する場合は、サービスを選択し、左メニューからHyperDXを選択してください。

HyperDX UI

インジェスト API key をコピーする

ClickHouse CloudのHyperDX

ClickHouse CloudでHyperDXを使用する場合は、この手順は不要です。インジェストキーのサポートは現在提供されていません。

Team Settings に移動し、API Keys セクションから Ingestion API Key をコピーします。このインジェスト API key により、OpenTelemetry コレクターを通じたデータインジェストが安全に行われます。

API キーをコピー

サンプルデータのダウンロード

UIにサンプルデータを投入するには、次のファイルをダウンロードしてください:

サンプルデータ

# curl
curl -O https://storage.googleapis.com/hyperdx/sample.tar.gz
# または
# wget https://storage.googleapis.com/hyperdx/sample.tar.gz

このファイルには、当社の公開OpenTelemetry demo(マイクロサービスで構成されたシンプルなeコマースストア)から取得したログ、メトリクス、トレースのサンプルが含まれています。このファイルを任意のディレクトリにコピーしてください。

サンプルデータの読み込み

このデータをロードするには、デプロイ済みのOpenTelemetry(OTel)コレクターのHTTPエンドポイントに送信するだけです。

まず、上記でコピーしたAPIキーをエクスポートします。

ClickHouse CloudのHyperDX

ClickHouse CloudでHyperDXを使用する場合は、この手順は不要です。インジェストキーのサポートは現在提供されていません。

# API キーをエクスポート
export CLICKSTACK_API_KEY=<YOUR_INGESTION_API_KEY>

以下のコマンドを実行して、OTel collectorにデータを送信します。

for filename in $(tar -tf sample.tar.gz); do
  endpoint="http://localhost:4318/v1/${filename%.json}"
  echo "${filename%.json} を読み込み中"
  tar -xOf sample.tar.gz "$filename" | while read -r line; do
    printf '%s\n' "$line" | curl -s -o /dev/null -X POST "$endpoint" \
    -H "Content-Type: application/json" \
    -H "authorization: ${CLICKSTACK_API_KEY}" \
    --data-binary @-
  done
done

これは、OTel collectorにデータを送信するOTLPログ、トレース、およびメトリクスのソースをシミュレートします。本番環境では、これらのソースは言語クライアントや他のOTel collectorになります。

Searchビューに戻ると、データの読み込みが開始されていることが確認できます(データが表示されない場合は、時間枠をLast 1 hourに調整してください):

HyperDX 検索

データの読み込みには数分かかります。次の手順に進む前に、読み込みが完了するまで待機してください。

セッションを確認する

ユーザーが商品の決済時に問題を経験しているという報告を受けたとします。HyperDXのセッションリプレイ機能を使用して、その体験を確認することができます。

左側のメニューから Client Sessions を選択します。

セッション

このビューでは、eコマースストアのフロントエンドセッションを確認できます。セッションは、ユーザーがチェックアウトして購入手続きを試みるまで匿名として扱われます。

メールアドレスを含む一部のセッションにはエラーが関連付けられており、トランザクション失敗の報告を裏付けている可能性があります。

失敗と関連するメールを含むトレースを選択します。次のビューでは、ユーザーのセッションを再生して問題を確認できます。再生ボタンを押してセッションを視聴します。

セッションリプレイ

リプレイには、ユーザーがサイトを閲覧してカートに商品を追加する様子が表示されます。セッション後半の支払い完了を試行する箇所まで自由にスキップできます。

ヒント

エラーはタイムライン上に赤色で表示されます。

ユーザーは明示的なエラーが表示されないまま注文を完了できませんでした。左パネルの最下部までスクロールし、ユーザーのブラウザから取得したネットワークイベントとコンソールイベントを確認してください。/api/checkout 呼び出し時に500エラーが発生していることが確認できます。

セッション中にエラーが発生しました

この 500 エラーを選択します。OverviewColumn Values のいずれも、エラーが予期しないものであり Internal Error を引き起こしているという事実以外、問題の原因を示していません。

トレースを確認する

Traceタブに移動して、完全な分散トレースを表示します。

セッショントレース

トレースを下にスクロールして、エラーの発生元である checkout サービススパンを確認します。Payment サービススパンを選択します。

スパン

Column Valuesタブを選択し、下にスクロールします。キャッシュが満杯になっていることが問題の原因であることが確認できます。

カラム値

上にスクロールしてトレースに戻ると、先ほどの設定により、ログがスパンと相関付けられていることが確認できます。これにより、さらに詳しいコンテキストが得られます。

相関ログ

決済サービス内のキャッシュが満杯になっており、決済の完了を妨げていることが確認されました。

ログを確認する

詳細については、Search ビューを参照してください:

ソースから Logs を選択し、payment サービスにフィルターを適用します。

ログ

この問題は最近発生したものですが、影響を受けた決済件数が多いことが確認できます。さらに、Visa決済に関連するキャッシュが問題の原因となっている可能性があります。

チャートメトリクス

コードに明らかにエラーが混入していますが、メトリクスを使用してキャッシュサイズを確認できます。Chart Explorerビューに移動します。

データソースとしてMetricsを選択します。チャートビルダーでvisa_validation_cache.size (Gauge)Maximumをプロットし、再生ボタンを押します。キャッシュは最大サイズに達するまで増加し続け、その後エラーが発生していることが確認できます。

メトリクス