En esta guía te mostraremos cómo encontrar errores en apps que corren con PM2. Este proceso se puede hacer desde la Terminal segura de cPanel, o conectándote por SSH a tu hosting.
Se usará una aplicación de Node.js de ejemplo pero puede aplicar para cualquier otra aplicación que estemos usando.
Cómo realizar un debug de aplicaciones PM2
- Primero revisa el log de PM2 para buscar referencias al error ejecutando:
[debugg@server ~]$ pm2 logs
...
/home/debugg/.pm2/logs/test-app-error.log last 15 lines:
/home/debugg/.pm2/logs/test-app-out.log last 15 lines:
0|test_app | Aplicación de pruebas ok!
0|test_app | Aplicación de pruebas ok!
0|test_app | Aplicación de pruebas ok! - Veremos 2 archivos:
- nombre_de_la_app"-error".log: Mostrará las últimas 15 líneas de errores que tuvo la aplicación (si tuvo alguno)
- nombre_de_la_app"-out".log: Mostrará las últimas 15 líneas de salida que tuvo la aplicación
- Si todavía no encontramos el error, podemos ejecutar la aplicación de forma directa sin PM2, lo cual nos simplificará el proceso de debug. Para ello primero listamos las instancias de node.js que se encuentran funcionando con este comando:
[debugg@server ~]$ pm2 list
┌─────┬─────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼─────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ test_app │ default │ 1.0.0 │ fork │ 10359 │ 4D │ 0 │ online │ 0% │ 48.3mb │ debugg │ disabled │
└─────┴─────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ - Paramos la app con el id de referencia (en este caso 0):
[debugg@server ~]$ pm2 stop 0
[PM2] Applying action stopProcessId on app [0](ids: [ '0' ])
[PM2] [test_app](0) ✓
┌─────┬─────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼─────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ test_app │ default │ 1.0.0 │ fork │ 0 │ 0 │ 1 │ stopped │ 0% │ 0b │ debugg │ disabled │
└─────┴─────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴─────┴───────────┴──────────┴──────────┴──────────┴──────────┘ - En este punto tendríamos que saber el path absoluto de la app. Si no lo recordamos podemos ejecutar un "history" para buscarlo:
[debugg@server ~]$ history
1 2022-05-31 12:21:56 cd NodeJS-TestApp/
2 2022-05-31 12:22:23 node test_app.js
3 2022-05-31 12:23:02 cd ..
4 2022-05-31 12:24:03 node NodeJS-TestApp/test_app.js
5 2022-05-31 12:24:15 history
En nuestro caso el path es NodeJS-TestApp/test_app.js - Tratamos de ejecutarla manualmente:
[debugg@server ~]$ node NodeJS-TestApp/test_app.js
Aquí vemos que arrojó un error en la línea 10.
Error in line 10: Bad syntax - Una vez que hayamos solucionado el error, volvemos a levantar la app con PM2:
[debugg@server ~]$ pm2 start NodeJS-TestApp/test_app.js
[PM2] Applying action restartProcessId on app [test_app](ids: [ 0 ])
[PM2] [test_app](0) ✓
[PM2] Process successfully started
┌─────┬─────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼─────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ test_app │ default │ 1.0.0 │ fork │ 14168 │ 0s │ 1 │ online │ 0% │ 19.0mb │ debugg │ disabled │
└─────┴─────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴─────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Listo. ¡Esperamos que hayas podido encontrar el problema en tu app! :)
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.