Utilisation d’Event Grid
CycleCloud peut envoyer des événements de cluster et de nœud à Azure Event Grid. Event Grid accepte les événements d’un producteur (dans ce cas CycleCloud) et les achemine vers une ou plusieurs destinations. Dans ce document, nous allons utiliser des files d’attente de stockage Azure comme destination.
Tout d’abord, créez une rubrique et un abonnement Event Grid personnalisés, comme indiqué dans le démarrage rapide Event Grid.
Ensuite, configurez CycleCloud pour publier dans la rubrique Event Grid créée ci-dessus. Cliquez sur l’icône d’engrenage Paramètres dans le coin supérieur gauche, puis double-cliquez sur l’élément CycleCloud dans la liste. Sélectionnez la rubrique Event Grid dans la liste déroulante, puis cliquez sur Enregistrer.
Troisièmement, ajoutez un nœud au cluster. Cela génère immédiatement deux événements : un Microsoft.CycleCloud.ClusterSizeIncreased
événement et un Microsoft.CycleCloud.NodeAdded
événement.
Enfin, créez le script qui traitera les événements de la file d’attente. Dans ce cas, nous allons utiliser le Kit de développement logiciel (SDK) Python 3.
Créer un fichier nommé 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)
Appelez-le ensuite avec les informations de la file d’attente créée ci-dessus :
python3 get_messages.py "DefaultEndpointsProtocol=https;AccountName=ACCOUNTNAME;AccountKey=ACCOUNTKEY;EndpointSuffix=core.windows.net" QUEUE_NAME
Cela extrait les événements de la file d’attente et imprime leur contenu. Le processus s’exécute jusqu’à ce qu’il se termine manuellement.
Notes
Il existe de nombreuses autres propriétés sur les événements. Pour plus d’informations, consultez la page Événements .