Header X-Agent-Token: <agent_token>, das Token pro Server des überwachten Servers, zu dem der Job gehört
Content-Type
application/json
Body
Höchstens 4 KiB
Das Token entscheidet, zu welchem Server ein Job gehört. Ein Job, der
woanders läuft, nutzt das Token des Servers, auf den er sich bezieht. Auf
einem Server mit Agent ist das Token CV_AGENT_TOKEN in
/etc/cloudviewer-agent/agent.env.
Der Name des Jobs auf seinem Server. Der erste Report mit einem neuen Namen legt den Job an
reports[].exit_code
Integer, 32 Bit
ja
0 ist ein Erfolg, alles andere ein Fehlschlag
reports[].duration_seconds
Zahl, 0 oder mehr
nein
Wie lange der Durchlauf gedauert hat
reports[].max_age_seconds
Zahl, größer als 0
nein
Wie alt der letzte erfolgreiche Durchlauf werden darf, bevor der Job veraltet ist. Weglassen, wenn du nur Alarme bei Fehlschlägen willst
job_name: Kleinbuchstaben, Ziffern, -, _ und ., 1 bis 64 Zeichen,
beginnend mit einem Buchstaben oder einer Ziffer.
Unbekannte Felder werden abgewiesen. Es gibt kein Nachrichtenfeld und kein
Zeitfeld: Die Zeit des Durchlaufs ist der Moment, in dem Vaicoa den
Report empfängt.
Ein Request gilt ganz oder gar nicht: Ist ein Report ungültig, wird keiner
gespeichert.
Jeder Report ersetzt den letzten Stand des Jobs, auch max_age_seconds.
Ein Report ohne dieses Feld entfernt die Zeitgrenze des Jobs.
Nur ein Report mit Exit-Code 0 setzt die Zeit des letzten Erfolgs neu.
Vaicoa speichert den letzten Stand jedes Jobs, keine Historie der
Durchläufe: letzte Ausführung, letzter Erfolg, letzter Exit-Code, letzte
Dauer und die Zeitgrenze.
16. Reports für bestehende Jobs werden immer angenommen
Requests pro Token
2 pro Minute, Bursts bis 16
Viele Cronjobs, die zur vollen Stunde starten, passen in den Burst, und ein
Request kann bis zu 16 Jobs enthalten. Ein Job besteht so lange wie sein
Server; einen einzelnen Job zu entfernen ist noch nicht möglich.
Sekunden oder eine Zahl mit m, h oder d: 26h sind 93600. Wird als max_age_seconds gesendet. Weglassen, wenn du nur Alarme bei Fehlschlägen willst
--token-file <path>
Liest das Token aus dieser Datei, die nur das Token enthält. Für einen Server ohne Agent oder einen Nutzer, der agent.env nicht lesen kann
--
Beendet die Flags. Alles danach ist der Befehl
Der Wrapper ist Teil des Agent-Pakets, unter /usr/bin/cloudviewer-report.
Er führt zuerst den Befehl aus, sendet dann dessen Exit-Code und die Dauer
in ganzen Sekunden und beendet sich mit dem Exit-Code des Befehls.
Token: --token-file, sonst CV_AGENT_TOKEN aus der Umgebung, sonst
/etc/cloudviewer-agent/agent.env. Normale Nutzer können diese Datei nicht
lesen, ein Job, der nicht als root läuft, braucht also --token-file.
API-URL: CV_AGENT_FACADE_URL, sonst https://api.vaicoa.com. Kommt
das Token aus agent.env, gilt die URL aus dieser Datei.
Ohne Token gibt er „job ran, not reported“ aus und beendet sich mit dem
Exit-Code des Befehls.
Bei 429 oder 503 versucht er es einmal erneut, nach Retry-After
(höchstens 60 Sekunden, 5, wenn der Header fehlt). Bei jedem anderen
Fehler gibt er den HTTP-Status aus; der Exit-Code bleibt der des Befehls.
Jeder Request bricht nach 15 Sekunden ab.
Ein fehlendes --job, ein fehlender Befehl oder ein ungültiges
--max-age ist ein Bedienfehler: Exit-Code 2, und der Befehl läuft nicht.
Der letzte Exit-Code ist 0 und der Job ist nicht veraltet
Fehlgeschlagen
Der letzte Exit-Code ist nicht 0
Veraltet
Der Job hat ein max_age_seconds, und sein letzter erfolgreicher Durchlauf ist älter. „Veraltet“ hat Vorrang vor einem letzten Exit-Code 0
Ein Job, der nie erfolgreich war, wird nie veraltet, weil es keinen Erfolg
gibt, von dem aus gemessen wird. Er erscheint als Fehlgeschlagen, und
seine Zeile zeigt Nie erfolgreich.
der letzte erfolgreiche Durchlauf 5 Minuten lang älter ist als das max_age_seconds des Jobs
Vaicoa prüft jeden Job einmal pro Minute.
Ein Job ohne max_age_seconds bekommt nur UserJobFailed.
Ein fehlgeschlagener Durchlauf, auf den innerhalb von 5 Minuten ein
erfolgreicher folgt, löst keinen Alarm aus. Der nächste erfolgreiche
Durchlauf beendet beide Alarme.