
Teilen Sie:
Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.
Integrieren Sie Vonage mit Grafana, um Benachrichtigungen per SMS zu erhalten
Lesedauer: 14 Minuten
Einführung
Grafana ist eine offene, plattformübergreifende Beobachtungsplattform, die Entwickler nutzen können, um Metriken von Applikationen oder Systemen in der Cloud zu verfolgen. Es generiert Analysen und Visualisierungen aus den Metriken mit Diagrammen, Grafiken und Warnungen. In diesem Artikel wird gezeigt, wie Vonage in ein Grafana-Setup integriert werden kann, um über die Vonage Messages API Benachrichtigungen per SMS zu erhalten.
Die Unterrichtssprache wird Python sein. Das in diesem Artikel vermittelte Wissen ist hilfreich für DevOps-Teams, SREs und Systemadministratoren, die sich auf Grafana verlassen, um über Aktivitäten und ungewöhnliche Vorfälle in ihrem System informiert zu werden.
Inhaltsübersicht
Schritt 2: Erstellen einer Python-Anwendung für die Implementierung der Logik
Schritt 3: Konfigurieren des Vonage Accounts für Messages API SMS-Benachrichtigung
Schritt 1: Einrichten des Grafana-Stacks
Mit Grafana können Sie Ihre eigene Grafana-Instanz auf Ihrem lokalen Rechner oder Server einrichten. Alternativ können Sie Grafana auch in der Cloud nutzen, wenn Sie sich anmelden für einen neuen Account. Daher müssen Sie Ihre Grafana-Instanz nicht installieren oder warten, da sie cloudbasiert ist und verwaltet wird.
Ein Dashboard erstellen
In diesem Tutorial werden Sie ein einfaches Dashboard mit der integrierten Datenquelle Grafana -- erstellen. Für einen neuen Grafana-Benutzer bietet Grafana einen Workflow, der Sie bei der Erstellung eines neuen Dashboards anleitet. Sie können die Schritte in der Eingabeaufforderung oder die in diesem Artikelabschnitt hervorgehobenen Schritte befolgen. Sie können diesen Abschnitt überspringen, wenn Sie bereits mit Grafana vertraut sind.
Klicken Sie im Menü auf der linken Seite auf Dashboards, um zur Seite Dashboards zu gelangen.
Klicken Sie auf die Neue um ein Dropdown-Menü mit Optionen zu erhalten, und wählen Sie Neues Dashboard
Klicken Sie auf der Seite Neues Dashboard auf + Visualisierung hinzufügen, um ein Modell zur Auswahl einer Datenquelle zu öffnen.
Wählen Sie ein Datenquellenmodal und wählen Sie die Option -- Grafana -- auf der rechten Seite.
select-data-source.png
Wenn Sie die Option -- Grafana -- Option, die die standardmäßig eingebaute Grafana-Datenquelle ist, geschehen zwei Dinge:
- Grafana configures your query
- Grafana generates the Random Walk dashboard.Sie können nun auf das Symbol "Dashboard aktualisieren" in der folgenden Abbildung klicken, um die Datenquelle abzufragen.
create-contact-point.png
Klicken Sie dann auf Speichern in der oberen rechten Ecke. Sie werden aufgefordert, einen Namen für das Dashboard anzugeben, bevor es gespeichert wird.
Sie sollten nun ein grundlegendes Dashboard in Ihrem Grafana Account eingerichtet haben. Sie können Grafana weiter erkunden, indem Sie Datenquellen hinzufügen, um Dashboards für Ihre anderen Projekte zu erstellen.
Schritt 2: Erstellen einer Python-Anwendung für die Implementierung der Logik
Sie müssen Folgendes installieren Flask installieren, um das Python-Skript zu betreiben, das Sie in diesem Lernprogramm verwenden werden. Sie können den folgenden Befehl in Ihrem Terminal ausführen, um Flask zu installieren.
Schreiben Sie die erste Python-Funktion
Jetzt werden Sie einen Flask-Webhook für den Empfang von Grafana-Benachrichtigungen einrichten.
Erstellen Sie eine Datei notify.py und fügen Sie den folgenden Python-Code hinzu.
from flask import Flask, request
app = Flask(__name__)
@app.route("/grafana-webhook", methods=["POST"])
def grafana_webhook():
if request.method == "POST":
data = request.json
alert_description = data["alerts"][0]["annotations"]["desc"]
print(alert_description)
return "Webhook received!"
if __name__ == "__main__":
app.run(host="", port=3000, debug=True)In dem obigen Code, Sie:
erstellt eine
POSTRoute,/grafana-webhookDie Route dekoriert die grafana_webhook-Funktion, einen POST-Endpunkt für den Empfang von POST-Anfragen.
extrahiert die
alert_descriptionaus der Nutzlast der AnfrageEines der extrahierten Attribute, alert_summary, wird zur Laufzeit mit der Funktion print() auf der Konsole ausgegeben.
Sie haben den Port 3000 für die Anwendung festgelegt, auf dem diese laufen soll. Damit können Sie den Anwendungsport dem Port zuordnen, an dem Ngrok ausgeführt werden soll. Auf diese Weise wird die Anwendung über den Ngrok-Server bedient.
Um die Anwendung lokal auszuführen, verwenden Sie den folgenden Bash-Befehl in Ihrem Terminal:
Sie sollten eine Terminalausgabe wie die folgende erhalten, die auf einen aktiven Entwicklungsserver hinweist:
Ngrok-Server einrichten
Dann können Sie Ngrok installieren, einen leichtgewichtigen Online-Server zum Testen der Python-Anwendung. Er ermöglicht es Ihnen, Ihr Python-Skript über das öffentliche Internet bereitzustellen. Folgen Sie den Installationsanweisungen auf der offiziellen Website um ihn zu installieren.
Sie können Ngrok mit folgendem Terminal-Befehl starten, und es wird einen leichtgewichtigen Server für Sie aufsetzen:
Wenn Sie den obigen Befehl ausführen, wird ein leichtgewichtiger Server für Sie gestartet, und Sie werden seine öffentliche URL in Ihrem Terminal wie folgt sehen:
Dies bedeutet, dass Ihr Webhook-Endpunkt auf der Grundlage Ihres Python-Skripts wie folgt lautet:
Dies ist Ihre dedizierte URL für Grafana, um Webhook-Benachrichtigungen an Ihre Python-Anwendung zu senden.
Grafana mit der Python-Anwendung verbinden
Um Grafana mit Ihrer Python-Anwendung zu verbinden, müssen Sie die Webhook-URL angeben, über die Grafana seine Alerts an Ihre Anwendung senden kann. Da Sie eine Webhook-URL für diesen Zweck haben, fügen Sie diese zu den Alerts-Kontaktpunkten in Ihrem Grafana-Dashboard hinzu. Folgen Sie den nächsten Schritten, um Ihre Grafana Alerts mit Ihrem Anwendungs-Webhook zu konfigurieren.
Gehen Sie im Grafana-Hauptmenü auf Warnungen & IRM > Alarmierungwie im folgenden Screenshot gezeigt.
alerting-menu.png
Klicken Sie auf Kontaktstellen auf der Seite Alerting, um zur Seite Kontaktstellen Seite zu gelangen, wie in der folgenden Abbildung gezeigt. Klicken Sie auf die Schaltfläche + Kontaktstelle hinzufügen Schaltfläche. Dies führt Sie zur Seite Kontaktstelle erstellen Seite im folgenden Screenshot.
contact-points.png
Geben Sie Ihren gewünschten Nameund wählen Sie Webhook in der Integration Liste. Geben Sie Ihre spezielle Webhook-URL in das Feld URL Feld ein, wie im folgenden Screenshot gezeigt.
contact-point-setup.png
Sie können auf die Schaltfläche Testen klicken, um den Aufforderungen zum Testen der Kontaktstelle zu folgen. Versuchen Sie beim Testen die benutzerdefinierte Benachrichtigungsoption zu verwenden, nicht die vordefinierte Option. Auf diese Weise kann Ihr Endpunktcode die Zusammenfassung und Beschreibung der Benachrichtigung korrekt auswerten, so dass Sie sie in Ihrem Terminal sehen können. Der Test sendet eine Dummy-Benachrichtigung an Ihre Webhook-URL. Wenn die Benachrichtigung erfolgreich gesendet wurde, erhalten Sie eine Erfolgsmeldung, "Testmeldung gesendet"in der oberen rechten Ecke der Seite, wie in der folgenden Abbildung gezeigt.
test-alert-sent.png
Klicken Sie auf die Kontaktstelle speichern um den Kontaktpunkt zu speichern.
Schritt 3: Konfigurieren des Vonage Accounts für Messages API SMS-Benachrichtigung
Vonage-Anwendungs-URLs definieren
Sie können den Status und die eingehenden Endpunkte an die von Ngrok generierte URL anhängen. Sie sehen dann wie folgt aus:
Status URL: https://d5fs-104-25-63-145.eu.ngrok.io/webhooks/message-status
Eingehende URL: https://d5fs-104-25-63-145.eu.ngrok.io/webhooks/inbound-message
Notieren Sie sich die obigen URLs, da Sie sie benötigen, wenn Sie Ihren Vonage Account für die Messages API im folgenden Abschnitt konfigurieren.
Konfigurieren einer Vonage-Anwendung
Sie müssen sich anmelden einen Vonage Account einrichten, wenn Sie noch keinen haben.
Sie benötigen einen Account bei Vonage, der mit der Messages API konfiguriert ist, um SMS-Nachrichten an Ihre Benutzer über Vonage zu senden. In diesem Fall könnte Ihr Benutzer ein Teamkollege sein, den Sie über Ihre Grafana-Updates informieren möchten.
Führen Sie die folgenden Schritte aus, um Ihren Vonage Account für die Messages API zu konfigurieren:
Navigieren Sie im Hauptmenü Ihres Vonage Dashboards zum Menü API-Einstellungen, um zu den API-Einstellungen Seite zu gelangen. Die API-Einstellungen
Wählen Sie im Abschnitt SMS-Einstellungen die Option Messages API. Belassen Sie die anderen Einstellungen auf ihren Standardwerten.
Besuchen Sie die Applications Seite und klicken Sie auf die Schaltfläche + Anwendung erstellen um eine Anwendung zu erstellen.
Geben Sie einen Namen in das Feld Name Feld ein. Klicken Sie auf die Schaltfläche Öffentlichen und privaten Schlüssel generieren Schaltfläche. Eine private Schlüsseldatei
private.keywird auf Ihren lokalen Rechner heruntergeladen.Wählen Sie Nachrichten in der Rubrik Fähigkeiten Abschnitt.
Geben Sie die Eingangs- und Status-URL ein, die Sie bei der Einrichtung von Ngrok notiert haben.
Klicken Sie auf die Schaltfläche Neue Anwendung generieren um die Erstellung abzuschließen. Anschließend werden Sie zur Antragsübersichtsseite weitergeleitet, wo Sie auch Ihre Vonage-Nummer mit dem Antrag verknüpfen können.
Hinweis: Siehe auch Verwalten von Numbers mit der Vonage CLI für eine kurze Anleitung zum Kauf einer Vonage Numbers.
Sie müssen die ANWENDUNGS-ID auf der Übersichtsseite der Anwendung notieren, da Sie diese bei der nächsten Sitzung benötigen. Sie müssen auch den lokalen Pfad notieren, in dem sich die private.key Datei gespeichert ist. Sie sollten wie folgt aussehen:
Anwendung ID: 53a2ed68-f2d8-498c-9b17-032669e3bf90
Private Key Path: /Users/Downloads/private.key
SMS an Benutzer senden
In diesem Unterabschnitt werden Sie die Grafana Webhook-Benachrichtigung per SMS an Ihren Benutzer senden. Sie können das Vonage Python SDK für diese Funktion in einer Python-Anwendung verwenden. Verwenden Sie den folgenden Bash-Befehl, um das Vonage Python SDK auf Ihrem lokalen Rechner zu installieren.
Fügen Sie dann den folgenden Code in Ihr Python-Skript ein:
...
import vonage
def grafana_webhook():
if request.method == "POST":
...
client = vonage.Client(
application_id=YOUR_VONAGE_APPLICATION_ID,
private_key=YOUR_APPLICATION_PRIVATE_KEY_PATH,
)
notification = client.messages.send_message(
{
"channel": "sms",
"message_type": "text",
"from": YOUR_VONAGE_NUMBER,
"to": DESTINATION_PHONE_NUMBER,
"text": alert_description,
}
)
return "Webhook successfully delivered as a notification message."Im obigen Code:
Sie initialisierten den Python SDK-Client mit der Zeile
client = vonage.Client(). Ersetzen Sie dieYOUR_VONAGE_APPLICATION_IDundYOUR_APPLICATION_PRIVATE_KEY_PATHdurch die Anwendungs-ID und Pfad des privaten Schlüssels der Vonage-Anwendung, die Sie zuvor erstellt haben.Sie haben dann die
send_message()Funktion in der Zeilenotification = client.messages.send_message()verwendet, um eine Nachricht mit dem initialisierten Client zu senden:"Kanal": ist der Nachrichtenmodus, SMS.
"message_type": Textformat der zu sendenden Nachricht.
"von": dem Absender der Nachricht. Sie können hier Ihre Vonage-Nummer verwenden. Ersetzen Sie IHRE_VONAGE_NUMMER durch Ihre gekaufte Nummer.
"an": der Empfänger der SMS, eine Telefonnummer. Ersetzen Sie DESTINATION_PHONE_NUMBER durch die Empfängernummer.
"Text": der Inhalt der zu sendenden Nachricht, d. h. die Zeichenkette zur Beschreibung des Alarms aus Grafana.
Sie haben die Rückgabeanweisung geändert, um die Aktion bei der Ausführung des Codes wiederzugeben.
Der vollständige Code lautet wie folgt:
from flask import Flask, request
import vonage
app = Flask(__name__)
@app.route("/grafana-webhook", methods=["POST"])
def grafana_webhook():
if request.method == "POST":
data = request.json
alert_description = data["alerts"][0]["annotations"]["desc"]
print(alert_description)
client = vonage.Client(
application_id=YOUR_VONAGE_APPLICATION_ID,
private_key=YOUR_APPLICATION_PRIVATE_KEY_PATH,
)
notification = client.messages.send_message(
{
"channel": "sms",
"message_type": "text",
"from": YOUR_VONAGE_NUMBER,
"to": DESTINATION_PHONE_NUMBER,
"text": alert_description,
}
)
return "Webhook successfully delivered as a notification message."
if __name__ == "__main__":
app.run(host="", port=3000, debug=True) Testen Sie die Anwendung
Um den Code zu testen und sicherzustellen, dass die Einrichtung funktioniert, navigieren Sie zu Kontaktpunkte in Ihrem Grafana Dashboard und wählen Sie die Option Kontaktpunkt bearbeiten Schaltfläche. Dies wird im folgenden Bild gezeigt.
edit-contact-button.png
Sie können eine Test-Webhook-Benachrichtigung über die Kontaktstelle testen senden, wie in der folgenden Abbildung gezeigt.
test-contact-point.png
Wählen Sie die Benutzerdefiniert um eine benutzerdefinierte Testnachricht zu senden
Geben Sie Ihre bevorzugte Zusammenfassung und Beschreibungstexte an
Scrollen Sie nach unten und klicken Sie auf die Schaltfläche Testbenachrichtigung senden Schaltfläche
Der Empfänger sollte eine Testnachricht wie im folgenden Screenshot erhalten:
alert-from-grafana.png
Zusammenfassung
Dieser Artikel enthält eine Anleitung zur Verwendung des Grafana Webhook-Benachrichtigungssystems, um über die Vonage Messages API Benachrichtigungen an Ihre Benutzer zu erhalten und zu senden. Wir haben die Einrichtung Ihrer Grafana-Dashboards, die Erstellung von Python-Webhooks mit Flask und die Konfiguration einer Vonage-Anwendung, die mit der Messages API funktioniert, besprochen.
Wenn Sie Fragen oder Feedback haben, besuchen Sie den Vonage Entwickler-Slack oder senden Sie uns einen Tweet auf X, früher bekannt als Twitter, und wir melden uns bei Ihnen. Nochmals vielen Dank fürs Lesen und bis zum nächsten Mal!
Weitere Ressourcen
Lesen Sie die Grafana-Dokumentation über mehr Alarmierung Konfiguration
Weitere Möglichkeiten zur Verwendung der Messages API finden Sie in der Dokumentation
Teilen Sie:
Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.