Notification über Webhook / Telegram

schloegel-edv

Well-Known Member
Mar 23, 2020
81
5
48
44
Hallo,

seit einiger Zeit gibt es die Möglichkeit, eine Benachrichtigung über Webhook zu senden. Im Internet kursieren einige Beschreibungen, wie man das über Telegram einrichten kann. So habe ich das auch entsprechend vorbereitet und getestet. Der Test funktioniert.

Jedoch kommt es zu einem wirklich kuriosem Effekt.

Wenn ein Backup (auf PBS) mehrerer VMs läuft, kommt es zu unten genannten Fehler, Läuft ein Backup von nur einer Maschine, wird eine ordentliche Meldung ohne diesen Fehler abgesetzt.

Ich habe schon alle Möglichkeiten druchprobiert. Job gelöscht, wieder neu angelegt usw. Effekt, wie oben. Hier die Meldung:

Code:
INFO: Backup job finished successfully
ERROR: could not notify via target `Telegram`: http status: 400

Hat jemand Ideen? Danke für Tipps!
 
HTTP 400 wäre n Bad Request... geht der Outbound Internettraffic direkt oder über einen Proxy? Ist der Webhhook n GET oder POST?

Man könnte mit nem TCP-Dump evtl mitschneiden was da genau passiert...

Ich gab das noch gefunden... vlt die URL-Encodes vergleichen.
https://www.reddit.com/r/Proxmox/comments/1i1330y/quick_guide_to_add_telegram_notifications_using/

Noch zum Schluss als doofe Idee: Gibts Umlaute oder Sonderzeichen zB im Backup Job Titel die dann in die URL des Webhooks kommen?
 
  • Like
Reactions: Johannes S
Hallo,

danke für den Tipp. Ich habe gleich nochmal wegen Umlauten geschaut. Nein, es ist bei keinem Backupjob ein Titel angegeben.

Es ist schon merkwürdig, wenn nur eine VM gebackupt wird, klappt es, wenn es mehrere sind, klappt es nicht.

Den Artikel bei reddit kannt ich bereits, das habe ich alles ausprobiert. Wie gesagt, der Test funktioniert ja auch.
 
Das klingt stark nach dem Telegram Message-Limit. Die API gibt 400 zurück wenn die Nachricht über 4096 Zeichen lang ist. Bei einer einzelnen VM passt das noch, bei mehreren wird der Body mit den ganzen Backup-Details schnell zu lang.
Schau mal in deine Webhook-Config, was du als Body-Template hast. Wenn da sowas wie {{ message }} drinsteht, wird bei nem Multi-VM-Job der komplette Output reingepackt und das sprengt das Limit.
Was du probieren kannst: Den Body auf {{ title }} und {{ severity }} beschränken, oder halt nur ne Kurzinfo statt dem vollen Text. Alternativ kannst du mit pvesh get /cluster/notifications/targets mal schauen wie dein Webhook genau konfiguriert ist und den Body-Template hier posten, dann kann man gezielter schauen.
 
  • Like
Reactions: fba and Johannes S
Hi @Bu66as ,

genau das wird es sein. Da ich das komplette Protokoll sende, gibt es am Ende diese Beschränkung. Ich überlege erst einmal, wie ich das eventuell anders gestalte. Danke vielemals für den Tipp!