Unofficial
In questa pagina
  1. 01La pagina Jobs
  2. 02Creare un’attività da zero
  3. 03Eseguire ora, esecuzioni e log
  4. 04Attività integrate
  5. 05Avvisi
  6. 06Root e cosa leggono gli altri account

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.

  1. Pianificazionecampi cron e prossime esecuzioni
  2. Comandobash, eseguito come root
  3. Eseguire oraun’esecuzione e il suo log
  4. Integratele attività del pacchetto
  5. 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.

Attività pianificate: attività integrate Backup (disattivata), Empty the trash, Maintenance, Rotate nginx's logs e Toolchain catalog refresh, di proprietà di system; Disk report, di proprietà di ola, alle 06:00 dal lunedì al venerdì
  • 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

  1. Premere New job e assegnare un nome in Name.
  2. 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 come CRON_TZ=Europe/London 0 3 * * * usa un altro fuso orario.
  3. Scrivere Command (bash) come in un terminale. Più righe vengono eseguite come un unico script e il loro output diventa il log dell’esecuzione.
  4. 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 significa projects/. In un ambiente è visibile solo projects/, come /projects.
  5. 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.
  6. 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.
Nuova attività: Name Disk report, Schedule 0 6 * * 1-5 con 06:00 dal lunedì al venerdì e le prossime cinque esecuzioni, Command df -h /share/CACHEDEV1_DATA e date, Runs On the NAS, Working folder projects/, Timeout 60, Skip this run, Notify on failure e On selezionati, quindi 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.

Attività Disk report: comando, esecuzione sul NAS, Timeout 1 min, prossima esecuzione saltata, avviso in caso di errore, proprietario ola; un’esecuzione riuscita con codice di uscita 0 e log con output di df e data
  • 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à, quandoCosa 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.

Attività integrata Empty the trash: elementi rimossi, Timeout 1 h 0 min, proprietario system, esecuzioni quotidiane alle 03:45 tutte riuscite, log trash: 0 removed, 226 kept e solo Edit e Run now

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.

  1. Sotto Addresses (shoutrrr URLs), premere Add an address e incollare un URL per servizio, per esempio telegram://<token>@telegram?chats=<chat id> o generic+https://example.com/hook.
  2. 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.
  3. Premere Save.
Notifications: sotto Also sent to the addresses sono selezionati A job fails, A backup ends, A module restarts in a loop e The certificate; indirizzo di esempio telegram://<token>@telegram?chats=<chat id>, con Add an address e Save
InterruttoreL’avviso arriva quando
Un job fallisceun’esecuzione cron con avviso di errore fallisce o scade, oppure fallisce un’operazione: compilazione, spostamento di dati o installazione
Un backup terminatermina 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 continuoun processo continua a terminare e riavviarsi
Il certificatoun certificato caricato ha 30 giorni o meno di validità, nginx torna al certificato autofirmato oppure bvsd ne crea uno nuovo
nessuno, sempre inviatole 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.