2017-02-28 3 views
1

Wir haben eine Benachrichtigung, die Daten an eine Anwendung mit dem Endpunkt der Anwendung zu buchen.Bosun: Speichern Sie Informationen mit Post-URL und erhalten Sie die gleichen Informationen und verwenden Sie sie in der Vorlage

notification ABC{ 
    post = savedetailsurl 
    body = {{.|json}} 
    useBody = true 
} 

So speichert der Endpunkt alle Details in mysql DB.

Jetzt in unserer Vorlage rufen wir einen anderen Endpunkt, um die Details zu erhalten, die wir mit dem Webhook in der Benachrichtigung gespeichert haben.

template ABC { 
    use the " getDetailsUrl" and use the details in forming the email 
} 

Jetzt ist das Problem Racebedingung. Manchmal sind die Details noch nicht im Backend (mysql) gespeichert und getDetailsUrl wird aufgerufen. So erhalten wir das leere Ergebnis.

Gibt es eine Möglichkeit, die Race Condition zu lösen.

Antwort

0

Das Benachrichtigungssystem von Bosun ist sehr einfach aufgebaut. Wenn Sie etwas fortgeschritteneres möchten, müssen Sie ein separates System verwenden, um die Benachrichtigungsdetails zu generieren und/oder den Alert-Workflow zu bearbeiten. Einige Leute haben pagerduty oder andere Überwachungssysteme wie Shinken verwendet, um erweiterte Benachrichtigungen oder Alarmmanagement durchzuführen.

Ihre beste Wette ist, die eingebauten Benachrichtigungen zu überspringen und alles in einem externen System zu tun. Sie können immer noch die http://bosun.org/api verwenden, um die verschiedenen Warnstatus zu integrieren (crit/warn/ack/close/etc) oder Sie können Ihre Warnungen ändern, um alle integrierten Zustände zu umgehen und Ihren eigenen Workflow zu erstellen.

Verwandte Themen