Skip to content

/instrument-with-sazabi

Get an application's logs and traces into Sazabi with OpenTelemetry — pick the SDK for the runtime, export over OTLP/HTTP to a Sazabi intake URL kept in an environment variable, and prove data arrives before calling it done. Use when the user wants to connect an app or service

From plugin
paradev
16k48 skills1 agent1 command

Claude Code

$ npx -y skills add paradevai/paradev --skill instrument-with-sazabi --agent claude-code

SKILL.md

instrument-with-sazabi.SKILL.md
name: instrument-with-sazabi
description: Get an application's logs and traces into Sazabi with OpenTelemetry — pick the SDK for the runtime, export over OTLP/HTTP to a Sazabi intake URL kept in an environment variable, and prove data arrives before calling it done. Use when the user wants to connect an app or service to Sazabi, add OpenTelemetry, set up logging or tracing, or asks why Sazabi shows no data for a service.
argument-hint: the service or app to instrument, and where it runs
allowed-tools: mcp__sazabi__search, mcp__sazabi__execute

Data in, proven

Sazabi can only answer questions about telemetry it receives. The job is to make the app export logs and traces over OpenTelemetry to the user's Sazabi project, with no secrets in the repo, and to show the first records arriving.

0. How the tools work

The Sazabi MCP server lists only two tools, `search` and `execute`. Browse Sazabi's operations with `search` and `namespace: "sazabi"` (an empty query without a namespace lists connected connectors, not Sazabi operations). Before calling one, repeat `search` with `namespace: "sazabi"`, the hit's full name as the query, and `includeInputSchema: true` to load its arguments. Then run it with `execute` as `{ name, arguments }`, the name copied from the hit (for example `sazabi/logs.ask`).

1. Get an intake URL

Run `sazabi/logSources.list` first; an OpenTelemetry source may already exist for this project. If not, `sazabi/logSources.create` in manual mode for an OpenTelemetry source returns the intake endpoint to point the sender at. The intake URL embeds a write-only public key, so it needs no auth header, but it still belongs in an environment variable or secret store, not in committed code. Metrics go to the separate OpenTelemetry Metrics source, which has its own intake path.

2. Wire the SDK

Use the official OpenTelemetry SDK for the runtime and initialize it before the app handles requests:

  • **Node.js:** `@opentelemetry/sdk-node`, `@opentelemetry/auto-instrumentations-node`,

`@opentelemetry/exporter-trace-otlp-proto`, `@opentelemetry/exporter-logs-otlp-proto` and `@opentelemetry/sdk-logs`. Auto-instrumentation exports traces but not logs, so add a `BatchLogRecordProcessor` with an `OTLPLogExporter`, and bridge the app's existing logger (pino, winston) instead of replacing it.

  • **Python:** `opentelemetry-distro` and `opentelemetry-exporter-otlp-proto-http`,

then `opentelemetry-bootstrap -a install`, and enable the logging handler.

  • **Other runtimes:** the standard OTLP/HTTP exporter for that SDK.

Configure through the standard environment variables, set in the process that runs the app (not only at build time or in CI):

OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_ENDPOINT=<intake URL>
OTEL_SERVICE_NAME=<service name>

Set `OTEL_SERVICE_NAME` and `deployment.environment` so every record says which service and environment it came from. Add the variable names to `.env.example` or the deploy config, with the value left to the user.

3. Prove it

Run the app (or deploy it), make a request, then ask Sazabi with `sazabi/logs.ask`: "how many records from service `<name>` in the last 15 minutes". Records usually show up within a minute or two. If none arrive, check that the variables are set in the running process, that the URL has its `https://` scheme, and the app's output for SDK initialization errors.

4. Hand off

Commit on a branch and open a pull request. Say which signals are flowing (logs, traces), which service name to search for, and which variables the user must set in each environment.

Anti-patterns

  • **Committing the intake URL.** It is a write key; keep it in configuration.
  • **Traces only.** Most debugging starts from log lines; export both.
  • **Calling it done before a record arrives.** Configuration that has never

delivered a record is a guess.

Read more
@superset-sh
Ships withparadev

Paradev is an open-source Codex App and Conductor alternative. Orchestrate an army coding agents in parallel with your own subscriptions.

Stars on GitHub

Momentum

stars in total
16.2k
Star history of superset-sh/superset on GitHub, a chart by star-history.com

Other skills on paradev.

find-in-circleback
Auto-invoked

find-in-circleback

Answer "what did we say, decide, or promise" from Circleback meetings — search by attendee, company, tag, or date before keyword,…

@superset-sh@superset-shInstall Skill
prep-with-circleback
Auto-invoked

prep-with-circleback

Build a brief for an upcoming meeting from Circleback — the calendar event, the history with the same people and company, open…

@superset-sh@superset-shInstall Skill
ci-triage
Auto-invoked

ci-triage

Diagnose a failing GitHub Actions run — find the first real error in the logs, tell a flake apart from a genuine failure, and…

@superset-sh@superset-shInstall Skill
issue-triage
Auto-invoked

issue-triage

Triage a GitHub issue into something actionable — reproduce the claim, find duplicates, judge severity, and apply labels,…

@superset-sh@superset-shInstall Skill
find-in-granola
Auto-invoked

find-in-granola

Answer "what did we say, decide, or promise" from Granola meeting notes — narrow to the meetings that can hold the answer, read…

@superset-sh@superset-shInstall Skill

More skills from other plugins.

paseo

paseo

Paseo reference for managing hosts, projects, workspaces, workspace scripts, agents, schedules, and heartbeats.

paseo11d23k
@getpaseo@getpaseoInstall Skill
capabilities

capabilities

Your capability catalog — read this at boot. Lists the temporal date-range skills and the external integrations (reached via the…

@chaitanyagiri@chaitanyagiriInstall Skill
brainstorming

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

codeg2d4.4k
@xintaofei@xintaofeiInstall Skill

Questions about instrument-with-sazabi.

Which coding agents can use instrument-with-sazabi?
instrument-with-sazabi installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.