get_pm2_logs
Retrieve PM2 application logs from remote servers to monitor processes, troubleshoot errors, and analyze system performance through SSH/SFTP connections.
Instructions
Raccourci pour récupérer les logs PM2 d'une application spécifique ou de toutes les apps.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | Alias du serveur cible. | |
| app | No | Nom de l'application PM2 (optionnel, toutes par défaut). | |
| lines | No | Nombre de lignes à récupérer. | |
| errors | No | Récupérer uniquement les erreurs (stderr). |
Implementation Reference
- server.js:717-733 (handler)Executes PM2 logs command on remote server via SSH queue, handles parameters for app name, errors only, line count, waits for result and returns formatted output.async (params) => { let cmd = 'pm2 logs'; if (params.app) cmd += ` ${params.app}`; if (params.errors) cmd += ' --err'; cmd += ` --lines ${params.lines} --nostream`; const job = queue.addJob({ type: 'ssh', alias: params.alias, cmd: cmd, streaming: false }); history.logTask(job); ssh.executeCommand(job.id); const finalJob = await waitForJobCompletion(job.id, config.syncTimeout); if (finalJob) { return { content: [{ type: "text", text: `📋 Logs PM2${params.app ? ` (${params.app})` : ''} - ${finalJob.lineCount || 0} lignes:\n\n${finalJob.output || '(vide)'}` }] }; } else { return { content: [{ type: "text", text: `Tâche ${job.id} initiée en arrière-plan.` }] }; } }
- server.js:707-716 (schema)Zod input schema defining parameters: server alias (required), optional app name, lines (default 100), errors flag (default false).{ title: "Récupérer les logs PM2", description: "Raccourci pour récupérer les logs PM2 d'une application spécifique ou de toutes les apps.", inputSchema: z.object({ alias: z.string().describe("Alias du serveur cible."), app: z.string().optional().describe("Nom de l'application PM2 (optionnel, toutes par défaut)."), lines: z.number().optional().default(100).describe("Nombre de lignes à récupérer."), errors: z.boolean().optional().default(false).describe("Récupérer uniquement les erreurs (stderr).") }) },
- server.js:705-734 (registration)Registers the get_pm2_logs tool with the MCP server, including schema and inline handler.server.registerTool( "get_pm2_logs", { title: "Récupérer les logs PM2", description: "Raccourci pour récupérer les logs PM2 d'une application spécifique ou de toutes les apps.", inputSchema: z.object({ alias: z.string().describe("Alias du serveur cible."), app: z.string().optional().describe("Nom de l'application PM2 (optionnel, toutes par défaut)."), lines: z.number().optional().default(100).describe("Nombre de lignes à récupérer."), errors: z.boolean().optional().default(false).describe("Récupérer uniquement les erreurs (stderr).") }) }, async (params) => { let cmd = 'pm2 logs'; if (params.app) cmd += ` ${params.app}`; if (params.errors) cmd += ' --err'; cmd += ` --lines ${params.lines} --nostream`; const job = queue.addJob({ type: 'ssh', alias: params.alias, cmd: cmd, streaming: false }); history.logTask(job); ssh.executeCommand(job.id); const finalJob = await waitForJobCompletion(job.id, config.syncTimeout); if (finalJob) { return { content: [{ type: "text", text: `📋 Logs PM2${params.app ? ` (${params.app})` : ''} - ${finalJob.lineCount || 0} lignes:\n\n${finalJob.output || '(vide)'}` }] }; } else { return { content: [{ type: "text", text: `Tâche ${job.id} initiée en arrière-plan.` }] }; } } );