# @else42/cf-worker-otel 中文文档

规范地址：https://npmcn.com/package/%40else42/cf-worker-otel/

版本：0\.2\.2
npm 元数据更新时间：2026-04-04T20:59:47.383Z
中文译文更新时间：2026-11-14T03:43:53.765Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40else42/cf-worker-otel
原文对照：https://npmcn.com/package/%40else42/cf-worker-otel/?lang=original
项目主页：https://github.com/elsbrock/cf-worker-otel#readme
源码仓库：https://github.com/elsbrock/cf-worker-otel

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：14.8 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-04-04T20:59:46.897Z
- 最新版本发布：2026-04-04T20:59:47.151Z
- 近 30 天下载量：2360（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 1 个）

## 中文简介

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

## 安装

```sh
npm install @else42/cf-worker-otel
```

也可以使用：`pnpm add @else42/cf-worker-otel`、`yarn add @else42/cf-worker-otel`、`bun add @else42/cf-worker-otel`

## README

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

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

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

## 安装

```bash
npm install @elsbrock/cf-worker-otel
```

> 发布至 [GitHub 软件包](https://github.com/elsbrock/cf-worker-otel/pkgs/npm/cf-worker-otel)添加 `@elsbrock:registry=https://npm.pkg.github.com` 给您的 `.npmrc`。 。 。 .

## 快速启动

```typescript
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;
  },
};
```

## 云层上的斯维尔特基特

```typescript
// 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)`

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

| 选项 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `serviceName` | `string` | 对 | 地图到 `service.name` 在OTLP内 |
| `endpoint` | `string` | 没有 | OTLP HTTP 端点 URL |
| `token` | `string` | 没有 | 手持者标志 `Authorization` 标题 |
| `defaultAttributes` | `Record<string, string>` | 没有 | 合并到每个数据点 |
| `histogramBounds` | `number[]` | 没有 | 自定义桶边框( 默认: 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()`每个工人引用一次——不按要求进行分批,不坚持不变.

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

## 许可证

[麻省理工学院](https://npmcn.com/package/%40else42/cf-worker-otel/LICENSE)

## 常见问题

### @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 和提交记录判断。

