Cloudflare Workers
HyperDX uses the OpenTelemetry standard for collecting telemetry data (logs and traces).
This Guide Integrates:
| ✅ Logs | ✖️ Metrics | ️✅ Traces |
Getting Started
Install Cloudflare Workers OpenTelemetry SDK
Use the following command to install the SDK.
npm install opentelemetry-sdk-workersConfigure Environment Variables
Afterwards you'll need to add the following environment variables to your
wrangler.toml to ship telemetry to HyperDX:
[vars]
OTEL_SERVICE_NAME = "<NAME_OF_YOUR_APP_OR_SERVICE>"
OTEL_EXPORTER_OTLP_ENDPOINT = "https://in-otel.hyperdx.io"
OTEL_EXPORTER_OTLP_HEADERS = "authorization=<YOUR_HYPERDX_API_KEY>"
OTEL_EXPORTER_LOGS_ENABLED = "true"Send Telemetry Data With Cloudflare Workers OpenTelemetry SDK
To send telemetry data to HyperDX, you can use the APIs provided by the SDK,
such as logger, sendResponse, fetch, and captureException, etc. Here's
an example code snippet using these APIs:
/* Required to patch missing performance API in Cloudflare Workers. */
import 'opentelemetry-sdk-workers/performance';
import { WorkersSDK } from 'opentelemetry-sdk-workers';
export interface Env {
OTEL_EXPORTER_LOGS_ENABLED: string;
OTEL_EXPORTER_OTLP_ENDPOINT: string;
OTEL_EXPORTER_OTLP_HEADERS: string;
OTEL_SERVICE_NAME: string;
}
export default {
async fetch(request: Request, env: any, ctx: ExecutionContext) {
const sdk = WorkersSDK.fromEnv(request, env, ctx);
const ts = Date.now();
try {
sdk.logger.info(
JSON.stringify({
message: 'Before fetch',
}),
);
await sdk.fetch('https://httpbin.org/headers/');
sdk.logger.info(
JSON.stringify({
message: 'After fetch',
took: Date.now() - ts,
}),
);
return sdk.sendResponse(
new Response(
JSON.stringify({
message: 'Hello, world!',
}),
{
headers: {
'content-type': 'application/json;charset=UTF-8',
},
},
),
);
} catch (ex: any) {
sdk.captureException(ex);
}
},
};