モニタリング
依存サービス
@blipit/node 0.2 以降と @blipit/nextjs 0.3 は、サーバーがデータベース、キャッシュ、SMS・決済・メールのプロバイダーなどの外部サービスに対して行う呼び出しをすべて記録します。依存サービスのページにはサービスごとにカードが表示されるので、Twilio が失敗し始めたときやデータベースが遅くなったときにすぐわかります。fetch、http、pg、mysql2、ioredis は設定不要です。
1SDK をインストールまたは更新
@blipit/node 0.2 または @blipit/nextjs 0.3 に更新し、アプリの起動前にシークレットキーで初期化します。Next.js では instrumentation.ts から register もエクスポートして、サーバー起動時に Blipit を開始します。
npm install @blipit/node@latestexport { captureRequestError as onRequestError, register } from "@blipit/nextjs/server";2自動で記録されるもの
- 外向きの fetch と http / https の呼び出し。既知のプロバイダーは名前で表示されます: Twilio、Vonage、MessageBird、Unifonic、Plivo、Sinch、Infobip、Stripe、PayPal、Checkout.com、Tap Payments、SendGrid、Mailgun、Postmark、Resend、Microsoft Graph、Google APIs、AWS、Supabase、Firebase、OpenAI、Anthropic、Slack、GitHub、Shopify など。その他のホストはホスト名で表示されます。
- pg とその Pool 経由の PostgreSQL、mysql2 経由の MySQL と MariaDB、ioredis 経由の Redis。
- 受信した HTTP リクエストは Pulse ページのトランザクションになり、その処理中に行われた呼び出しはトレースで関連付けられます。
3その他のクライアント
postgres.js、node-redis、Prisma はそれぞれ 1 行で対応できます。HTTP を使わない SMS SDK など、それ以外は trace() で囲みます。
import postgres from "postgres";
import { createClient } from "redis";
import { PrismaClient } from "@prisma/client";
import * as Blipit from "@blipit/node";
const sql = Blipit.instrumentPostgres(postgres(process.env.DATABASE_URL));
const redis = Blipit.instrumentRedis(createClient());
const prisma = new PrismaClient().$extends(Blipit.prismaExtension("postgresql"));
await Blipit.trace("send OTP", () => sms.send(phone, code), { "server.address": "sms.example.ae" });4ページの見方
各カードには、呼び出し数、応答時間の中央値と 95 パーセンタイル、エラー率、今日 (UTC) の稼働率と、失敗を赤で示す小さなグラフが表示されます。失敗中のサービスが先頭に来ます。カードを開くと、呼び出しと応答時間のグラフ、最近失敗した呼び出しと最も遅い呼び出しが表示され、それぞれトレースにリンクしています。
5アラートを受け取る
アラートの「依存サービスとサーバーのアラート」でプロジェクトを選び、「依存サービスが失敗している」と「依存サービスが遅い」に独自の上限を設定するか、オフにします。アラートはメール、Slack、Microsoft Teams、Webhook に送られ、サービスが正常に戻ると 2 通目のメッセージで知らせます。
6その他の言語
スパンを OTLP JSON で https://in.blipit.io/v1/traces に X-Blipit-Key ヘッダー付きで送る OpenTelemetry SDK も表示されます。db.system を持つクライアントスパンはデータベースに、HTTP URL を持つクライアントスパンは外部サービスになります。
知っておくと便利
- 送信されないもの: SQL の値 (リテラルは ? に置き換え)、URL のクエリ文字列と認証情報、リクエストやレスポンスの本文。Blipit 自体への呼び出しは除外されます。
- tracesSampleRate (既定 0.2) で記録するリクエストの割合を決めます。ページの件数は元の規模に換算されます。tracing: false で無効にできます。
- スパンはプランの月間スパン枠に含まれます。依存サービスのデータはスパンと同じ期間保存されます: Free と Solo は 7 日、Team と Scale は 14 日。
- 自動記録には Node.js 20.16 または 22.3 以降が必要です。サーバーレス環境では、受信リクエストが記録され関数の一時停止前に送信されるようにハンドラーをラップします。AWS Lambda には wrapHandler、Next.js のルートハンドラーとサーバーアクションには withBlipit、Request を受け取るその他のハンドラーには traceRequest を使います。
お困りですか?support@blipit.io までメールしてください。各プロジェクトのキーとプロジェクト ID は app.blipit.io の「APIキー」にあります。