| 1 | { |
| 2 | "$schema": "../../node_modules/wrangler/config-schema.json", |
| 3 | "name": "g1t-telemetry", |
| 4 | "account_id": "1e6f2cffa3f445920836e8ebe446bb58", |
| 5 | "compatibility_date": "2026-09-26", |
| 6 | "main": "./src/index.ts", |
| 7 | "workers_dev": false, |
| 8 | "placement": { "mode": "off" }, |
| 9 | // The OpenTelemetry endpoint: OTLP over HTTP from anywhere, with a |
| 10 | // project's ingest token. Everything else here (RPC, the live tail) is |
| 11 | // for service bindings; the public paths are /v1/* and /cloudflare/v1/*. |
| 12 | "routes": [{ "pattern": "otel.g1t.sh", "custom_domain": true }], |
| 13 | // One store per project: its requests, logs, spans, metrics, error |
| 14 | // groups, ingest tokens and exports, in the object's own SQLite storage |
| 15 | // (src/store.ts). No D1. And one meter per workspace, by slug: what all |
| 16 | // its projects sent each day and month, and the plan billing last said |
| 17 | // it is on (src/meter.ts). |
| 18 | "durable_objects": { |
| 19 | "bindings": [ |
| 20 | { "name": "STORES", "class_name": "TelemetryStore" }, |
| 21 | { "name": "METERS", "class_name": "TelemetryMeter" } |
| 22 | ] |
| 23 | }, |
| 24 | "migrations": [ |
| 25 | { "tag": "v1", "new_sqlite_classes": ["TelemetryStore"] }, |
| 26 | { "tag": "v2", "new_sqlite_classes": ["TelemetryMeter"] } |
| 27 | ], |
| 28 | // What the deployments service notes under each app's hostname (its |
| 29 | // project and deployment), read to file a request the dispatcher saw |
| 30 | // before its note reached it, and Cloudflare's own export. Read only. |
| 31 | "kv_namespaces": [{ "binding": "DOMAINS", "id": "14bc5c233d4c46a5bbf23b5367cce5fd" }], |
| 32 | // Whether a project's workspace has the plan: a free workspace's projects |
| 33 | // send FREE_TELEMETRY_BYTES_PER_MONTH (1 GiB) a month between them, a |
| 34 | // thirtieth a day; past it OTLP is answered 429 and tail events keep |
| 35 | // their requests only (src/quota.ts). 0 is no cap. On the plan, what is |
| 36 | // sent past it is reported to billing (note_pending, source telemetry). |
| 37 | "services": [{ "binding": "BILLING", "service": "g1t-billing" }], |
| 38 | "vars": { "FREE_TELEMETRY_BYTES_PER_MONTH": "1073741824" }, |
| 39 | // Secret, optional: CLOUDFLARE_EXPORT_KEY, which a Workers |
| 40 | // Observability destination on the account sends as x-g1t-export-key |
| 41 | // to https://otel.g1t.sh/cloudflare/v1/{traces,logs}. |
| 42 | // OTLP requests per client address, counted before the body is read or a |
| 43 | // project's store is woken (src/index.ts). Id and limit: RATE_LIMITS in |
| 44 | // packages/contracts. |
| 45 | "ratelimits": [{ "name": "TELEMETRY_INGEST_LIMIT", "namespace_id": "4701", "simple": { "limit": 600, "period": 60 } }], |
| 46 | // Its own logs: few, as every request to an app is a tail event here. |
| 47 | "observability": { "enabled": true, "head_sampling_rate": 0.05 } |
| 48 | } |