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.
- Plánpole cron a příští spuštění
- Příkazbash, spouštěný jako root
- Spustit nyníběh a jeho log
- Vestavěnévlastní úlohy balíčku
- 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.
- 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
- Stiskněte New job a zadejte název do Name.
- 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 jakoCRON_TZ=Europe/London 0 3 * * *použije jiné časové pásmo. - Napište Command (bash) jako do terminálu. Více řádků běží jako jeden skript a jejich výstup tvoří log běhu.
- 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é jenprojects/, jako/projects. - 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.
- 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.
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.
- 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, čas | Co 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é.
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ší.
- 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>nebogeneric+https://example.com/hook. - 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.
- Stiskněte Save.
| Přepínač | Oznámení přijde, když |
|---|---|
| A job fails | bě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 ends | skončí záloha, ověření nebo obnova, i úspěšně, nebo se plánovaná záloha nemohla spustit |
| A module restarts in a loop | proces opakovaně končí a restartuje se |
| The certificate | nahrané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ždy | nastavení 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.