Se stiamo gestendo un'applicazione in Node.js con systemd su un server Linux, dobbiamo monitorare lo status della nostra applicazione e verificare se non vi siano eventuali errori durante la sua esecuzione.

Un'applicazione in Node.js viene gestita da systemd sotto una particolare utenza che esegue il file JavaScript principale della nostra app con un particolare servizio creato come file .service nella directory /etc/systemd/system.

[Service]
WorkingDirectory=/home/user/app
ExecStart=/usr/local/bin/node app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=app
User=user
Group=user
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target 

In questo caso l'utente è user. I messaggi di log della nostra applicazione verranno gestiti all'interno del log di sistema controllato da systemd (syslog).

Dopo aver avviato l'applicazione con il comando systemctl start app (app è il nome del servizio definito nel file precedente), possiamo verificare se l'app è online con questo comando:

systemctl status app

Se vi sono errori, l'app non risulterà attiva e nella shell vedremo un messaggio di errore generico che ci informerà che il servizio non è stato inizializzato.

Per esaminare i dettagli dell'errore generato da Node.js, dobbiamo accedere al log di sistema specificando l'identificatore della nostra app nel log di sistema (SyslogIdentifier) che nel nostro caso è app. Useremo quindi il seguente comando:

journalctl -u app

Il comando journalctl serve ad interrogare il log di sistema di systemd. In questo modo potremo vedere gli errori riportati da Node.js, correggerli ed infine effettuare il restart del servizio con il comando systemctl restart app.