本文へ移動
Telemetry
ドキュメントを見る
ガイド更新日: 2026年7月27日Telemetry 編集チームと製品チームによるレビュー2 最小読み取り時間

コーディング エージェントでこのドキュメントを使用してください

Claude Code、Codex、Cursor、または別のコーディング エージェント用の集中プロンプト パックを開き、それをここで説明するワークフローに適応させます。

このページの内容
  1. Telemetry のセットアップ
  2. Express アプリケーションを作成する
  3. 構造化エラーミドルウェアを追加する
  4. エラーをクエリして視覚化する
  5. 次のステップ

Webサーバーエラーの分析

エラー数は、何かが壊れたことを示します。構造化されたコンテキスト (ルート、ステータス コード、リリース、リクエスト ID) は、何が壊れたのかを特定し、それをデプロイメントに関連付けるのに役立ちます。

5xx スパイクとリリースおよび POST チェックアウト ルートを相関付ける Web サーバー エラー ダッシュボード

最も便利なエラー イベントは、インシデント発生時に必要なディメンションを保存します。

最新の Web 開発では、監視とロギングは、堅牢で信頼性の高いアプリケーションを維持するための重要な側面です。 Telemetry を使用すると、開発者は、デバッグやユーザー エクスペリエンスの向上に重要なさまざまなイベントやシステム メトリクスを追跡できます。この投稿では、Telemetry API を使用して、Express.js Web サーバー内のすべてのエラーを捕捉してログに記録する方法を説明します。このガイドでは Express のみを取り上げていますが、このアイデアは Rails から Elixir などのすべての Web サーバーに適用できます。

Telemetry のセットアップ

データをログに記録する前に、Telemetry を設定する必要があります。この例では、Telemetry JavaScript SDK を使用します。

まず、Telemetry SDK をプロジェクトにインストールします。

npm install telemetry-sh

次に、API キーを使用してアプリケーション内の Telemetry クライアントを初期化します。

import telemetry from "telemetry-sh";

telemetry.init("YOUR_API_KEY");

Express アプリケーションを作成する

次に、基本的な Express アプリケーションをセットアップしましょう。 Express をまだインストールしていない場合は、次のコマンドを使用してプロジェクトに追加できます。

npm install express

次に、単純な Express サーバーを作成します。

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

構造化エラーミドルウェアを追加する

エラー ハンドラーはすべてのルートの後に属します。プライベートな値を含む可能性のある生の本体、資格情報、スタック トレース、または例外メッセージではなく、安全なカテゴリと操作コンテキストをキャプチャします。

const express = require("express");
const telemetry = require("telemetry-sh");

telemetry.init(process.env.TELEMETRY_API_KEY);

const app = express();

app.get("/api/projects/:id", async (req, res) => {
  throw Object.assign(new Error("Synthetic failure"), {
    code: "PROJECT_LOOKUP_FAILED",
  });
});

app.use(async (err, req, res, next) => {
  const statusCode = Number(err.statusCode) || 500;

  await telemetry.log("api_request_failed", {
    route_template: req.route?.path ?? "unmatched_route",
    method: req.method,
    status_code: statusCode,
    status: "error",
    error_type: err.constructor?.name ?? "Error",
    error_code: err.code ?? "UNCLASSIFIED_ERROR",
    request_id: req.get("x-request-id") ?? "missing",
    release: process.env.APP_RELEASE ?? "unknown",
  });

  res.status(statusCode).json({ error: "Request failed" });
});

app.listen(3000);

次のようなルート テンプレートを使用します。 /api/projects/:id、顧客識別子を含む生のパスではありません。ワークフローにとって障害が重要な場合は、処理された 4xx および 5xx 応答のイベント スキーマを同じに保ちます。

エラーをクエリして視覚化する

まずルートおよびリリースごとの障害率から始めて、調査のために最近のイベントのテーブルを保存します。

SELECT
  route_template,
  release,
  status_code,
  error_code,
  COUNT(*) AS failures,
  MAX(timestamp_utc) AS last_seen_at
FROM api_request_failed
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY route_template, release, status_code, error_code
ORDER BY failures DESC, last_seen_at DESC;

真のエラー率を得るには、成功したリクエストと失敗したリクエストを共有テーブルを使用して同じテーブルに記録します。 status または status_code フィールド。失敗のみのテーブルではエラーをランク付けできますが、分母を提供することはできません。

次のステップ

を使用します。 ルート レシピ別の API エラー率 分母安全なクエリ、視覚化の例、ダッシュボード レイアウト、アラート ガイダンスを提供します。と組み合わせてください API 遅延パーセンタイル したがって、インシデントビューは正確さと速度の両方をカバーします。

関連機能

安定したイベント名、型指定されたフィールド、プライバシーがレビューされたコンテキストをキャプチャします。

ページの著者と参考資料

Telemetry 編集チームがこの説明を所有しています。製品チームは動作、例、境界をレビューします。

ドキュメントのレビュー方法