依赖服务

@blipit/node 0.2 及更高版本和 @blipit/nextjs 0.3 会记录服务器对数据库、缓存或外部服务(如短信、支付或邮件提供商)的每次调用。依赖服务页面为每个服务显示一张卡片,Twilio 开始失败或数据库变慢时你会立即看到。fetch、http、pg、mysql2 和 ioredis 无需任何设置。

1安装或更新 SDK

更新到 @blipit/node 0.2 或 @blipit/nextjs 0.3,并在应用启动前用密钥初始化。在 Next.js 中,还要从 instrumentation.ts 导出 register,让 Blipit 在服务器启动时运行。

sh
npm install @blipit/node@latest
instrumentation.ts
export { 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 各需一行代码。trace() 可包裹其他任何调用,例如不使用 HTTP 的短信 SDK。

js
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,服务恢复正常后会再发一条消息。

6其他语言

任何以 OTLP JSON 格式、带 X-Blipit-Key 请求头将 span 发送到 https://in.blipit.io/v1/traces 的 OpenTelemetry SDK 也会显示:带 db.system 的客户端 span 会成为数据库,带 HTTP URL 的客户端 span 会成为外部服务。

须知

  • 绝不发送:SQL 中的值(字面量会替换为 ?)、URL 中的查询字符串和凭据,以及请求或响应正文。对 Blipit 本身的调用会被跳过。
  • tracesSampleRate(默认 0.2)决定记录请求的比例;页面上的计数会按比例换算回来。设置 tracing: false 即可关闭。
  • span 计入套餐的每月 span 额度。依赖服务数据与 span 保留同样长的时间:Free 和 Solo 为 7 天,Team 和 Scale 为 14 天。
  • 自动记录需要 Node.js 20.16 或 22.3 及以上版本。在无服务器平台上,请包装处理函数,使传入请求被记录并在函数暂停前发送:AWS Lambda 用 wrapHandler,Next.js 的路由处理函数和 server action 用 withBlipit,其他接收 Request 的处理函数用 traceRequest。

遇到问题?发邮件至 support@blipit.io。每个项目的密钥和项目 id 在 app.blipit.io 的“API 密钥”下。