Поделиться через


Использование Службы "Сетка событий"

CycleCloud может отправлять события кластера и узла в Сетка событий Azure. Сетка событий принимает события от производителя (в данном случае CycleCloud) и направляет их в одно или несколько назначений. В этом документе мы будем использовать очереди службы хранилища Azure в качестве назначения.

Сначала создайте пользовательский раздел и подписку Сетки событий, как описано в кратком руководстве по сетке событий.

Во-вторых, настройте CycleCloud для публикации в созданном выше разделе Сетки событий. Щелкните значок шестеренки Параметры в левом верхнем углу, а затем дважды щелкните элемент CycleCloud в списке. Выберите раздел Сетка событий в раскрывающемся списке и нажмите кнопку Сохранить.

Выбор раздела Сетки событий

В-третьих, добавьте узел в кластер. Это приведет к немедленному созданию Microsoft.CycleCloud.ClusterSizeIncreased двух событий: события и Microsoft.CycleCloud.NodeAdded события.

Наконец, создайте скрипт, который будет обрабатывать события из очереди. В этом случае мы будем использовать пакет SDK для Python 3.

Создайте файл 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)

Затем вызовите этот код со сведениями для очереди, созданной ранее:

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

Это приведет к извлечению событий из очереди и выводу их содержимого. Процесс выполняется до завершения вручную.

Примечание

В событиях есть еще много свойств. Дополнительные сведения см. на странице События .