Skip to content

Commit 5b161c3

Browse files
committed
examples: update to use tracing
1 parent f35382f commit 5b161c3

5 files changed

Lines changed: 83 additions & 0 deletions

File tree

develop/docker-compose.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
services:
2+
otel-collector:
3+
image: otel/opentelemetry-collector-contrib:0.121.0
4+
command: ["--config=/etc/otel-collector-config.yml"]
5+
volumes:
6+
- ./otel-collector-config.yml:/etc/otel-collector-config.yml:ro
7+
ports:
8+
- "4317:4317" # OTLP gRPC
9+
- "4318:4318" # OTLP HTTP
10+
depends_on:
11+
- jaeger
12+
13+
jaeger:
14+
image: jaegertracing/all-in-one:1.66.0
15+
ports:
16+
- "16686:16686" # Jaeger UI

develop/otel-collector-config.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
receivers:
2+
otlp:
3+
protocols:
4+
grpc:
5+
endpoint: 0.0.0.0:4317
6+
http:
7+
endpoint: 0.0.0.0:4318
8+
9+
processors:
10+
batch:
11+
12+
exporters:
13+
otlp/jaeger:
14+
endpoint: jaeger:4317
15+
tls:
16+
insecure: true
17+
18+
service:
19+
pipelines:
20+
traces:
21+
receivers: [otlp]
22+
processors: [batch]
23+
exporters: [otlp/jaeger]

examples/evm-client/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
"@apibara/evm": "workspace:*",
1515
"@apibara/evm-rpc": "workspace:*",
1616
"@apibara/protocol": "workspace:*",
17+
"@opentelemetry/api": "^1.9.0",
18+
"@opentelemetry/exporter-trace-otlp-grpc": "^0.57.2",
19+
"@opentelemetry/resources": "^1.30.1",
20+
"@opentelemetry/sdk-trace-node": "^1.30.1",
1721
"citty": "^0.1.6",
1822
"consola": "^3.4.2",
1923
"nice-grpc": "^2.1.8",

examples/evm-client/src/main-rpc.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import assert from "node:assert";
22
import { EvmRpcStream, type Filter, rateLimitedHttp } from "@apibara/evm-rpc";
33
import { createRpcClient } from "@apibara/protocol/rpc";
4+
import { trace } from "@opentelemetry/api";
5+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-grpc";
6+
import { Resource } from "@opentelemetry/resources";
7+
import {
8+
BatchSpanProcessor,
9+
NodeTracerProvider,
10+
} from "@opentelemetry/sdk-trace-node";
411
import { defineCommand, runMain } from "citty";
512
import consola from "consola";
613
import { createPublicClient } from "viem";
@@ -33,8 +40,29 @@ const command = defineCommand({
3340
default: "accepted",
3441
description: "Block finality (finalized, accepted)",
3542
},
43+
trace: {
44+
type: "string",
45+
description:
46+
"Enable OpenTelemetry tracing and specify the OTLP gRPC endpoint URL (e.g. http://localhost:4317)",
47+
},
3648
},
3749
async run({ args }) {
50+
if (args.trace) {
51+
const provider = new NodeTracerProvider({
52+
resource: new Resource({
53+
"service.name": "example-evm-rpc-client",
54+
}),
55+
});
56+
57+
const exporter = new OTLPTraceExporter({ url: args.trace });
58+
provider.addSpanProcessor(new BatchSpanProcessor(exporter));
59+
provider.register();
60+
61+
trace.setGlobalTracerProvider(provider);
62+
63+
consola.info("OpenTelemetry tracing enabled:", args.trace);
64+
}
65+
3866
consola.info("Creating EVM RPC client");
3967

4068
const viemClient = createPublicClient({

pnpm-lock.yaml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)