Skip to content

Commit 2d9cd8b

Browse files
author
mike dupont
committed
start of tracing
Not working just yet, the otel is not integrated yet in the server but enough information is being collected that I want to share these results. Together with the meta-introspector/eliza-starter#2 this allows for debugging of the server.
1 parent 46412e8 commit 2d9cd8b

File tree

11 files changed

+172
-78
lines changed

11 files changed

+172
-78
lines changed

agent/package.json

+7-6
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"main": "src/index.ts",
55
"type": "module",
66
"scripts": {
7-
"start": "node --loader ts-node/esm src/index.ts",
7+
"skip": "--trace-deprecation ,node.async_hooks,,,node.threadpoolwork.sync,node.threadpoolwork.async,node.dns.native,,node.promises.rejections,,node.module_timer,node.perf,node.perf.usertiming,node.perf.timerify --trace-warnings",
8+
"start": "node --trace-event-categories node,node.bootstrap,node.console,node.vm.script,v8,node.http,node.net.native,node.environment,node.fs.sync,node.fs_dir.sync,node.fs.async,node.fs_dir.async --loader ts-node/esm src/index.ts",
89
"dev": "node --loader ts-node/esm src/index.ts",
910
"check-types": "tsc --noEmit",
1011
"test": "jest"
@@ -49,19 +50,19 @@
4950
"@elizaos/plugin-intiface": "workspace:*",
5051
"@elizaos/plugin-multiversx": "workspace:*",
5152
"@elizaos/plugin-near": "workspace:*",
52-
"@elizaos/plugin-nft-generation": "workspace:*",
5353
"@elizaos/plugin-node": "workspace:*",
54-
"@elizaos/plugin-solana": "workspace:*",
5554
"@elizaos/plugin-starknet": "workspace:*",
5655
"@elizaos/plugin-story": "workspace:*",
57-
"@elizaos/plugin-sui": "workspace:*",
5856
"@elizaos/plugin-tee": "workspace:*",
59-
"@elizaos/plugin-ton": "workspace:*",
60-
"@elizaos/plugin-twitter": "workspace:*",
6157
"@elizaos/plugin-zksync-era": "workspace:*",
6258
"@opentelemetry/api": "^1.9.0",
6359
"@opentelemetry/auto-instrumentations-node": "^0.55.0",
6460
"@opentelemetry/exporter-zipkin": "^1.30.0",
61+
"@opentelemetry/instrumentation-express": "^0.47.0",
62+
"@opentelemetry/instrumentation-fetch": "^0.57.0",
63+
"@opentelemetry/instrumentation-fs": "^0.19.0",
64+
"@opentelemetry/instrumentation-http": "^0.57.0",
65+
"@opentelemetry/instrumentation-pg": "^0.50.0",
6566
"@opentelemetry/sdk-metrics": "^1.30.0",
6667
"@opentelemetry/sdk-node": "^0.57.0",
6768
"@opentelemetry/sdk-trace-node": "^1.30.0",

agent/src/index.ts

+36-23
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,60 @@
1-
//import * from "./otelapis";
2-
/*instrumentation.ts*/
1+
console.log("Hello agent")
2+
import { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api';
33
import { NodeSDK } from '@opentelemetry/sdk-node';
44
import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node';
55
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
66
import { PeriodicExportingMetricReader, ConsoleMetricExporter,} from '@opentelemetry/sdk-metrics';
7-
87
import * as opentelemetry from '@opentelemetry/api';
98
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
109
import { ZipkinExporter } from '@opentelemetry/exporter-zipkin';
11-
12-
//Specify zipkin url. default url is http://localhost:9411/api/v2/spans
13-
const zipkinUrl = 'http://localhost';
14-
const zipkinPort = '9411';
15-
const zipkinPath = '/api/v2/spans';
16-
const zipkinURL = `${zipkinUrl}:${zipkinPort}${zipkinPath}`;
17-
18-
const options = {
10+
import { Resource } from '@opentelemetry/resources';
11+
import {
12+
ATTR_SERVICE_NAME,
13+
ATTR_SERVICE_VERSION,
14+
} from '@opentelemetry/semantic-conventions';
15+
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
16+
17+
//Specify zipkin url. default url is http://localhost:9411/api/v2/spans
18+
const zipkinUrl = 'http://localhost';
19+
const zipkinPort = '9411';
20+
const zipkinPath = '/api/v2/spans';
21+
const zipkinURL = `${zipkinUrl}:${zipkinPort}${zipkinPath}`;
22+
23+
const options = {
1924
headers: {
2025
'module': 'mainai16z',
2126
},
2227
url: zipkinURL,
23-
//serviceName: 'your-application-name',
24-
28+
serviceName: 'ai16z',
29+
2530
// optional interceptor
2631
getExportRequestHeaders: () => {
27-
return {
28-
'module': 'mainai16z',
29-
}
32+
return {
33+
'module': 'mainai16z',
34+
}
3035
}
31-
}
36+
}
3237
const traceExporter_zipkin = new ZipkinExporter(options);
3338
// parts from https://stackoverflow.com/questions/71654897/opentelemetry-typescript-project-zipkin-exporter
3439

3540
const sdk = new NodeSDK({
41+
resource: new Resource({
42+
[ATTR_SERVICE_NAME]: 'eliza-agent',
43+
[ATTR_SERVICE_VERSION]: '1.0',
44+
}),
3645
//traceExporter: new ConsoleSpanExporter(),
3746
traceExporter: traceExporter_zipkin,
38-
metricReader: new PeriodicExportingMetricReader({
39-
exporter: new ConsoleMetricExporter(),
40-
}),
41-
instrumentations: [getNodeAutoInstrumentations()],
47+
instrumentations: [getNodeAutoInstrumentations(),
48+
new HttpInstrumentation()
49+
50+
],
4251
});
4352

44-
sdk.start();
53+
// For troubleshooting, set the log level to DiagLogLevel.DEBUG
54+
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ALL);
55+
56+
console.log(sdk.start());
57+
4558

4659
import { PostgresDatabaseAdapter } from "@elizaos/adapter-postgres";
4760
import { SqliteDatabaseAdapter } from "@elizaos/adapter-sqlite";
@@ -125,7 +138,7 @@ export const wait = (minTime: number = 1000, maxTime: number = 3000) => {
125138
const logFetch = async (url: string, options: any) => {
126139
elizaLogger.debug(`Fetching ${url}`);
127140
// Disabled to avoid disclosure of sensitive information such as API keys
128-
// elizaLogger.debug(JSON.stringify(options, null, 2));
141+
elizaLogger.debug(JSON.stringify(options, null, 2));
129142
return fetch(url, options);
130143
};
131144

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"build-docker": "turbo run build",
77
"cleanstart": "if [ -f agent/data/db.sqlite ]; then rm agent/data/db.sqlite; fi && pnpm --filter \"@elizaos/agent\" start --isRoot",
88
"cleanstart:debug": "if [ -f agent/data/db.sqlite ]; then rm agent/data/db.sqlite; fi && cross-env NODE_ENV=development VERBOSE=true DEBUG=eliza:* pnpm --filter \"@elizaos/agent\" start --isRoot",
9-
"start": "pnpm --filter \"@elizaos/agent\" start --isRoot",
9+
"start": "pnpm --filter \"@elizaos/agent\" start --isRoot --characters=characters/eliza.character.json",
1010
"start:client": "pnpm --dir client dev",
1111
"start:debug": "cross-env NODE_ENV=development VERBOSE=true DEBUG=eliza:* pnpm --filter \"@elizaos/agent\" start --isRoot",
1212
"dev": "bash ./scripts/dev.sh",

packages/client-direct/src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ export class DirectClient {
237237
content,
238238
createdAt: Date.now(),
239239
};
240-
240+
console.log("Memory",memory);
241241
await runtime.messageManager.addEmbeddingToMemory(memory);
242242
await runtime.messageManager.createMemory(memory);
243243

packages/core/src/logger.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,10 @@ class ElizaLogger {
220220
debug(...strings) {
221221
if (!this.verbose) {
222222
// for diagnosing verbose logging issues
223-
// console.log(
224-
// "[ElizaLogger] Debug message suppressed (verbose=false):",
225-
// ...strings
226-
// );
223+
console.log(
224+
"[ElizaLogger] Debug message suppressed (verbose=false):",
225+
...strings
226+
);
227227
return;
228228
}
229229
this.#logWithStyle(strings, {

packages/core/src/memory.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export class MemoryManager implements IMemoryManager {
5555
return memory;
5656
}
5757

58-
const memoryText = memory.content.text;
58+
const memoryText = memory?.content?.text;
5959

6060
// Validate memory has text content
6161
if (!memoryText) {

0 commit comments

Comments
 (0)