Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
---|---|---|
.. | ||
src | ||
CHANGELOG.md | ||
README.md | ||
package.json | ||
tsconfig.build.json | ||
tsconfig.json | ||
tsconfig.spec.json | ||
vitest.config.ts |
README.md
OpenTelemetry middleware for Hono
This package provides a Hono middleware that instruments your application with OpenTelemetry.
Usage
import { otel } from '@hono/otel'
import { NodeSDK } from '@opentelemetry/sdk-node'
import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node'
import { Hono } from 'hono'
const sdk = new NodeSDK({
traceExporter: new ConsoleSpanExporter(),
})
sdk.start()
const app = new Hono()
app.use('*', otel())
app.get('/', (c) => c.text('foo'))
export default app
Usage on Cloudflare Workers
Since @opentelemetry/sdk-node is not supported on Cloudflare Workers, you need to use @microlabs/otel-cf-workers instead.
The following example shows how to use @microlabs/otel-cf-workers with Honeycomb:
import { otel } from '@hono/otel'
import { instrument, ResolveConfigFn } from '@microlabs/otel-cf-workers'
import { Hono } from 'hono'
const app = new Hono()
app.use('*', otel())
app.get('/', (c) => c.text('foo'))
const config: ResolveConfigFn = (env: Env, _trigger) => {
return {
exporter: {
url: 'https://api.honeycomb.io/v1/traces',
headers: { 'x-honeycomb-team': env.HONEYCOMB_API_KEY },
},
service: { name: 'greetings' },
}
}
export default instrument(app, config)
Limitation
Since this instrumentation is based on Hono's middleware system, it instruments the entire request-response lifecycle. This means that it doesn't provide fine-grained instrumentation for individual middleware.
Author
Hong Minhee https://hongminhee.org/
License
MIT