メインコンテンツまでスキップ
メインコンテンツまでスキップ

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

以下の例は、オールインワンイメージのインストラクションを使用してClickStackを開始し、ローカルClickHouseインスタンスまたはClickHouse Cloudインスタンスに接続したことを前提としています。

ClickHouse CloudにおけるHyperDX

このサンプルデータセットは、HyperDXをClickHouse Cloudで使用する場合にも利用できます。流れに若干の調整が必要ですが記載されています。ClickHouse CloudでHyperDXを使用する場合、ユーザーはこのデプロイメントモデルのための始め方ガイドで説明されているように、ローカルでOpen Telemetryコレクターを実行する必要があります。

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

HyperDX UI

取り込みAPIキーをコピーする

ClickHouse CloudにおけるHyperDX

ClickHouse CloudでHyperDXを使用している場合、このステップは必要ありません。そこでは現在、取り込みキーのサポートがありません。

チーム設定に移動し、APIキーセクションから取り込みAPIキーをコピーします。このAPIキーは、OpenTelemetryコレクターを通じたデータ取り込みのセキュリティを保証します。

APIキーをコピー

サンプルデータをダウンロードする

UIにサンプルデータを表示するために、以下のファイルをダウンロードします:

サンプルデータ


# curl
curl -O https://storage.googleapis.com/hyperdx/sample.tar.gz

# or

# wget https://storage.googleapis.com/hyperdx/sample.tar.gz

このファイルには、私たちの公開されたOpenTelemetryデモからの例示的なログ、メトリクス、トレースが含まれています。これは、マイクロサービスを持つシンプルなeコマースストアです。このファイルをお好みのディレクトリにコピーしてください。

サンプルデータをロードする

このデータをロードするために、展開したOpenTelemetry (OTel) コレクターのHTTPエンドポイントに送信します。

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

ClickHouse CloudにおけるHyperDX

ClickHouse CloudでHyperDXを使用している場合、このステップは必要ありません。そこでは現在、取り込みキーのサポートがありません。


# export API key
export CLICKSTACK_API_KEY=<YOUR_INGESTION_API_KEY>

次のコマンドを実行してデータをOTelコレクターに送信します:

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

これにより、OTLPログ、トレース、およびメトリックソースがOTelコレクターにデータを送信することをシミュレートします。製品環境では、これらのソースは言語クライアントまたは他のOTelコレクターである可能性があります。

サーチビューに戻ると、データのロードが始まっていることが確認できるはずです(データが表示されない場合は、時間枠を直近1時間に調整してください)。

HyperDX サーチ

データのロードには数分かかりますので、次のステップに進む前にロードが完了するのを待ってください。

セッションを探る

ユーザーが商品購入時に問題を抱えているとの報告があるとしましょう。私たちはHyperDXのセッションリプレイ機能を使用して、彼らの体験を確認できます。

左のメニューからクライアントセッションを選択します。

セッション

このビューでは、当社のeコマースストアのフロントエンドセッションを確認できます。ユーザーがチェックアウトし、購入を完了しようとするまで、セッションは匿名のままです。

メールアドレスを含むセッションの中には、取引の失敗の報告を確認しかねない関連エラーが発生しているものがあります。

失敗と関連するメールを選択したトレースを選ぶと、ユーザーのセッションを再生し、問題を確認することができます。再生ボタンを押してセッションを視聴しましょう。

セッションリプレイ

再生では、ユーザーがサイトを巡回し、カートにアイテムを追加する様子が表示されます。支払いを完了しようとするセッションの後半にスキップしても構いません。

ヒント

エラーは赤色でタイムラインに注釈が付けられています。

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

セッション内のエラー

この500エラーを選択します。概要およびカラム値は、問題の原因を示すものではなく、エラーが予期しないものであり、内部エラーを引き起こす可能性があることのみを示しています。

トレースを探る

トレースタブに移動して、全体の分散トレースを確認します。

セッション トレース

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

スパン

カラム値タブを選択し、下にスクロールします。ここでは、キャッシュが満杯であることに関連する問題が示されています。

カラム値

上にスクロールしてトレースに戻ると、前回の設定のおかげでスパンに関連付けられたログが確認できます。これらはさらなる文脈を提供します。

関連付けられたログ

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

ログを探る

さらに詳細を知るために、サーチビューに戻ります:

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

ログ

問題は最近発生していますが、影響を受けた決済の数は多いことがわかります。さらに、Visa決済に関連するキャッシュが問題を引き起こしているようです。

メトリクスをチャート表示する

コード内に明らかなエラーが導入されていることは間違いありませんが、メトリクスを使用してキャッシュサイズを確認できます。チャートエクスプローラービューに移動します。

データソースとしてメトリクスを選択します。visa_validation_cache.size (Gauge)最大値をプロットするためにチャートビルダーを完成させ、再生ボタンを押します。キャッシュは明らかに最大サイズに達する前に増加しており、その後エラーが生成されました。

メトリクス