💡

Claude Code のコストを New Relic で診る

に公開

Claude Code には OpenTelemety(以下 Otel) 形式でメトリクスを出力できる機能が備わっています。

https://docs.anthropic.com/en/docs/claude-code/monitoring-usage

今回はそのメトリクスを New Relic へ転送してみます。
他のプラットフォームも同じ要領で転送できると思うので試してみてください。

Claude Code のモニタリング設定

まず初めに Claude Code からメトリクスが出力できるように設定します。

今回はてっとり早いので環境変数でやりますが

export CLAUDE_CODE_ENABLE_TELEMETRY="1"

これでテレメトリの有効化がされます。

次にメトリクスの出力設定と転送先を指定します。
otlp endpoint は New Relic のものを利用してください。

https://docs.newrelic.com/docs/opentelemetry/best-practices/opentelemetry-otlp/#configure-endpoint-port-protocol

export OTEL_METRICS_EXPORTER="otlp"
export OTEL_EXPORTER_OTLP_PROTOCOL="grpc"
export OTEL_EXPORTER_OTLP_ENDPOINT="https://otlp.nr-data.net:4317"

次に New Relic の API Key(License Key) を取得してそれをヘッダーとして設定します。

export OTEL_EXPORTER_OTLP_HEADERS="api-key=<api key に置き換えてください>"

これで転送のための設定です。
あとは Claude Code を限界までぶん回してください

今回はてっとり早く見たかったので転送頻度も変えています。
デフォルトは5000秒になっていますが60秒にしています。

export OTEL_METRIC_EXPORT_INTERVAL="60"

後はそのメトリクスが New Relic に転送されているか確認しましょう

New Relic でメトリクスを確認する

では New Relic の NRQL を使ってメトリクスを確認しましょう。
利用可能なメトリクスは Anthropic のドキュメントにも公開されているのでそちらを参考に参照したいと思います。
https://docs.anthropic.com/en/docs/claude-code/monitoring-usage#metrics

New Relic には Data explorer というデータを参照するためのコンソールのようなものがあるのでそちらから探してみます。

claude と検索フォームに入力すると以下のように出てきました。

今回は claude_code.token.usage に絞ってクエリを叩いてみようと思います。

SELECT sum(`claude_code.token.usage`)
FROM Metric
WHERE metricName = 'claude_code.token.usage'
SINCE 24 hours ago UNTIL now

以下のような結果が出力されました。

これでトークンの使用量が可視化されています。
他にも例えば Email ごとの使用量の可視化もできます。

SELECT sum(`claude_code.token.usage`)
FROM Metric
WHERE metricName = 'claude_code.token.usage'
SINCE 24 hours ago UNTIL now facet user.email

内容としては以上になります。

Claude Code Max を使っていれば事実上使い放題の状態の Claude Code ですが利用が見合っているのかなど、今後従量課金などになった場合にこういった Usage の状況などの可視化が必要になってくることもあるのではないでしょうか。

Discussion