Unofficial
Na tej stronie
  1. 01Strona Jobs
  2. 02Zadanie od podstaw
  3. 03Uruchom teraz, wykonania i logi
  4. 04Wbudowane zadania
  5. 05Powiadomienia
  6. 06Root i dane odczytywane przez inne konta

Zadania cykliczne na NAS-ie: cron z logiem i powiadomieniami o błędach

Strona Jobs w Bucket & Code Server IDE uruchamia polecenia według harmonogramu cron i zachowuje log każdego wykonania. Zadanie może powiadamiać o błędzie w logach systemowych QTS oraz przez Telegram, Discord, Slack lub e-mail po dodaniu adresów tych usług.

  1. Harmonogrampola cron i następne wykonania
  2. Poleceniebash, uruchamiany jako root
  3. Uruchom terazwykonanie i jego log
  4. Wbudowanewłasne zadania pakietu
  5. Powiadomienialogi systemowe i czat

Ilustracje pochodzą z testowego NAS-a i pokazują etykiety wersji 1.0.0-49. Adres na ilustracji Notifications jest przykładowy.

01Strona Jobs

Strona ma dwie zakładki. Scheduled pokazuje zadania cron: wbudowane zadania pakietu i zadania utworzone przez konta. Operations pokazuje ostatnie 50 długich operacji bvsd, takich jak instalacje i przenoszenie danych, od najnowszej.

Wiersz Scheduled pokazuje zadanie i właściciela, harmonogram słownie i jako zapis, następne wykonanie oraz przełącznik włączania. Otwórz wiersz, aby zobaczyć polecenie, wykonania i logi. Znacznik u góry podaje strefę czasową NAS-a; wszystkie godziny na stronie są w tej strefie.

Zadania cykliczne: wbudowane Backup (wyłączone), Empty the trash, Maintenance, Rotate nginx's logs i Toolchain catalog refresh, należące do system; Disk report, należące do ola, o 06:00 od poniedziałku do piątku
  • Deweloper tworzy zadania i zmienia lub usuwa własne. Administrator zmienia każde zadanie.
  • Każde zalogowane konto, także obserwator, odczytuje listę, polecenia i logi.

02Zadanie od podstaw

  1. Naciśnij New job i wpisz nazwę w Name.
  2. Wpisz Schedule: pięć pól (minuta godzina dzień miesiąc dzień tygodnia), sześć z sekundami na początku albo @daily, @hourly, @every 90m. Przykłady pod polem wypełniają je. Ramka poniżej opisuje harmonogram i pokazuje następne pięć wykonań w strefie NAS-a. Prefiks taki jak CRON_TZ=Europe/London 0 3 * * * uruchamia zadanie w innej strefie.
  3. Wpisz Command (bash) tak jak w terminalu. Wiele wierszy działa jako jeden skrypt, a ich wyjście trafia do logu wykonania.
  4. Runs: On the NAS albo w jednym ze środowisk, gdzie polecenie widzi narzędzia i biblioteki tego systemu. Working folder jest ścieżką względem projects/ w katalogu danych lub pełną ścieżką; puste pole oznacza projects/. W środowisku widać tylko projects/, jako /projects.
  5. Timeout in seconds: wykonanie trwające dłużej jest zatrzymywane i oznaczane jako przekroczenie limitu. Nowe zadanie ma 3600; 0 oznacza brak limitu. When the previous run is still going: Skip this run albo Run it after the previous one; wtedy czeka najwyżej jedno wykonanie.
  6. Notify on failure i On są zaznaczone dla nowego zadania. Wyłączone zadanie zachowuje ustawienia i działa tylko ręcznie. Naciśnij Create the job.
Nowe zadanie: Name Disk report, Schedule 0 6 * * 1-5 z godziną 06:00 od poniedziałku do piątku i pięcioma kolejnymi wykonaniami, Command df -h /share/CACHEDEV1_DATA i date, Runs On the NAS, Working folder projects/, Timeout 60, Skip this run, zaznaczone Notify on failure i On oraz Create the job

W noce zmiany czasu zadania stosują regułę Debian cron. Zadanie z * lub */N na początku pola minut lub godzin, @hourly albo @every podąża za upływem czasu: jesienią działa przy obu przejściach powtarzanej godziny, a wiosną pominięta godzina nie występuje. Pozostałe zadania wykonują każdy termin raz. Termin w powtarzanej godzinie jest wykonywany raz, a w pominiętej tuż po zmianie czasu.

03Uruchom teraz, wykonania i logi

Run now w oknie zadania rozpoczyna dodatkowe wykonanie od razu, chyba że to zadanie już działa. Okno pokazuje początek, czas trwania, wynik i kod wyjścia każdego wykonania. Wybierz wykonanie, aby przeczytać log pod listą.

Zadanie Disk report: polecenie, wykonanie na NAS-ie, Timeout 1 min, następne wykonanie pomijane, powiadomienie o błędzie, właściciel ola; jedno udane wykonanie z kodem wyjścia 0 i log z wynikiem df oraz datą
  • Pierwszy i ostatni wiersz logu pochodzą z bvsd. Pierwszy podaje wykonanie, zadanie, czas i inicjatora: konto albo harmonogram. Jego czas jest w UTC, a lista wykonań pokazuje czas NAS-a. Ostatni podaje wynik i czas trwania.
  • Zadanie zachowuje ostatnie 100 wykonań, każde z ostatnimi 4 KB wyjścia. Pełny log wykonania jest przechowywany przez 30 dni.
  • Błąd lub przekroczenie czasu dodaje czerwone last run failed obok zadania na liście, a kafelek Jobs na Overview zlicza je pod failing.
  • Po zakończeniu polecenia uruchomione przez nie procesy w tle działają dalej. Przekroczenie czasu, usunięcie zadania lub zatrzymanie pakietu wysyła całej grupie procesów SIGTERM, a po 5 sekundach SIGKILL.
  • Edit zmienia zadanie. Delete zatrzymuje trwające wykonanie i usuwa zadanie, jego wykonania oraz logi. Te przyciski widzą tylko właściciel i administrator; inni mają Close.

04Wbudowane zadania

Zadania oznaczone built in należą do bvsd; ich właścicielem jest system.

Zadanie, terminCo robi
Kopia zapasowa
domyślnie @daily
kopia zapasowa skonfigurowana na stronie Kopie zapasowe, gdy włączono tam Scheduled backups; ta strona przechowuje harmonogram i przełącznik
Konserwacja
codziennie o 03:30
usuwa z tmp/ w katalogu danych elementy niezmieniane od 10 dni i rotuje log/audit.log po przekroczeniu 10 MB
Opróżnianie kosza
codziennie o 03:45
usuwa elementy przeniesione do trash/ w katalogu danych ponad 7 dni temu: usunięte repozytoria, buckety i katalogi domowe kont
Odświeżanie katalogu toolchainów
codziennie o 04:15
pobiera podpisany katalog toolchainów i używa go, jeśli podpis jest poprawny, a katalog nowszy
Rotacja logów nginx
co godzinę, w minucie 7
zmienia nazwę nginx-access.log lub nginx-error.log na .1 po przekroczeniu 20 MB, zachowuje pięć starych plików i poleca nginx ponownie otworzyć logi

Administrator może zmienić harmonogram, limit czasu, zachowanie podczas trwającego wykonania i powiadomienie o błędzie wbudowanego zadania oraz je wyłączyć. Nazwa, polecenie, środowisko i katalog roboczy są stałe; nie ma Delete.

Wbudowane zadanie Empty the trash: usuwane elementy, Timeout 1 h 0 min, właściciel system, codzienne wykonania o 03:45, wszystkie udane, log trash: 0 removed, 226 kept; tylko Edit i Run now

05Powiadomienia

bvsd zapisuje każde powiadomienie w logach systemowych QTS. Notifications na stronie System wysyła je także do usług czatu i poczty przez adresy URL shoutrrr: Telegram, Discord, Slack, e-mail, webhook i inne.

  1. Pod Addresses (shoutrrr URLs) naciśnij Add an address i wklej jeden URL na usługę, na przykład telegram://<token>@telegram?chats=<chat id> lub generic+https://example.com/hook.
  2. Pod Also sent to the addresses odznacz to, co ma pozostać wyłącznie w logach systemowych. W nowej instalacji zaznaczone są wszystkie cztery opcje.
  3. Naciśnij Save.
Notifications: pod Also sent to the addresses zaznaczono A job fails, A backup ends, A module restarts in a loop i The certificate; przykładowy adres telegram://<token>@telegram?chats=<chat id> oraz Add an address i Save
PrzełącznikPowiadomienie przychodzi, gdy
Zadanie kończy się błędemwykonanie cron z powiadomieniem o błędzie nie powiedzie się lub przekroczy czas albo nie powiedzie się operacja: budowanie, przenoszenie danych lub instalacja
Kończy się kopia zapasowazakończy się tworzenie kopii, weryfikacja lub odtwarzanie, także pomyślne, albo zaplanowana kopia nie może się rozpocząć
Moduł restartuje się w pętliproces stale kończy działanie i uruchamia się ponownie
Certyfikatprzesłany certyfikat ma najwyżej 30 dni ważności, nginx wrócił do certyfikatu samopodpisanego albo bvsd utworzył nowy samopodpisany certyfikat
brak, wysyłane zawszeustawienia odrzucono przy starcie, znaleziono niedokończone przenoszenie danych, zakończono pozostałe procesy albo nie udało się zapisać konfiguracji
  • Powiadomienie na ten sam temat jest wysyłane najwyżej raz na 10 minut, także do logów systemowych. Następne podaje liczbę wstrzymanych powiadomień.
  • Każdy adres otrzymuje osobną wysyłkę z limitem 10 sekund. Błąd jest zapisywany tylko ze schematem URL-a, ponieważ reszta adresu zawiera token.
  • Tylko administrator zmienia adresy i przełączniki. Inne konta widzą przełączniki i schemat każdego URL-a.

Administrator NAS-a może także ustawić adresy przez gniazdo CLI pakietu. Wysłana lista zastępuje poprzednie adresy, a przełączniki zachowują wartości:

/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 i dane odczytywane przez inne konta

  • Polecenie zadania działa jako root, na NAS-ie lub w środowisku, niezależnie od autora. Deweloper może tworzyć zadania, więc może wykonać dowolne polecenie na NAS-ie jako root. Przydzielaj tę rolę tylko osobom, którym dałbyś roota na NAS-ie.
  • Zadanie działa tylko wtedy, gdy właściciel jest włączonym deweloperem lub administratorem (od wersji 1.0.0-52). Gdy jest wyłączony lub ma rolę członka albo obserwatora, każdy termin zostaje zapisany jako pominięte wykonanie z przyczyną, na przykład its owner ola is disabled, a Run now podaje ten sam powód; trwające wykonanie jest zatrzymywane. Zadanie wraca po włączeniu konta lub przywróceniu roli dewelopera. Usunięcie konta usuwa jego zadania, wykonania i logi. Wbudowane zadania działają niezależnie od stanu konta.
  • Każde zalogowane konto, także obserwator, odczytuje polecenia wszystkich zadań i ich wyjście. Nie umieszczaj haseł ani tokenów w poleceniu: zapisz je w pliku pod etc/ w katalogu danych, dostępnym do odczytu tylko dla roota (chmod 600), i niech polecenie czyta ten plik.