@roz/grammy-opentelemetry@0.0.2
latest
grammY plugin to allow instrumentation with open telemetry
This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers




JSR Score
100%
Published
a year ago (0.0.2)
grammY OpenTelemetry
Integrates OpenTelemetry into grammY.
Development is in progress.
Description
After a lot of thought and research, we came to the conclusion that it would be bad to integrate with a particular technology, especially if it is possible to support many at once. Fortunately, there is the OpenTelemetry project, which defines a single approach to collecting and managing telemetry that integrates perfectly with many existing services. However, there are some problems with it:
- The JS toolkit is quite young, so many things are experimental or just under development, which makes it difficult to use.
- They split the Web and Node.js tools into separate packages, which will cause support issues in the future.
- They are very fond of autoinstrumentation, which intercepts
require/import
calls and patches the requested package, which we think is a very, very bad pattern that we don't want to impose on grammY users.
This plugin allows you to use open telemetry without those caveats.
Usage
import { Bot, Context } from "npm:grammy"; import { getHttpTracer, openTelemetryTransformer } from "jsr:@roz/grammy-opentelemetry"; const bot = new Bot<Context>("token"); bot.api.config.use(openTelemetryTransformer(getHttpTracer("my-bot"))); bot.command("start", (ctx) => { // Creates a new span for the current command, // tied to the span of the current update. return ctx.openTelemetry.trace( // span name "command.start", // span attributes { ["user.id"]: ctx.from?.id }, // span actions async (span) => { span.addEvent("command.start.handle"); await ctx.reply("Hello! I'm a bot!"); await ctx.reply("I can help you with a lot of things!"); }, ); }); bot.start();
Add Package
deno add jsr:@roz/grammy-opentelemetry
Import symbol
import * as grammy_opentelemetry from "@roz/grammy-opentelemetry";
Import directly with a jsr specifier
import * as grammy_opentelemetry from "jsr:@roz/grammy-opentelemetry";
Add Package
pnpm i jsr:@roz/grammy-opentelemetry
pnpm dlx jsr add @roz/grammy-opentelemetry
Import symbol
import * as grammy_opentelemetry from "@roz/grammy-opentelemetry";
Add Package
yarn add jsr:@roz/grammy-opentelemetry
yarn dlx jsr add @roz/grammy-opentelemetry
Import symbol
import * as grammy_opentelemetry from "@roz/grammy-opentelemetry";
Add Package
npx jsr add @roz/grammy-opentelemetry
Import symbol
import * as grammy_opentelemetry from "@roz/grammy-opentelemetry";
Add Package
bunx jsr add @roz/grammy-opentelemetry
Import symbol
import * as grammy_opentelemetry from "@roz/grammy-opentelemetry";