Sommario:
- Passaggio 1: utilizzo dei metodi forniti da Systemd
- Passaggio 2: configurazione e utilizzo degli script di Service Checker
- Passaggio 3: considerazioni finali
Video: Script di monitoraggio del servizio per server Linux: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Avere un sistema stabile e sempre in esecuzione, anche se stai usando Linux, può essere un compito difficile.
A causa della complessità dei moderni pacchetti software e della cattiva codifica, inevitabilmente alcuni processi potrebbero bloccarsi di tanto in tanto. Questa potrebbe essere una cosa negativa se stai eseguendo un server e alcune persone si affidano a questi servizi.
Passaggio 1: utilizzo dei metodi forniti da Systemd
Come forse già saprai, la maggior parte dei moderni sistemi operativi Linux utilizza systemd.
Se non hai familiarità con systemd, questo è, secondo wikipedia:
"… un sistema di inizializzazione utilizzato nelle distribuzioni Linux per avviare lo spazio utente e gestire successivamente tutti i processi, invece dei sistemi di inizializzazione di UNIX System V o Berkeley Software Distribution (BSD). …"
Molte persone stanno ancora discutendo sul perché fosse necessario sostituire il buon vecchio sistema init con questo più complicato sistema di gestione dei processi, ma al seguente link si potrebbe trovare una buona spiegazione:
www.tecmint.com/systemd-replaces-init-in-l…
Il miglioramento più importante sarebbe che è in grado di avviare il sistema più velocemente di init, grazie all'elaborazione simultanea e parallela all'avvio invece dell'approccio sequenziale di init
Senza entrare nelle profondità di systemd, per aggiungere un processo a systemd, è necessario creare un file di servizio. La sintassi di un tale file può variare da molto semplice a estremamente complicata e non entreremo nei dettagli. Per avere un file.service di base è sufficiente utilizzare le seguenti voci:
[Unit]Description=Descrizione di applicationDocumentation=https://wikipedia.org/ After=local-fs.target network.target[Service]Type=simpleExecStart=/usr/sbin/applicationExecReload=/usr/sbin/application reloadExecStop=/ usr/sbin/application stopRestart=always[Install]WantedBy=multi-user.target
Inseriscili nel file application.service nella cartella /lib/systemd/system.
Cosa fanno ciascuna di queste opzioni è spiegato nel seguente link:
access.redhat.com/documentation/en-US/Red_…
Per avviare la tua applicazione, dai il seguente comando:
sudo systemctl start application.service
Nota: l'estensione.service può essere omessa.
Per interrompere l'applicazione:
sudo systemctl stop application.service
Se il file di configurazione è stato modificato e desideri ricaricare le impostazioni:
sudo systemctl reload application.service
Per riavviare l'applicazione:
sudo systemctl riavvia application.service
Per abilitare l'avvio automatico all'avvio:
sudo systemctl enable application.service
Se questa opzione è abilitata, il gestore processi systemd proverà ad avviare l'applicazione in base alle impostazioni fornite dal file di sistema.
Per disabilitarlo, usa lo stesso comando di sopra, ma con il parametro 'disable'.
Se inserisci Restart=sempre nel file di servizio, systemd monitorerà il processo e se non può essere trovato nell'elenco dei processi, proverà a riavviarlo automaticamente.
Se metti
RiavviaSec=30
dopo la direttiva di riavvio, aspetterà 30 secondi prima di provare a riavviare il processo. Questo potrebbe essere utile, poiché un tentativo di riavvio continuo di un servizio/applicazione in errore può portare a un'elevata richiesta sul sistema (scrittura di log degli errori, ecc.)
Come puoi vedere, systemd fornisce già alcuni mezzi per monitorare i processi. Tuttavia, in alcuni casi questo potrebbe non essere sufficiente. Cosa succede se un processo non esce (sarà ancora nell'elenco dei processi), ma smette di rispondere. In questo caso, per essere sicuri che un processo sia effettivamente attivo e funzionante, potrebbe essere necessario eseguire ulteriori controlli.
Qui è dove gli script di questo istruibile torneranno utili.
Passaggio 2: configurazione e utilizzo degli script di Service Checker
Se hai bisogno di un maggiore controllo dei tuoi processi/servizi in esecuzione, questi script saranno sicuramente utili.
Poiché il codice è leggermente grande, viene caricato su github e può essere trovato nel seguente repository:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
Il 'cuore' di tutto il pacchetto è il
checkService.sh
Prima di utilizzarlo, è necessario sostituire il percorso completo della cartella del servizio. Questo può essere trovato all'inizio dello script.
Lo script può monitorare diversi processi ed eseguire attività aggiuntive, come descritto di seguito:
Passa attraverso ogni file dalla sottocartella /services con estensione.serv o.check e controlla se c'è un processo attivo chiamato 'applicazione'.
Se non esiste un file '.check' per un'applicazione, solo il file application.serv:
Se il processo è attivo, lo considererà attivo
Se il processo è inattivo, riavvierà il servizio emettendo il seguente comando:
systemctl riavvia l'applicazione
se il file.serv è vuoto!
Se il file.serv non è vuoto e dispone dei diritti eseguibili, proverà a eseguirlo come un semplice script BASH.
Questo è utile se è necessario fare qualcosa in più oltre al semplice riavvio del servizio.
Ad esempio, nel file spamd.serv, dal repository sopra, nel caso in cui il servizio spamd sia morto, è necessario riavviare il servizio spamassassin, che riavvierà anche spamd. Riavviare solo spamd non sarebbe sufficiente.
È possibile modificare il contenuto di tale file serv in base alle esigenze.
Un altro esempio è il file pcscd.serv. In questo caso sono stati riavviati/terminati anche molti altri processi.
Se è presente un file di controllo, dopo aver verificato se il processo è in esecuzione, eseguirà anche questo file di script per eseguire ulteriori controlli.
Ad esempio, per il servizio oscam, abbiamo creato un file di controllo che tenta di connettersi alla sua interfaccia web per vedere se ha successo. In caso contrario, nonostante il processo sia attivo, il servizio non risponde e deve essere riavviato. Il riavvio del servizio deve essere eseguito/chiamato dal file.check stesso.
Un altro esempio potrebbe essere il servizio DLNA mediatomb.
Questo è un piccolo server che fornisce contenuti video/audio ai client DLNA e si trasmette sulla rete. A volte il servizio si blocca e non è più rilevabile, ma il processo sarà ancora attivo. Per verificare se il servizio è rilevabile, è stata utilizzata l'utilità CLI denominata gssdp-discover. L'intero codice che controlla il server DLNA è stato inserito all'interno di uno script mediatomb.check.
Questi sono solo alcuni esempi su come utilizzare i file.serv e.check.
Per monitorare un nuovo servizio è necessario creare un.serv e, se necessario, anche un file di controllo e scrivere al loro interno lo script corrispondente.
Se è sufficiente solo la verifica della presenza del processo, sarà sufficiente un file.serv vuoto. Se è necessario eseguire ulteriori controlli, è necessario creare un file.check e scrivere un piccolo script per eseguire il lavoro.
Ovviamente lo script.sh deve essere eseguito periodicamente, quindi deve essere creato anche un cron job per esso:
#check servizi in esecuzione ogni 5 minuti*/5 * * * * /var/bin/ServiceCheck/checkService.sh >/dev/null
Passaggio 3: considerazioni finali
Spero che troverete questo pacchetto utile in quanto può semplificare notevolmente il monitoraggio dei processi Linux e, si spera, ridurre al minimo i tempi di inattività dei vostri servizi.
Sentiti libero di caricare script aggiuntivi su github, se ne crei di nuovi. Fammelo sapere e ti aggiungerò come contributore.
Consigliato:
Stazione di servizio per rilevare CO: 5 passaggi
Stazione di servizio per Detect CO: Il monossido di carbonio (CO) è un gas molto pericoloso, perché non ha odore, non ha sapore. Non puoi vederlo o rilevarlo con il naso. Il mio obiettivo è costruire un semplice rilevatore di CO. In primo luogo, rilevo quantità molto piccole di quel gas nella mia casa. Questa è la ragione
MCU Accesso al servizio Internet tramite IFTTT – Ameba Arduino: 3 passaggi
MCU Accesso al servizio Internet tramite IFTTT – Ameba Arduino: l'accesso al servizio Internet è un lavoro facile per un dispositivo intelligente come un telefono Android, un tablet o un PC, ma non è così facile sui microcontrollori poiché di solito richiede una migliore connettività e potenza di elaborazione. Tuttavia, potremmo scaricare la parte pesante del
ROBOT DI SERVIZIO: 8 passaggi
ROBOT DI SERVIZIO: questo robot sarà un fidato assistente in tutti i tuoi rendering. Il robot è dotato di molti arti mobili, testa rotante e ruote girevoli. Ci sono 7 opzioni di colore per il corpo e 2 opzioni per gli occhi. HA LE RUOTE GIREVOLI
Kit per auto di monitoraggio robot intelligente fai-da-te Monitoraggio fotosensibile dell'auto: 7 passaggi
Fai da te Smart Robot Tracking Car Kit Tracking Car Photosensitive: Design by SINONING ROBOTÈ possibile acquistare da tracking robot carTheoryLM393 chip confrontare i due fotoresistori, quando c'è un LED fotoresistore laterale su BIANCO il lato del motore si fermerà immediatamente, l'altro lato del motore girare, in modo che
Monitoraggio in tempo reale del valore del tuo sensore da qualsiasi parte del mondo: 4 passaggi
Monitoraggio in tempo reale del valore del tuo sensore da qualsiasi parte del mondo: ho ricevuto un messaggio sul numero WhatsApp di techiesms relativo all'aiuto per la realizzazione di un progetto. Il progetto consisteva nel misurare la pressione esercitata sul sensore di pressione e visualizzarla su smartphone. Così ho aiutato a realizzare quel progetto e ho deciso di fare un tutor