Drop-in node.js Admin ENDINNPINT para ayudarlo a analizar los problemas de producción.
Demostración en vivo | Uso | Preguntas frecuentes | Complementos | Proyecto de ejemplo | Colegio de cambios
Ejecutar aplicaciones en producción puede ser un desafío. Las aplicaciones pueden bloquearse, correr con errores o ponerse lentos. Hay una variedad de formas de abordar tales problemas. Admin es una herramienta para ayudar a solucionar problemas de los problemas de aplicación. Está diseñado para proporcionar información detallada de depuración sobre la ejecución de aplicaciones Node.js.
Admin proporciona puntos finales de depuración a través de un servidor HTTP. La funcionalidad proporcionada por este servidor es extensible ya que el administrador es un sistema de complementos.
En lugar de describir esto extensamente, ¡echa un vistazo al sistema de demostración en vivo en Heroku!
Para usar Admin, el paquete Node.js de administración y al menos un complemento deben instalarse. El siguiente ejemplo muestra una configuración típica.
npm install --save admin
admin-plugin-config
admin-plugin-healthcheck
admin-plugin-environment
admin-plugin-index
admin-plugin-profile
admin-plugin-report
admin-plugin-terminate
Para usar Admin, debe configurarse y comenzar con su aplicación. El listado de código Folowing muestra cómo se puede hacer esto.
const admin = require ( 'admin' ) ;
admin . configure ( {
http : { // optional
bindAddress : '127.0.0.1' , // default
port : 2999 // default
} ,
plugins : [
require ( 'admin-plugin-index' ) ( ) ,
require ( 'admin-plugin-report' ) ( ) ,
require ( 'admin-plugin-environment' ) ( ) ,
require ( 'admin-plugin-profile' ) ( ) ,
require ( 'admin-plugin-terminate' ) ( ) ,
require ( 'admin-plugin-config' ) ( {
config : {
// An application config goes here. This config object will be
// visible in the admin UI and via the admin REST endpoints.
secret : '42' ,
port : 8080
}
} ) ,
require ( 'admin-plugin-healthcheck' ) ( {
checks : {
// Define multiple healthchecks which check critical components
// in the system. The following example shows valid return values.
random ( ) {
const v = Math . random ( ) ;
if ( v > 0.8 ) {
throw new Error ( 'Random value >0.8' ) ;
} else if ( v > 0.3 ) {
return "Healthy like an application that isn't used." ;
} else {
return Promise . reject ( 'Something bad happened here…' ) ;
}
}
}
} )
]
} ) ;
admin . start ( ) ;
La solución más fácil es configurar un túnel SSH en la máquina:
SSH_KEY="~/.ssh/<my_key>"
REMOTE_USER="<user>"
REMOTE_HOST="<host>"
ADMIN_PORT="<port>"
ssh -i "$SSH_KEY" -Nf -L "$ADMIN_PORT:localhost:$ADMIN_PORT" "$REMOTE_USER@$REMOTE_HOST"
curl "localhost:$ADMIN_PORT"