Attività pianificate sul NAS: cron con log e avvisi in caso di errore
La pagina Jobs di Bucket & Code Server IDE esegue i comandi secondo una pianificazione cron e conserva il log di ogni esecuzione. Un’attività può segnalare un errore nei log di sistema QTS e su Telegram, Discord, Slack o tramite e-mail dopo aver aggiunto i relativi indirizzi.
- Pianificazionecampi cron e prossime esecuzioni
- Comandobash, eseguito come root
- Eseguire oraun’esecuzione e il suo log
- Integratele attività del pacchetto
- Avvisilog di sistema e chat
Le immagini provengono da un NAS di prova e mostrano le etichette della versione 1.0.0-49. L’indirizzo nell’immagine Notifications è un esempio.
01La pagina Jobs
La pagina ha due schede. Scheduled elenca le attività cron: quelle integrate nel pacchetto e quelle create dagli account. Operations elenca le ultime 50 operazioni lunghe eseguite da bvsd, come installazioni e spostamenti di dati, dalla più recente.
Una riga di Scheduled mostra attività e proprietario, pianificazione in parole e come espressione, prossima esecuzione e interruttore di attivazione. Aprire la riga per vedere comando, esecuzioni e log. Il badge in alto indica il fuso orario del NAS, usato da tutti gli orari della pagina.
- Uno sviluppatore crea attività e modifica o elimina le proprie. Un admin modifica tutte le attività.
- Ogni account connesso legge elenco, comandi e log, anche un visualizzatore.
02Creare un’attività da zero
- Premere New job e assegnare un nome in Name.
- Inserire Schedule: cinque campi (minuto ora giorno mese giorno della settimana), sei con i secondi all’inizio, oppure
@daily,@hourly,@every 90m. Gli esempi sotto il campo lo compilano. Il riquadro inferiore descrive la pianificazione ed elenca le prossime cinque esecuzioni nel fuso del NAS. Un prefisso comeCRON_TZ=Europe/London 0 3 * * *usa un altro fuso orario. - Scrivere Command (bash) come in un terminale. Più righe vengono eseguite come un unico script e il loro output diventa il log dell’esecuzione.
- Runs: On the NAS, oppure in uno degli ambienti, dove il comando vede strumenti e librerie di quel sistema. Working folder è relativo a
projects/nella cartella dati oppure è un percorso assoluto; vuoto significaprojects/. In un ambiente è visibile soloprojects/, come/projects. - Timeout in seconds: un’esecuzione ancora attiva dopo questo intervallo viene arrestata e segnata come scaduta. Una nuova attività parte da 3600; 0 significa senza limite. When the previous run is still going: Skip this run oppure Run it after the previous one; al massimo un’esecuzione rimane in attesa.
- Notify on failure e On sono selezionati per una nuova attività. Un’attività disattivata conserva le impostazioni e si esegue solo manualmente. Premere Create the job.
Nelle notti del cambio d’ora le attività seguono la regola di Debian cron. Un’attività con * o */N all’inizio del campo minuto o ora, @hourly o @every segue il tempo trascorso: in autunno viene eseguita in entrambi i passaggi dell’ora ripetuta; in primavera l’ora saltata non si verifica. Ogni altra attività esegue ciascun orario una volta. Un orario nell’ora ripetuta viene eseguito una volta; uno nell’ora saltata viene eseguito subito dopo il cambio.
03Eseguire ora, esecuzioni e log
Run now nella finestra dell’attività avvia subito un’esecuzione aggiuntiva, a meno che l’attività sia già in corso. La finestra elenca inizio, durata, risultato e codice di uscita di ogni esecuzione. Selezionarne una per leggere il log sotto l’elenco.
- La prima e l’ultima riga del log sono scritte da bvsd. La prima indica esecuzione e attività, quando è partita e chi l’ha avviata: un account o la pianificazione. L’orario è UTC, mentre l’elenco usa quello del NAS. L’ultima indica risultato e durata.
- Un’attività conserva le ultime 100 esecuzioni, ciascuna con gli ultimi 4 KB di output. Il log completo di un’esecuzione viene conservato per 30 giorni.
- Un errore o un timeout aggiunge un last run failed rosso accanto all’attività nell’elenco; il riquadro Jobs in Overview la conta sotto failing.
- Quando il comando termina, i processi avviati in background continuano. Un timeout, l’eliminazione dell’attività o l’arresto del pacchetto invia SIGTERM a tutto il gruppo di processi, poi SIGKILL dopo 5 secondi.
- Edit modifica l’attività. Delete arresta un’esecuzione in corso ed elimina attività, esecuzioni e log. Solo il proprietario e un admin vedono questi pulsanti; gli altri vedono Close.
04Attività integrate
Le attività contrassegnate built in sono quelle di bvsd e appartengono a system.
| Attività, quando | Cosa fa |
|---|---|
Backup@daily per impostazione predefinita | il backup configurato nella pagina Backup, dopo avervi attivato Scheduled backups; quella pagina ne gestisce pianificazione e interruttore |
| Manutenzione ogni giorno alle 03:30 | rimuove da tmp/ nella cartella dati gli elementi invariati da 10 giorni e ruota log/audit.log oltre 10 MB |
| Svuota il cestino ogni giorno alle 03:45 | rimuove gli elementi spostati in trash/ nella cartella dati da oltre 7 giorni: repository, bucket e cartelle personali di account eliminati |
| Aggiornamento del catalogo delle toolchain ogni giorno alle 04:15 | scarica il catalogo toolchain firmato e lo usa se la firma è valida e il catalogo è più recente |
| Ruota i log di nginx ogni ora, al minuto 7 | rinomina nginx-access.log o nginx-error.log in .1 quando supera 20 MB, conserva cinque vecchi file e chiede a nginx di riaprire i log |
Un admin può modificare pianificazione, timeout, comportamento durante un’esecuzione e avviso di errore di un’attività integrata, e disattivarla. Nome, comando, ambiente e cartella di lavoro rimangono fissi e non c’è Delete.
05Avvisi
bvsd scrive ogni avviso nei log di sistema QTS. Notifications nella pagina System li invia anche ai servizi di chat e posta tramite URL shoutrrr: Telegram, Discord, Slack, e-mail, webhook e altri.
- Sotto Addresses (shoutrrr URLs), premere Add an address e incollare un URL per servizio, per esempio
telegram://<token>@telegram?chats=<chat id>ogeneric+https://example.com/hook. - Sotto Also sent to the addresses, deselezionare ciò che deve rimanere solo nei log di sistema. In una nuova installazione tutte e quattro le opzioni sono selezionate.
- Premere Save.
| Interruttore | L’avviso arriva quando |
|---|---|
| Un job fallisce | un’esecuzione cron con avviso di errore fallisce o scade, oppure fallisce un’operazione: compilazione, spostamento di dati o installazione |
| Un backup termina | termina un backup, una verifica o un ripristino, anche con successo, oppure un backup pianificato non riesce ad avviarsi |
| Un modulo si riavvia in un ciclo continuo | un processo continua a terminare e riavviarsi |
| Il certificato | un certificato caricato ha 30 giorni o meno di validità, nginx torna al certificato autofirmato oppure bvsd ne crea uno nuovo |
| nessuno, sempre inviato | le impostazioni sono state rifiutate all’avvio, è stato trovato uno spostamento di dati incompleto, sono stati terminati processi residui oppure non è stato possibile scrivere la configurazione |
- Un avviso sullo stesso argomento viene inviato al massimo una volta ogni 10 minuti, anche ai log di sistema. Il successivo indica quanti sono stati trattenuti.
- Ogni indirizzo riceve un invio separato con limite di 10 secondi. Un errore viene registrato con il solo schema dell’URL, perché il resto contiene il token.
- Solo un admin modifica indirizzi e interruttori. Gli altri account vedono gli interruttori e lo schema di ogni URL.
L’admin del NAS può impostare gli indirizzi anche tramite il socket CLI del pacchetto. L’elenco inviato sostituisce gli indirizzi precedenti e gli interruttori conservano i propri valori:
/usr/bin/bucketvs/bin/curl --unix-socket /usr/bin/bucketvs/var/run/bvsd-cli.sock \
-X PUT -H 'Content-Type: application/json' \
-d '{"notify":{"shoutrrr_urls":["telegram://<token>@telegram?chats=<chat id>"]}}' \
http://bvsd/api/v1/settings
06Root e cosa leggono gli altri account
- Il comando di un’attività viene eseguito come root, sul NAS o nell’ambiente, indipendentemente da chi l’ha creato. Uno sviluppatore può creare attività e quindi eseguire qualsiasi comando sul NAS come root. Assegnare questo ruolo solo a persone a cui si concederebbe root sul NAS.
- Un’attività viene eseguita solo se il proprietario è uno sviluppatore o admin abilitato (dalla versione 1.0.0-52). Se è disabilitato o ha il ruolo membro o visualizzatore, ogni orario viene registrato come esecuzione saltata con la motivazione, per esempio its owner ola is disabled, e Run now risponde con la stessa ragione; un’esecuzione in corso viene arrestata. L’attività riprende quando l’account viene abilitato o torna sviluppatore. Eliminando un account si eliminano le sue attività, esecuzioni e log. Le attività integrate vengono eseguite qualunque sia lo stato di un account.
- Ogni account connesso, anche un visualizzatore, legge comando e output di tutte le attività. Tenere password e token fuori dal comando: inserirli in un file sotto
etc/nella cartella dati leggibile solo da root (chmod 600) e fare leggere il file al comando.