Skip to content

Commit 647d1cd

Browse files
author
mike dupont
committed
now using helpers for the traces
1 parent eb4a7c0 commit 647d1cd

File tree

2 files changed

+44
-60
lines changed

2 files changed

+44
-60
lines changed

agent/run.sh

100644100755
File mode changed.

agent/src/index.ts

+44-60
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
//
22
import { registerInstrumentations } from '@opentelemetry/instrumentation';
3-
import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
4-
import { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api';
5-
import { trace } from '@opentelemetry/api';
3+
//import { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api';
4+
//import { trace } from '@opentelemetry/api';
65

76
//import { NodeSDK } from '@opentelemetry/sdk-node';
87
import { SpanExporter, Span } from '@opentelemetry/sdk-trace-base';
98
// , ExportResult
109
import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node';
1110
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
12-
import { PeriodicExportingMetricReader, ConsoleMetricExporter,} from '@opentelemetry/sdk-metrics';
11+
//import { PeriodicExportingMetricReader, ConsoleMetricExporter,} from '@opentelemetry/sdk-metrics';
1312
import * as opentelemetry from '@opentelemetry/api';
14-
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
13+
//import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
1514
import { ZipkinExporter } from '@opentelemetry/exporter-zipkin';
1615
import { Resource } from '@opentelemetry/resources';
1716
import {
1817
ATTR_SERVICE_NAME,
1918
ATTR_SERVICE_VERSION,
2019
} from '@opentelemetry/semantic-conventions';
2120
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
21+
import { wrapTracer } from '@opentelemetry/api/experimental';
2222

2323
//Specify zipkin url. default url is http://localhost:9411/api/v2/spans
2424
const zipkinUrl = 'http://localhost';
@@ -31,8 +31,8 @@ const options = {
3131
'module': 'mainai16z',
3232
},
3333
url: zipkinURL,
34-
serviceName: 'ai16z',
35-
34+
serviceName: 'ai16z',
35+
3636
// optional interceptor
3737
getExportRequestHeaders: () => {
3838
return {
@@ -44,72 +44,58 @@ const traceExporter_zipkin = new ZipkinExporter(options);
4444
const traceExporter = new ConsoleSpanExporter();
4545

4646

47-
export class CustomConsoleSpanExporter implements SpanExporter {
48-
export(spans: Span[], resultCallback: (result: ExportResult) => void): void {
49-
elizaLogger.log("hello1")
50-
//traceExporter.export(spans,resultCallback);
51-
//traceExporter.export(traceExporter_zipkin,resultCallback);
52-
for (const span of spans) {
53-
const spanData = {
54-
name: span.name,
55-
traceId: span.spanContext().traceId,
56-
spanId: span.spanContext().spanId,
57-
startTime: span.startTime,
58-
endTime: span.endTime,
59-
attributes: span.attributes,
60-
events: span.events,
61-
status: span.status,
62-
kind: span.kind,
63-
};
64-
elizaLogger.log(JSON.stringify(spanData, null, 2));
65-
}
66-
resultCallback(ExportResult.SUCCESS);
67-
}
68-
shutdown(): Promise<void> {
69-
return Promise.resolve();
70-
}
71-
}
72-
const myExporter = new CustomConsoleSpanExporter()
47+
// export class CustomConsoleSpanExporter implements SpanExporter {
48+
// export(spans: Span[], resultCallback: (result: any) => void): void {
49+
// elizaLogger.log("test trace", JSON.stringify(spans, null, 2));
50+
// //traceExporter.export(spans,resultCallback);
51+
// //traceExporter.export(traceExporter_zipkin,resultCallback);
52+
// //elizaLogger.log(JSON.stringify(spans, null, 2));
53+
// }
54+
// }
55+
// const myExporter = new CustomConsoleSpanExporter()
7356

7457
// parts from https://stackoverflow.com/questions/71654897/opentelemetry-typescript-project-zipkin-exporter
7558
//const { SimpleSpanProcessor } = import('@opentelemetry/sdk-trace-base');
7659
import { NodeTracerProvider, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-node";
7760
const txz=new SimpleSpanProcessor(traceExporter_zipkin);
7861
const tx=new SimpleSpanProcessor(traceExporter);
79-
const tx2=new SimpleSpanProcessor(myExporter);
62+
//const tx2=new SimpleSpanProcessor(myExporter);
8063

8164
try {
8265
const serviceName = 'eliza-agent';
8366
const provider = new NodeTracerProvider({
8467
resource: new Resource({
85-
[SEMRESATTRS_SERVICE_NAME]: serviceName,
8668
[ATTR_SERVICE_NAME]: serviceName,
8769
[ATTR_SERVICE_VERSION]: '1.0', }),
8870
spanProcessors: [
8971
txz,
90-
tx,
91-
tx2
72+
tx
73+
// tx2
9274
]
9375
});
9476

9577
// Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings
9678
provider.register();
97-
79+
9880
registerInstrumentations({
9981
instrumentations: [
10082
getNodeAutoInstrumentations(),
10183
new HttpInstrumentation(),
10284
],
10385
});
104-
86+
10587

10688
elizaLogger.log("setup!")
10789
} catch(error){
10890
elizaLogger.log("ERROR",error)
10991
}
11092
// const sdk = new NodeSDK({ resource: new Resource({
11193

112-
const tracer=opentelemetry.trace.getTracer('ai16z');
94+
//const tracer=opentelemetry.trace.getTracer('ai16z');
95+
96+
97+
98+
const tracer = wrapTracer(opentelemetry.trace.getTracer('ai16z-agent'))
11399

114100
// //traceExporter: new ConsoleSpanExporter(),
115101
// traceExporter: myExporter,
@@ -201,10 +187,12 @@ export const wait = (minTime: number = 1000, maxTime: number = 3000) => {
201187
};
202188

203189
const logFetch = async (url: string, options: any) => {
190+
return await tracer.withActiveSpan('logFetch', async () => {
204191
elizaLogger.debug(`Fetching ${url}`);
205192
// Disabled to avoid disclosure of sensitive information such as API keys
206193
elizaLogger.debug(JSON.stringify(options, null, 2));
207-
return fetch(url, options);
194+
return fetch(url, options);
195+
});
208196
};
209197

210198
export function parseArguments(): {
@@ -229,24 +217,18 @@ export function parseArguments(): {
229217
}
230218
}
231219

220+
232221
function tryLoadFile(filePath: string): string | null {
233-
elizaLogger.log(`tryLoadFile filePath: ${filePath}`);
234-
const span = tracer.startSpan('tryLoadFile', {
235-
// kind: 1, // server
236-
attributes: { filePath: filePath },
237-
});
238-
try {
239-
const ret = fs.readFileSync(filePath, "utf8");
240-
span.addEvent(`got ${ret.length}`);
241-
242-
span.end();
243-
return ret;
244-
245-
} catch (e) {
246-
247-
span.end();
248-
return null;
249-
}
222+
elizaLogger.log(`tryLoadFile filePath: ${filePath}`);
223+
return tracer.withActiveSpan('tryLoadFile', () => {
224+
try {
225+
const ret = fs.readFileSync(filePath, "utf8");
226+
return ret;
227+
228+
} catch (e) {
229+
return null;
230+
}
231+
})
250232
}
251233

252234
function isAllStrings(arr: unknown[]): boolean {
@@ -256,9 +238,10 @@ function isAllStrings(arr: unknown[]): boolean {
256238
export async function loadCharacters(
257239
charactersArg: string
258240
): Promise<Character[]> {
241+
return await tracer.withActiveSpan('loadCharacters', async () => {
259242
let characterPaths = charactersArg
260-
?.split(",")
261-
.map((filePath) => filePath.trim());
243+
?.split(",")
244+
.map((filePath) => filePath.trim());
262245
const loadedCharacters = [];
263246

264247
if (characterPaths?.length > 0) {
@@ -368,6 +351,7 @@ export async function loadCharacters(
368351
}
369352

370353
return loadedCharacters;
354+
})
371355
}
372356

373357
export function getTokenForProvider(

0 commit comments

Comments
 (0)