Event Grid の使用
CycleCloud は、クラスターイベントとノードイベントをAzure Event Gridに送信できます。 Event Grid は、プロデューサー (この場合は CycleCloud) からのイベントを受け入れ、1 つ以上の宛先にルーティングします。 このドキュメントでは、Azure Storage キューを 宛先として使用します。
まず、Event Grid のクイックスタートで説明されているように、カスタム Event Grid トピックとサブスクリプションを作成します。
次に、上記で作成した Event Grid トピックに発行するように CycleCloud を構成します。 左上にある [設定] 歯車アイコンをクリックし、一覧の [CycleCloud ] 項目をダブルクリックします。 ドロップダウンから Event Grid トピックを選択し、[保存] をクリック します。
3 番目に、クラスターにノードを追加します。 これにより、イベントとMicrosoft.CycleCloud.NodeAdded
イベントの Microsoft.CycleCloud.ClusterSizeIncreased
2 つのイベントがすぐに生成されます。
最後に、キューからのイベントを処理するスクリプトを作成します。 この場合は、 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
これにより、キューからイベントがプルされ、その内容が出力されます。 このプロセスは、手動で終了するまで実行されます。
注意
イベントにはさらに多くのプロパティがあります。 詳細については、「 イベント 」ページを参照してください。