@else42/cf-worker-otel

中文文档
0.2.2发布于 2026/04/05MITTypeScriptES Module零依赖近 30 天下载 2360

Cloudflare 工人的轻量级OTLP计量客户端

中文使用文档
文档目录12 节
  1. 安装
  2. 快速启动
  3. 云层上的斯维尔特基特
  4. API 密码
  5. createMetrics(config)
  6. metrics.counter(name, value, attributes?)
  7. metrics.gauge(name, value, attributes?)
  8. metrics.histogram(name, value, attributes?)
  9. metrics.flush()
  10. Prometheus 设置
  11. 如何运作
  12. 许可证

@elsbrock/cf-worker-otel (英语)

将Cloudflare工人的度量衡推向普罗米修斯克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克.

  • ~200行线,零运行时间依赖关系
  • 柜台、仪表和直方图
  • 具有三角时间性的OTLP/HTTP JSON
  • 建造时间 waitUntil() 永远不要阻止你的反应
  • 无声无息的无声无声的无声无声的无声无声无相的无声无相无相的无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相无相

安装

npm install @elsbrock/cf-worker-otel

发布至 GitHub 软件包添加 @elsbrock:registry=https://npm.pkg.github.com 给您的 .npmrc。 。 。 .

快速启动

import { createMetrics } from "@elsbrock/cf-worker-otel";

export default {
  async fetch(request, env, ctx) {
    const metrics = createMetrics({
      serviceName: "my-worker",
      endpoint: env.OTLP_ENDPOINT,
      token: env.OTLP_AUTH_TOKEN,
    });
    const start = Date.now();

    const response = await handleRequest(request);

    metrics.counter("http_requests_total", 1, {
      method: request.method,
      status: String(response.status),
    });
    metrics.histogram("http_request_duration_ms", Date.now() - start);

    ctx.waitUntil(metrics.flush());
    return response;
  },
};

云层上的斯维尔特基特

// src/hooks.server.ts
import { createMetrics } from "@elsbrock/cf-worker-otel";
import { sequence } from "@sveltejs/kit/hooks";
import type { Handle } from "@sveltejs/kit";

const metricsHandle: Handle = async ({ event, resolve }) => {
  const env = event.platform?.env;
  const metrics = createMetrics({
    serviceName: "my-app",
    endpoint: env?.OTLP_ENDPOINT,
    token: env?.OTLP_AUTH_TOKEN,
  });
  const start = Date.now();
  let status = "500";
  try {
    const response = await resolve(event);
    status = String(response.status);
    return response;
  } finally {
    metrics.counter("http_requests_total", 1, {
      method: event.request.method,
      status,
      route: event.route.id ?? "unknown",
    });
    metrics.histogram("http_request_duration_ms", Date.now() - start);
    event.platform?.context?.waitUntil(metrics.flush());
  }
};

export const handle = sequence(metricsHandle, sessionHandle);

API 密码

createMetrics(config)

返回每个请求采集器。 每引用一次创建一个,最后冲出.

选项类型需求说明
serviceNamestring对地图到 service.name 在OTLP内
endpointstring没有OTLP HTTP 端点 URL
tokenstring没有手持者标志 Authorization 标题
defaultAttributesRecord<string, string>没有合并到每个数据点
histogramBoundsnumber[]没有自定义桶边框( 默认: HTTP 在 ms 中的恒度)

若为 endpoint 或者说 token 失踪了, flush() 什么也没做.

metrics.counter(name, value, attributes?)

Monotonic 计数器。 同名+同名属性在请求中被汇总.

metrics.gauge(name, value, attributes?)

即时值相. 每个属性集最后写胜出 .

metrics.histogram(name, value, attributes?)

单一观察放入一桶. 默认界限 : [5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000] m.

metrics.flush()

串起所有的东西给OTLP JSON,然后PST它。 传到 ctx.waitUntil()。 。 。 .

Prometheus 设置

启用OTLP接收器(v2.47+):

--web.enable-otlp-receiver

对于三角洲时间性支持(v3+):

--enable-feature=otlp-deltatocumulative

接收器在听 POST /api/v1/otlp/v1/metrics 在普罗米修斯港.

如何运作

每个 createMetrics() 电话创建一个孤立的收集器。 量子在请求处理过程中被积累为内存,然后被序列化为单个OTLP/HTTP JSON有效载荷并装入 waitUntil()每个工人引用一次——不按要求进行分批,不坚持不变.

三角洲时间性意味着每个推力只包含发生在 这个 请求。 普罗米修斯将三角洲转换为累积计数器服务器侧.

许可证

麻省理工学院

版本与发布记录

@else42/cf-worker-otel 共发布 1 个版本,首次发布于 2026/04/05;过去 12 个月发布了 1 个版本。

版本发布日期距今
0.2.2latest2026/04/057 个月前

关于 @else42/cf-worker-otel 的常见问题

@else42/cf-worker-otel 是什么?

Cloudflare 工人的轻量级OTLP计量客户端

如何安装 @else42/cf-worker-otel?

在项目目录运行 npm install @else42/cf-worker-otel,或使用 pnpm add / yarn add / bun add。

@else42/cf-worker-otel 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@else42/cf-worker-otel 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@else42/cf-worker-otel 可以商用吗?

@else42/cf-worker-otel 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@else42/cf-worker-otel 的下载量有多少?

根据 npm 官方下载统计,@else42/cf-worker-otel 在 2026/10/14 – 2026/11/12 这 30 天内被下载 2,360 次,日均约 79 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@else42/cf-worker-otel 还在维护吗?

最新版本 0.2.2 发布于 2026/04/05(7 个月前);至今共发布 1 个版本,其中过去 12 个月发布了 1 个;首次发布于 2026/04/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。