get-transaction-traces
Retrieve transaction traces from APM with optional filtering for slow transactions to identify performance bottlenecks and slow database queries.
Instructions
Get transaction traces from APM, optionally filtering for slow transactions. Useful for identifying performance bottlenecks and slow database queries.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| appName | No | Application name to filter transactions | |
| minDuration | No | Minimum transaction duration in seconds to filter slow transactions | |
| limit | No | Maximum number of transaction traces to return | |
| timeRange | No | Time range to search within | 1 HOUR AGO |
Implementation Reference
- src/newrelic-client.ts:185-208 (handler)The getTransactionTraces method executes NRQL queries to fetch Transaction traces from New Relic, optionally filtered by appName, minDuration, limit, and timeRange. It builds a SELECT query for name, appName, duration, timestamp, error, ordered by duration DESC.
/** * Get transaction traces (slow or all transactions) */ async getTransactionTraces( appName?: string, minDuration?: number, limit: number = 10, timeRange: string = '1 HOUR AGO' ): Promise<any[]> { const conditions: string[] = []; if (appName) { conditions.push(`appName = '${this.escapeLike(appName)}'`); } if (minDuration !== undefined) { conditions.push(`duration > ${minDuration}`); } const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')} ` : ''; const query = `SELECT name, appName, duration, timestamp, error FROM Transaction ${whereClause}SINCE ${timeRange} ORDER BY duration DESC LIMIT ${limit}`; return this.executeNRQL(query); } - src/index.ts:281-293 (handler)The case handler for 'get-transaction-traces' in the CallToolRequestSchema handler. It parses input args using GetTransactionTracesInputSchema, calls newRelicClient.getTransactionTraces(), and returns results as JSON text.
case 'get-transaction-traces': { const { appName, minDuration, limit, timeRange } = GetTransactionTracesInputSchema.parse(args); const results = await newRelicClient.getTransactionTraces(appName, minDuration, limit, timeRange); return { content: [ { type: 'text', text: JSON.stringify(results, null, 2), }, ], }; } - src/types.ts:35-40 (schema)Zod schema defining input validation for get-transaction-traces: appName (optional string), minDuration (optional number), limit (number, default 10), timeRange (string, default '1 HOUR AGO').
export const GetTransactionTracesInputSchema = z.object({ appName: z.string().optional().describe('Application name to filter transactions'), minDuration: z.number().optional().describe('Minimum transaction duration in seconds to filter slow transactions'), limit: z.number().default(10).describe('Maximum number of transaction traces to return'), timeRange: z.string().default('1 HOUR AGO').describe('Time range to search within'), }); - src/index.ts:173-201 (registration)Registration of the 'get-transaction-traces' tool in ListToolsRequestSchema handler, including name, description, and inputSchema definition.
{ name: 'get-transaction-traces', description: 'Get transaction traces from APM, optionally filtering for slow transactions. ' + 'Useful for identifying performance bottlenecks and slow database queries.', inputSchema: { type: 'object', properties: { appName: { type: 'string', description: 'Application name to filter transactions', }, minDuration: { type: 'number', description: 'Minimum transaction duration in seconds to filter slow transactions', }, limit: { type: 'number', description: 'Maximum number of transaction traces to return', default: 10, }, timeRange: { type: 'string', description: 'Time range to search within', default: '1 HOUR AGO', }, }, }, }, - src/newrelic-client.ts:220-222 (helper)The escapeLike helper method used to escape single quotes and percent signs in appName values for NRQL queries.
private escapeLike(value: string): string { return value.replace(/'/g, "\\'").replace(/%/g, '\\%'); }