Event Grid 사용
CycleCloud는 클러스터 및 노드 이벤트를Azure Event Grid 보낼 수 있습니다. Event Grid는 생산자(이 경우 CycleCloud)의 이벤트를 수락하고 하나 이상의 대상으로 라우팅합니다. 이 문서에서는 Azure Storage 큐를 대상으로 사용합니다.
먼저 Event Grid 빠른 시작에 설명된 대로 사용자 지정 Event Grid 토픽 및 구독을 만듭니다.
둘째, 위에서 만든 Event Grid 토픽에 게시하도록 CycleCloud를 구성합니다. 왼쪽 위에서 설정 기어 아이콘을 클릭한 다음 목록에서 CycleCloud 항목을 두 번 클릭합니다. 드롭다운에서 Event Grid 항목을 선택하고 저장을 클릭합니다.
셋째, 클러스터에 노드를 추가합니다. 그러면 이벤트와 Microsoft.CycleCloud.NodeAdded
이벤트라는 두 개의 이벤트가 Microsoft.CycleCloud.ClusterSizeIncreased
즉시 생성됩니다.
마지막으로 큐에서 이벤트를 처리하는 스크립트를 만듭니다. 이 경우 Python 3 SDK를 사용하게 됩니다.
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
그러면 큐에서 이벤트를 끌어오고 해당 콘텐츠를 출력합니다. 이 프로세스는 수동으로 종료될 때까지 실행됩니다.
참고
이벤트에는 더 많은 속성이 있습니다. 자세한 내용은 이벤트 페이지를 참조하세요.