CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/API & SDK
API & SDK/2026-05-01上級

Claude API のテレメトリを ClickHouse に流して分析する — 本番環境のコスト・遅延・エラーを可視化する設計ガイド

Claude API のリクエスト単位でコスト・遅延・トークン使用量を ClickHouse に蓄積し、Materialized View でリアルタイムダッシュボードを構築する本番運用設計を解説します。

claude-api81clickhouseobservability14analytics3production87

プレミアム記事

Claude API を本番投入してから半年経ったある月末、請求書を見て手が震えた経験があります。前月比で 4.2 倍。原因を切り分けるのに丸 2 日かかりました。あのときアプリ側にリクエスト単位のテレメトリ基盤があれば、おそらく 30 分で原因のエンドポイントを特定できていたはずです。

Claude API のリクエスト単位の使用量・コスト・遅延を ClickHouse に蓄積し、Postgres では実現しにくい高速な集計と異常検知を本番品質で組み立てる方法を順を追って整理していきます。Cloudflare Workers から ClickHouse Cloud に安全に書き込む実装、Materialized View でダッシュボードを 1 秒以内に返す設計、そしてハルシネーション疑い・リトライループといった「請求書には現れない損失」を SQL で検出するレシピまで、本番運用で実際に効いたパターンをまとめています。

なぜ ClickHouse なのか — Postgres / BigQuery / Snowflake と何が違うのか

最初に Postgres にテレメトリを書こうと考える方が多いはずです。私もそうでした。リクエスト 1 件あたり 1 行を events テーブルに INSERT すれば、SQL で集計できます。一見シンプルです。

しかし API 呼び出しが 1 日 100 万件を超えたあたりから、Postgres の限界が見えてきます。SELECT model, sum(input_tokens), sum(output_tokens) FROM events WHERE ts > now() - interval '1 day' GROUP BY model のような集計クエリが、インデックスを工夫しても 30 秒以上かかるようになります。Postgres は OLTP(行指向トランザクション)に最適化されているため、列方向の集計には根本的に不利なのです。

ClickHouse のテレメトリ用途で重要な強みを順に挙げると、まず列指向ストレージで集計が高速で、数億行を SUM / AVG / quantile() するクエリが秒単位で返ってきます。次に ReplacingMergeTree / AggregatingMergeTree などの専用エンジンが、重複排除や事前集計を宣言的に書けるよう設計されている点です。さらに Materialized View が「即時反映の集計テーブル」として機能し、ダッシュボードを 1 秒以内で返すための基盤になります。データ圧縮率も高く、テレメトリは似た値の繰り返しが多いため 1/10 以下になることも珍しくありません。

BigQuery や Snowflake も列指向ですが、レイテンシ(数秒〜十数秒のスロット起動)と料金体系(クエリ単価)の点で、ダッシュボードの「裏側で頻繁にクエリされる用途」には合いません。ClickHouse はリアルタイム分析の即応性に振り切った設計なので、運用ダッシュボード・アラート判定・社内向け Slack 通知のようなユースケースで真価を発揮します。

私はチーム規模・予算・運用負荷のバランスで「100 万件/日を超える Claude API 利用がある場合は ClickHouse を最初の選択肢にする」というルールを使っています。それ未満であれば Postgres + 適切な集計テーブルで十分なケースもあるので、規模感に合わせて選んでください。

計測すべきイベントと最低限のスキーマ

「とりあえず全部入れる」とスキーマが肥大化します。本番運用で実際に役立つ最小限のフィールドを最初に決める点が肝心です。

私が 4 つのプロダクトで運用した経験から、以下のスキーマを推奨します。

CREATE TABLE claude_api_events (
    -- 識別子
    event_id UUID,
    request_id String,        -- Anthropic の request-id ヘッダ
    user_id String,           -- アプリ側のユーザー識別子
    workspace_id LowCardinality(String),  -- マルチテナント対応
 
    -- 時刻・モデル情報
    ts DateTime64(3, 'UTC'),  -- ミリ秒精度
    model LowCardinality(String),
    api_version LowCardinality(String),
 
    -- リクエスト・レスポンス
    input_tokens UInt32,
    output_tokens UInt32,
    cache_read_tokens UInt32 DEFAULT 0,
    cache_creation_tokens UInt32 DEFAULT 0,
    stop_reason LowCardinality(String),
 
    -- パフォーマンス
    latency_ms UInt32,
    ttft_ms UInt32,           -- Time To First Token
    streaming UInt8,
 
    -- 結果
    success UInt8,
    error_type LowCardinality(String) DEFAULT '',
    http_status UInt16,
 
    -- アプリ層の文脈
    feature_id LowCardinality(String),  -- 「要約」「翻訳」など機能名
    prompt_template_id LowCardinality(String),
    prompt_version UInt32 DEFAULT 0,
 
    -- コスト計算(事前計算しておくとクエリが軽い)
    cost_usd Decimal64(6) DEFAULT 0
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(ts)
ORDER BY (workspace_id, feature_id, ts)
TTL ts + INTERVAL 18 MONTH
SETTINGS index_granularity = 8192;

設計上の重要ポイントを 3 つだけ強調します。

第一に LowCardinality(String) を使えばす。model 名や feature_id のように値の種類が少ない列は、必ず LowCardinality で宣言します。圧縮率が大幅に上がり、GROUP BY も高速化します。私のプロダクトでは導入後にストレージが約 35% 減りました。

第二に ORDER BY の順序が性能を左右します。ClickHouse は ORDER BY の先頭から順に並んだプライマリキーで部分検索を高速化します。「テナント単位 → 機能単位 → 時刻」の順は、ダッシュボードのクエリ(「特定テナントの特定機能の直近 24 時間」)に最適化された順序です。

第三にコストは事前計算しておくことです。取り込み時点で cost_usd を計算しておくと、ダッシュボードクエリが SUM 一発で済みます。価格表が変わったときの再計算は、後述のように Materialized View で吸収できます。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
「先月の API 請求がいきなり 3 倍になっていた」という事故を防げる、リクエスト単位のコスト追跡基盤を手に入れられます
Postgres でテレメトリを保存していてクエリが詰まっていた人が、ClickHouse + Materialized View で 1 秒以内に集計を返せる構成に切り替えられます
ハルシネーション疑い・リトライループ・レイテンシ急増を SQL で検出する具体的なクエリパターンを習得し、ユーザーから報告される前に異常を能動的に検知できるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API & SDK2026-06-18
Claude API のレスポンスキャッシュが「古い答え」と「似て非なる誤答」を返すとき — 鮮度管理と誤ヒット抑制の実装メモ
Claude API のレスポンスキャッシュは速度とコストを劇的に改善しますが、運用で問題になるのは平均ヒット率ではなく、古い答えと意味的な誤ヒットの二つです。キー設計・鮮度管理・誤ヒット抑制・観測の実装をまとめます。
API & SDK2026-06-16
Claude API の PII マスキングは台帳運用で決まる — 復元・暗号化・漏洩率の本番設計メモ
Claude API へ送る前の PII マスキングで本当に難しいのは検出ではなく、復元用トークン台帳の運用です。暗号化保存・多インスタンス共有・漏洩率の継続測定までを動くコード付きで整理します。
API & SDK2026-04-29
Claude API のセマンティックキャッシュを本番投入する — 類似プロンプト判定としきい値設計、汚染防止
Claude API のレスポンスをセマンティックキャッシュで再利用する本番設計を、しきい値の決め方・汚染防止・マルチテナント分離・観測性まで一気通貫で解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →