Drop-in Node.js Admin Endpoint Point pour vous aider à analyser les problèmes de production.
Démo en direct | Utilisation | FAQ | Plugins | Exemple de projet | Changelog
L'exécution d'applications en production peut être difficile. Les applications peuvent s'écraser, s'exécuter dans des bogues ou se ralentir. Il existe différentes façons d'aborder ces problèmes. L'administrateur est un outil pour aider à résoudre les problèmes d'application. Il est conçu pour fournir des informations de débogage détaillées sur l'exécution des applications Node.js.
L'administrateur fournit des points de terminaison de débogage via un serveur HTTP. La fonctionnalité fournie par ce serveur est extensible car l'administrateur est un système de plugin.
Au lieu de décrire cela longuement, consultez le système de démonstration en direct sur Heroku!
Pour utiliser l'administrateur, le package Admin Node.js et au moins un plugin doivent être installés. L'exemple suivant montre une configuration typique.
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
Pour utiliser l'administrateur, il doit être configuré et démarré avec votre application. La liste de code foliaire montre comment cela peut être fait.
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 solution la plus simple consiste à configurer un tunnel SSH à la machine:
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"