Unofficial
Na této stránce
  1. 01Stránka Jobs
  2. 02Vytvoření nové úlohy
  3. 03Spustit nyní, běhy a logy
  4. 04Vestavěné úlohy
  5. 05Oznámení
  6. 06Root a co čtou ostatní účty

Naplánované úlohy na NASu: cron s logem a oznámením při chybě

Stránka Jobs v Bucket & Code Server IDE spouští příkazy podle plánu cron a uchovává log každého běhu. Úloha může při chybě odeslat oznámení do systémových logů QTS a po přidání adres také na Telegram, Discord, Slack nebo e-mail.

  1. Plánpole cron a příští spuštění
  2. Příkazbash, spouštěný jako root
  3. Spustit nyníběh a jeho log
  4. Vestavěnévlastní úlohy balíčku
  5. Oznámenísystémové logy a chat

Obrázky pocházejí z testovacího NASu a ukazují popisky verze 1.0.0-49. Adresa na obrázku Notifications je ukázková.

01Stránka Jobs

Stránka má dvě záložky. Scheduled obsahuje úlohy cron: vestavěné úlohy balíčku i úlohy vytvořené účty. Operations obsahuje posledních 50 dlouhých operací bvsd, například instalace a přesuny dat, od nejnovější.

Řádek Scheduled ukazuje úlohu a vlastníka, plán slovně i jako výraz, příští spuštění a přepínač zapnutí. Otevřete řádek pro příkaz, běhy a logy. Štítek nahoře uvádí časové pásmo NASu; všechny časy na stránce používají toto pásmo.

Naplánované úlohy: vestavěné Backup (vypnuto), Empty the trash, Maintenance, Rotate nginx's logs a Toolchain catalog refresh, vlastník system; Disk report, vlastník ola, v 06:00 od pondělí do pátku
  • Vývojář vytváří úlohy a mění nebo odstraňuje vlastní. Admin mění všechny úlohy.
  • Každý přihlášený účet čte seznam, příkazy i logy, včetně pozorovatele.

02Vytvoření nové úlohy

  1. Stiskněte New job a zadejte název do Name.
  2. Zadejte Schedule: pět polí (minuta hodina den měsíc den v týdnu), šest se sekundami na začátku nebo @daily, @hourly, @every 90m. Příklady pod polem ho vyplní. Rámeček pod ním popisuje plán a ukazuje příštích pět spuštění v pásmu NASu. Předpona jako CRON_TZ=Europe/London 0 3 * * * použije jiné časové pásmo.
  3. Napište Command (bash) jako do terminálu. Více řádků běží jako jeden skript a jejich výstup tvoří log běhu.
  4. Runs: On the NAS nebo v některém z prostředí, kde příkaz vidí nástroje a knihovny daného systému. Working folder je relativní vůči projects/ v datové složce nebo úplná cesta; prázdná hodnota znamená projects/. V prostředí je viditelné jen projects/, jako /projects.
  5. Timeout in seconds: běh pokračující po tomto čase se zastaví a označí jako překročení limitu. Nová úloha má 3600; 0 znamená bez limitu. When the previous run is still going: Skip this run nebo Run it after the previous one; čeká nejvýše jeden běh.
  6. Notify on failure a On jsou u nové úlohy zaškrtnuté. Vypnutá úloha uchovává nastavení a spouští se jen ručně. Stiskněte Create the job.
Nová úloha: Name Disk report, Schedule 0 6 * * 1-5 s časem 06:00 od pondělí do pátku a příštími pěti běhy, Command df -h /share/CACHEDEV1_DATA a date, Runs On the NAS, Working folder projects/, Timeout 60, Skip this run, zaškrtnuté Notify on failure a On a tlačítko Create the job

V noci změny času se úlohy řídí pravidlem Debian cron. Úloha s * nebo */N na začátku minutového či hodinového pole, @hourly nebo @every sleduje uplynulý čas: na podzim běží při obou průchodech opakovanou hodinou, na jaře přeskočená hodina nenastane. Ostatní úlohy provedou každý termín jednou. Termín v opakované hodině se provede jednou, termín v přeskočené hodině hned po změně.

03Spustit nyní, běhy a logy

Run now v dialogu úlohy okamžitě spustí další běh mimo plán, pokud tato úloha právě neběží. Dialog uvádí začátek, délku, výsledek a návratový kód každého běhu. Vyberte běh a přečtěte jeho log pod seznamem.

Úloha Disk report: příkaz, běh na NASu, Timeout 1 min, další běh se přeskočí, oznámení při chybě, vlastník ola; jeden úspěšný běh s návratovým kódem 0 a logem s výstupem df a datem
  • První a poslední řádek logu zapisuje bvsd. První uvádí běh, úlohu, čas a iniciátora: účet nebo plán. Čas je v UTC, zatímco seznam běhů ukazuje čas NASu. Poslední uvádí výsledek a délku běhu.
  • Úloha uchovává posledních 100 běhů, každý s posledními 4 KB výstupu. Úplný log běhu se uchovává 30 dní.
  • Chyba nebo překročení času přidá vedle úlohy červené last run failed a dlaždice Jobs na Overview ji započítá do failing.
  • Po skončení příkazu jeho procesy na pozadí pokračují. Překročení času, odstranění úlohy nebo zastavení balíčku pošle celé skupině procesů SIGTERM a po 5 sekundách SIGKILL.
  • Edit mění úlohu. Delete zastaví probíhající běh a odstraní úlohu, její běhy i logy. Tlačítka vidí jen vlastník a admin; ostatní mají Close.

04Vestavěné úlohy

Úlohy označené built in jsou vlastní úlohy bvsd; jejich vlastníkem je system.

Úloha, časCo dělá
Backup
výchozí plán @daily
záloha nastavená na stránce Zálohy, jakmile je na ní zapnuto Scheduled backups; tato stránka spravuje plán i přepínač
Maintenance
denně v 03:30
odstraní z tmp/ v datové složce položky nezměněné 10 dní a rotuje log/audit.log nad 10 MB
Empty the trash
denně v 03:45
odstraní položky přesunuté do trash/ v datové složce před více než 7 dny: smazané repozitáře, buckety a domovské složky účtů
Toolchain catalog refresh
denně v 04:15
stáhne podepsaný katalog toolchainů a použije ho, pokud má platný podpis a je novější
Rotate nginx's logs
každou hodinu v minutě 7
přejmenuje nginx-access.log nebo nginx-error.log na .1 po překročení 20 MB, ponechá pět starých souborů a vyzve nginx, aby logy znovu otevřel

Admin může změnit plán, časový limit, chování při probíhajícím běhu a oznámení při chybě vestavěné úlohy a vypnout ji. Název, příkaz, prostředí a pracovní složka jsou pevné; Delete není dostupné.

Vestavěná úloha Empty the trash: odstraňované položky, Timeout 1 h 0 min, vlastník system, denní běhy v 03:45 všechny úspěšné, log trash: 0 removed, 226 kept, jen Edit a Run now

05Oznámení

bvsd zapisuje každé oznámení do systémových logů QTS. Notifications na stránce System je posílá také chatovým a poštovním službám přes URL shoutrrr: Telegram, Discord, Slack, e-mail, webhook a další.

  1. Pod Addresses (shoutrrr URLs) stiskněte Add an address a vložte jednu URL pro každou službu, například telegram://<token>@telegram?chats=<chat id> nebo generic+https://example.com/hook.
  2. Pod Also sent to the addresses zrušte zaškrtnutí toho, co má zůstat jen v systémových lozích. V nové instalaci jsou zaškrtnuty všechny čtyři možnosti.
  3. Stiskněte Save.
Notifications: pod Also sent to the addresses jsou zaškrtnuté A job fails, A backup ends, A module restarts in a loop a The certificate; ukázková adresa telegram://<token>@telegram?chats=<chat id>, s Add an address a Save
PřepínačOznámení přijde, když
A job failsběh cron s oznámením při chybě selže nebo překročí čas, případně selže operace: sestavení, přesun dat nebo instalace
A backup endsskončí záloha, ověření nebo obnova, i úspěšně, nebo se plánovaná záloha nemohla spustit
A module restarts in a loopproces opakovaně končí a restartuje se
The certificatenahranému certifikátu zbývá nejvýše 30 dní, nginx se vrátí k certifikátu podepsanému vlastním klíčem nebo bvsd vytvoří nový takový certifikát
žádný, odesílá se vždynastavení bylo při startu odmítnuto, našel se nedokončený přesun dat, zbylé procesy byly ukončeny nebo se nepodařilo zapsat konfiguraci
  • Oznámení na stejné téma se posílá nejvýše jednou za 10 minut, i do systémových logů. Následující uvádí počet zadržených oznámení.
  • Každá adresa má samostatné odeslání s limitem 10 sekund. Chyba se zaznamená jen se schématem URL, protože zbytek obsahuje token.
  • Jen admin mění adresy a přepínače. Ostatní účty vidí přepínače a schéma každé URL.

Admin NASu může adresy nastavit také přes CLI socket balíčku. Odeslaný seznam nahradí předchozí adresy a přepínače si ponechají hodnoty:

/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 a co čtou ostatní účty

  • Příkaz úlohy běží jako root, na NASu nebo v prostředí, bez ohledu na autora. Vývojář může vytvářet úlohy, a tedy spustit jakýkoli příkaz na NASu jako root. Tuto roli dávejte jen lidem, kterým byste svěřili roota na NASu.
  • Úloha běží jen tehdy, je-li vlastník povolený vývojář nebo admin (od verze 1.0.0-52). Je-li zakázaný nebo má roli member či viewer, každý termín se zaznamená jako přeskočený běh s důvodem, například its owner ola is disabled, a Run now vrátí stejný důvod; probíhající běh se zastaví. Úloha pokračuje po povolení účtu nebo obnovení role vývojáře. Odstranění účtu odstraní jeho úlohy, běhy a logy. Vestavěné úlohy běží bez ohledu na stav účtu.
  • Každý přihlášený účet, i pozorovatel, čte příkazy všech úloh a jejich výstupy. Hesla a tokeny nedávejte do příkazu: uložte je do souboru pod etc/ v datové složce, který může číst jen root (chmod 600), a nechte příkaz číst tento soubor.