https://d226lax1qjow5r.cloudfront.net/blog/blogposts/integrate-vonage-with-grafana-to-receive-notifications-by-sms/grafana-updates.png

Integrieren Sie Vonage mit Grafana, um Benachrichtigungen per SMS zu erhalten

Zuletzt aktualisiert am November 21, 2023

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 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.

  1. Klicken Sie im Menü auf der linken Seite auf Dashboards, um zur Seite Dashboards zu gelangen.

  2. Klicken Sie auf die Neue um ein Dropdown-Menü mit Optionen zu erhalten, und wählen Sie Neues Dashboard

  3. Klicken Sie auf der Seite Neues Dashboard auf + Visualisierung hinzufügen, um ein Modell zur Auswahl einer Datenquelle zu öffnen.

  4. Wählen Sie ein Datenquellenmodal und wählen Sie die Option -- Grafana -- auf der rechten Seite.

Select Data Sourceselect-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.
  1. Sie können nun auf das Symbol "Dashboard aktualisieren" in der folgenden Abbildung klicken, um die Datenquelle abzufragen.

Create Contact Pointcreate-contact-point.png

  1. 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.

pip install flask

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 POST Route, /grafana-webhook

  • Die Route dekoriert die grafana_webhook-Funktion, einen POST-Endpunkt für den Empfang von POST-Anfragen.

  • extrahiert die alert_description aus der Nutzlast der Anfrage

  • Eines 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:

python notify.py 3000

Sie sollten eine Terminalausgabe wie die folgende erhalten, die auf einen aktiven Entwicklungsserver hinweist:

* Serving Flask app 'notify' * Debug mode: on WARNING: This is a development server. Please do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:3000 Press CTRL+C to quit * Restarting with stat * Debugger is active! * Debugger PIN: 144-577-375

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:

ngrok http 3000

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:

https://d5fs-104-25-63-145.eu.ngrok.io -> http://localhost:3000

Dies bedeutet, dass Ihr Webhook-Endpunkt auf der Grundlage Ihres Python-Skripts wie folgt lautet:

https://d5fs-104-25-63-145.eu.ngrok.io/grafana-webhook

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.

  1. Gehen Sie im Grafana-Hauptmenü auf Warnungen & IRM > Alarmierungwie im folgenden Screenshot gezeigt.

Alerting Menualerting-menu.png

  1. 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 Pointscontact-points.png

  1. 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 Setupcontact-point-setup.png

  1. 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 Senttest-alert-sent.png

  1. 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:

  1. Navigieren Sie im Hauptmenü Ihres Vonage Dashboards zum Menü API-Einstellungen, um zu den API-Einstellungen Seite zu gelangen. Die API-Einstellungen

  2. Wählen Sie im Abschnitt SMS-Einstellungen die Option Messages API. Belassen Sie die anderen Einstellungen auf ihren Standardwerten.

  3. Besuchen Sie die Applications Seite und klicken Sie auf die Schaltfläche + Anwendung erstellen um eine Anwendung zu erstellen.

  4. 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.key wird auf Ihren lokalen Rechner heruntergeladen.

  5. Wählen Sie Nachrichten in der Rubrik Fähigkeiten Abschnitt.

  6. Geben Sie die Eingangs- und Status-URL ein, die Sie bei der Einrichtung von Ngrok notiert haben.

  7. 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.

pip install vonage

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 die YOUR_VONAGE_APPLICATION_ID und YOUR_APPLICATION_PRIVATE_KEY_PATH durch 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 Zeile notification = 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 Point Buttonedit-contact-button.png

Sie können eine Test-Webhook-Benachrichtigung über die Kontaktstelle testen senden, wie in der folgenden Abbildung gezeigt.

Test Contact Pointtest-contact-point.png

  1. Wählen Sie die Benutzerdefiniert um eine benutzerdefinierte Testnachricht zu senden

  2. Geben Sie Ihre bevorzugte Zusammenfassung und Beschreibungstexte an

  3. Scrollen Sie nach unten und klicken Sie auf die Schaltfläche Testbenachrichtigung senden Schaltfläche

  4. Der Empfänger sollte eine Testnachricht wie im folgenden Screenshot erhalten:

Alert from Grafanaalert-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:

https://a.storyblok.com/f/270183/400x397/505bfb0eb9/jekayinoluwa-olabemiwo.png
Jekayinoluwa Olabemiwo

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.