Menu
popagent
publicLatest change 7cecf6a89b6f39dae8c5678f5b369014199aeb3c - Add self-hosted Mastra observability by AkurAI Build
import type { IMastraLogger } from "@mastra/core/logger";
import { PinoLogger } from "@mastra/loggers";
import { MastraStorageExporter, Observability, SamplingStrategyType } from "@mastra/observability";
import { AGENT_CONTEXT_KEYS } from "./agent-context";
export const OBSERVABILITY_SENSITIVE_FIELDS = [
"password", "token", "secret", "key", "apikey", "auth", "authorization",
"bearer", "bearertoken", "jwt", "credential", "clientsecret", "privatekey",
"refresh", "ssn", "value",
];
export const logger = new PinoLogger({
name: "popagent",
level: "info",
prettyPrint: process.env.NODE_ENV !== "production",
redact: {
paths: [
"authorization",
"headers.authorization",
"apiKey",
"token",
"secret",
"value",
"password",
],
censor: "[REDACTED]",
},
});
let activeLogger: IMastraLogger = logger;
export const appLogger = () => activeLogger;
export const setAppLogger = (next: IMastraLogger) => { activeLogger = next; };
export const observability = new Observability({
configs: {
default: {
serviceName: "popagent",
sampling: { type: SamplingStrategyType.ALWAYS },
exporters: [new MastraStorageExporter({ strategy: "auto" })],
requestContextKeys: [
AGENT_CONTEXT_KEYS.resourceId,
AGENT_CONTEXT_KEYS.sessionId,
AGENT_CONTEXT_KEYS.turnId,
AGENT_CONTEXT_KEYS.model,
AGENT_CONTEXT_KEYS.workspaceId,
AGENT_CONTEXT_KEYS.executionSource,
AGENT_CONTEXT_KEYS.taskId,
AGENT_CONTEXT_KEYS.scheduleId,
],
serializationOptions: {
maxStringLength: 4_096,
maxDepth: 8,
maxArrayLength: 100,
maxObjectKeys: 75,
},
logging: { enabled: true, level: "info" },
},
},
sensitiveDataFilter: {
sensitiveFields: OBSERVABILITY_SENSITIVE_FIELDS,
redactionStyle: "full",
redactionToken: "[REDACTED]",
},
});