Verwenden des Ereignisrasters

CycleCloud kann Cluster- und Knotenereignisse an Azure Event Grid senden. Event Grid akzeptiert Ereignisse von einem Produzenten (in diesem Fall CycleCloud) und leitet sie zu einem oder mehreren Zielen weiter. In diesem Artikel verwenden wir Azure Storage Queues als Ziel.

Erstellen Sie zunächst ein benutzerdefiniertes Ereignisrasterthema und ein Abonnement, wie im Schnellstart des Ereignisrasters beschrieben.

Konfigurieren Sie anschließend CycleCloud so, dass sie im Thema "Event Grid" veröffentlicht wird. Wählen Sie das Zahnradsymbol "Einstellungen" oben links aus, und doppelklicken Sie dann in der Liste auf das CycleCloud-Element . Wählen Sie im Dropdownmenü das Thema "Ereignisraster" und dann " Speichern" aus.

Thema

Fügen Sie drittens einen Knoten zum Cluster hinzu. Dieser Schritt generiert sofort zwei Ereignisse: ein Microsoft.CycleCloud.ClusterSizeIncreased Ereignis und ein Microsoft.CycleCloud.NodeAdded Ereignis.

Erstellen Sie schließlich das Skript, das Ereignisse aus der Warteschlange verarbeitet. Verwenden Sie in diesem Fall das Python 3 SDK.

Erstellen einer Datei mit dem Namen get_messages.py:

from azure.storage.queue import QueueClient, TextBase64DecodePolicy
import json, sys, time

connect_str = sys.argv[1]
queue_name = sys.argv[2]

queue_client = QueueClient.from_connection_string(connect_str, queue_name, message_decode_policy=TextBase64DecodePolicy())

while True:
    messages = queue_client.receive_messages(timeout=60, visibility_timeout=5, messages_per_page=32)
    for msg_batch in messages.by_page():
        for msg in msg_batch:
            message_body = json.loads(msg.content)
            data = message_body["data"]

            print("%s %s %s" % (message_body["eventType"], data.get("status"), data.get("message")))
            queue_client.delete_message(msg.id, msg.pop_receipt)
    time.sleep(1)

Rufen Sie dann dieses Skript mit den Informationen für die Warteschlange auf, die Sie zuvor erstellt haben:

python3 get_messages.py "DefaultEndpointsProtocol=https;AccountName=ACCOUNTNAME;AccountKey=ACCOUNTKEY;EndpointSuffix=core.windows.net" QUEUE_NAME

Dieses Skript ruft Ereignisse aus der Warteschlange ab und druckt deren Inhalt. Der Prozess wird ausgeführt, bis Sie ihn manuell beenden.

Hinweis

Ereignisse verfügen über viele weitere Eigenschaften. Weitere Informationen finden Sie auf der Seite "Ereignisse ".