Verwenden von Event Grid
CycleCloud kann Cluster- und Knotenereignisse an Azure Event Grid senden. Event Grid akzeptiert Ereignisse von einem Producer (in diesem Fall CycleCloud) und leitet sie an ein oder mehrere Ziele weiter. In diesem Dokument verwenden wir Azure Storage-Warteschlangen als Ziel.
Erstellen Sie zunächst ein benutzerdefiniertes Event Grid-Thema und ein abonnement, wie im Event Grid-Schnellstart beschrieben.
Konfigurieren Sie anschließend CycleCloud für die Veröffentlichung in dem oben erstellten Event Grid-Thema. Klicken Sie oben links auf das Zahnradsymbol Einstellungen , und doppelklicken Sie dann auf das CycleCloud-Element in der Liste. Wählen Sie in der Dropdownliste das Event Grid-Thema aus, und klicken Sie auf Speichern.
Drittens fügen Sie dem Cluster einen Knoten hinzu. Dadurch werden sofort zwei Ereignisse generiert: ein Microsoft.CycleCloud.ClusterSizeIncreased
Ereignis und ein Microsoft.CycleCloud.NodeAdded
Ereignis.
Erstellen Sie schließlich das Skript, das Ereignisse aus der Warteschlange verarbeitet. In diesem Fall verwenden wir das Python 3 SDK.
Erstellen Sie eine 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 diese mit den Informationen für die oben erstellte Warteschlange auf:
python3 get_messages.py "DefaultEndpointsProtocol=https;AccountName=ACCOUNTNAME;AccountKey=ACCOUNTKEY;EndpointSuffix=core.windows.net" QUEUE_NAME
Dadurch werden Ereignisse aus der Warteschlange abgerufen und deren Inhalt ausgegeben. Der Prozess wird ausgeführt, bis er manuell beendet wird.
Hinweis
Es gibt viele weitere Eigenschaften für Ereignisse. Weitere Informationen finden Sie auf der Seite Ereignisse .