メンテナンス前とメンテナンス後の構成イベントを管理する
適用対象: ✔️ Windows VM ✔️ Linux VM ✔️ オンプレミス環境 ✔️ Azure Arc 対応サーバー ✔️ Azure VM。
この記事では、Azure Update Manager で事前イベントと事後イベントを管理する方法について説明します。
事前イベントと事後イベントを管理します
事前イベントと事後イベントを表示する
事前イベントと事後イベントを表示するには、次の手順に従います:
Azure portal にサインインし、[Azure Update Manager] に移動します。
[管理] で、[マシン]、[メンテナンス構成] の順に選択します。
[メンテナンス構成] ページで、事前イベントと事後イベントを追加するメンテナンス構成を選択します。
[概要] を選択し、[メンテナンス イベント] にチェックを入れます。 構成に関連付けられている事前イベントと事後イベントの数を確認できます。
事前イベントと事後イベントの数を選択すると、イベントの一覧とイベントの種類が表示されます。
事前イベントと事後イベントを編集する
事前イベントと事後イベントを編集するには、次の手順に従います。
- 「事前イベントと事後イベントを表示する」に記載されている手順に従ってください。
- 選択したイベント ページで、編集する事前イベントまたは事後イベントを選択します。
- 選択した事前イベントと事後イベント ページで、使用するイベント ハンドラー/エンドポイント、またはエンドポイントの場所を編集できます。
事前イベントと事後イベントの実行とスケジュールの実行を管理する
Event Grid からエンドポイントへの事前イベントと事後イベントの正常な配信を確認するには、次の手順に従います。
- Azure portal にサインインし、[Azure Update Manager] に移動します。
- [管理] で [マシン] を選択します。
- 上部のリボンから [メンテナンス構成] を選択します。
- [メンテナンス構成] ページで、事前イベントと事後イベントを表示するメンテナンス構成を選択します。
- 選択した [メンテナンス構成] ページで、ToC の下にある [設定] で [イベント] を選択します。
- [エッセンシャル] セクションでは、選択したイベント サブスクリプションの下にあるすべてのイベントのメトリックを表示できます。 グラフでは、発行されたイベント メトリックの数と一致するイベント メトリックの数が一致する必要があります。 どちらの値も、配信されたイベントの数と一致する必要があります。
- 事前イベントまたは事後イベントに固有のメトリックを表示するには、グリッドからイベント名を選択します。 ここで、一致するイベント メトリックの数は、配信されたイベントの数と一致する必要があります。
- イベントがトリガーされた時刻を表示するには、線グラフにカーソルを合わせます。 詳細情報。
Note
Azure Event Grid は、1 回以上の配信パラダイムに準拠しています。 これは、例外的な状況において、付与されたイベントに対してイベント ハンドラーが複数回呼び出される可能性があることを意味します。 イベント ハンドラーのアクションがべき等であることを確認することをお勧めします。 つまり、イベント ハンドラーが複数回実行されても、悪影響はありません。 べき等を実装することで、イベント呼び出しが重複する可能性がある場合でも、アプリケーションの堅牢性を確保できます。
エンドポイントが事前イベントまたは事後イベントでトリガーされ、完了したかどうかを確認するには
Azure portal にサインインし、お使いの Azure Automation アカウントに移動します。
お使いの Automation アカウントから、[プロセスの自動化] の [Runbook] を選択します。
Event Grid で Webhook にリンクされている事前スクリプトまたは事後スクリプトを選択します。
[概要] で、Runbook ジョブの状態を表示することができます。 トリガー時刻は、スケジュール開始時刻の約 30 分前にする必要があります。 ジョブが終了したら、同じセクションに戻って状態が [完了済み] かどうかを確認できます。 たとえば、VM の電源がオンまたはオフになっていることを確認します。
Automation アカウントのアクティビティ ログとジョブの状態から詳細を取得する方法の詳細については、「Azure Automation で Runbook を管理する」を参照してください。
スケジュールの実行を開始する前にキャンセルする
スケジュールの実行をキャンセルするには、スケジュール メンテナンス構成開始時刻の少なくとも 10 分前に、事前イベントのキャンセル API がトリガーされる必要があります。 事前イベント、つまり Runbook スクリプトまたは Azure 関数コードでキャンセル API を呼び出す必要があります。
スケジュール メンテナンスの実行をキャンセルするには
- Azure portal にサインインし、[Azure Update Manager] に移動します。
- ToC の [管理] で [履歴] を選択します。
- [メンテナンス実行 ID ごと]タブを選択し、履歴を表示するメンテナンス実行 ID を選択します。
- [スケジュールの更新をキャンセルする] を選択します。 このオプションは、メンテナンス構成開始の 10 分前から有効になります。
次の ARG クエリから、メンテナンス実行中のマシンの一覧を取得できます。 [詳細の表示] を選択することで、相関関係 ID を表示することもできます。
maintenanceresources
| where type =~ "microsoft.maintenance/maintenanceconfigurations/applyupdates"
| where properties.correlationId has "/subscriptions/your- subscription -id/resourcegroups/your- ResourceGroupName/providers/microsoft.maintenance/maintenanceconfigurations/mc-name/providers/microsoft.maintenance/applyupdates/"
| order by name desc
Note
Azure Update Manager またはメンテナンス構成では、スケジュールは監視されず、自動的にキャンセルされます。 ユーザーがキャンセルに失敗した場合、スケジュール実行は、ユーザー定義のメンテナンス期間中に更新プログラムのインストールを進めます。
事後スケジュールの実行
事前イベントと事後イベントの履歴を表示する
- Azure portal にサインインし、[Azure Update Manager] に移動します。
- [管理] で [履歴] を選択します。
- [メンテナンス実行 ID ごと]タブを選択し、履歴を表示するメンテナンス実行 ID を選択します。
- 選択したメンテナンス実行 ID のこの履歴ページの [イベント] タブを選択します。
- イベントの種類やエンドポイントの詳細とともに、イベント数やイベント名を表示できます。
事前イベントと事後イベントのデバッグ
Webhook を通じて作成されたイベントのジョブ履歴を表示するには、次の手順に従います。
- ジョブ ログを表示するイベント名を検索します。
- [ジョブ履歴] 列で、イベント名に対応する [Runbook 履歴の表示] を選択します。 これにより、Runbook が存在する Automation アカウントに移動します。
- 事前イベントまたは事後イベントに関連する特定の Runbook 名を選択します。 [概要] ページでは、Runbook の実行と状態の詳細と合わせて、最近のジョブを表示できます。
キャンセルされたスケジュールの実行の状態を表示する
- Azure portal にサインインし、[Azure Update Manager] に移動します。
- [管理] で [履歴] を選択します。
- [メンテナンス実行 ID ごと]タブを選択し、状態を表示するメンテナンス実行 ID を選択します。
- 状態を表示するには、[状態] を参照してください。 メンテナンスの実行がキャンセルされた場合、状態は [キャンセル済み] と表示されます。 状態を選択すると詳細が表示されます。
キャンセルには次の 2 種類があります:
- ユーザーによるキャンセル: スクリプトまたはコードからキャンセル API を呼び出すとき。
- システムによるキャンセル: 内部エラーが原因でシステムがキャンセル API を呼び出す場合。 これは、スケジュールされたパッチ適用ジョブの 30 分前に、システムが事前イベントを顧客のエンドポイントに送信できない場合にのみ行われます。 この場合、システムによる事前イベントの実行に失敗したため、今後予定されているメンテナンス構成がキャンセルされます。
キャンセルがユーザーによるものかシステムによるものかを確認するには、[詳細を表示] で前述の ARG クエリからメンテナンス実行 ID の状態を表示できます。 エラー メッセージにはスケジュールの実行がユーザーまたはシステムによってキャンセルされたかどうかを表示し、状態フィールドはメンテナンス実行の状態を確認します。
上の画像はユーザーによるキャンセルの例で、エラー メッセージは、「YYYY 年 MM 月 DD にキャンセル API を使用してメンテナンスがキャンセルされました」と表示されます。 メンテナンスの実行が何らかの理由でシステムによってキャンセルされた場合、JSON のエラー メッセージは「YYYY 年 MM 月 DD に内部プラットフォーム エラーによってメンテナンスがキャンセルされました」となります。
事前イベントと事後イベントを削除する
事前イベントと事後イベントを削除するには、次の手順に従います:
Azure portal にサインインし、[Azure Update Manager] に移動します。
[管理] で、[マシン]、[メンテナンス構成] の順に選択します。
[メンテナンス構成] ページで、事前イベントと事後イベントを追加するメンテナンス構成を選択します。
選択した [メンテナンス構成] ページで、[設定] で [イベント] を選択します。
グリッドから削除するイベントの名前を選択します。
選択した [イベント] ページで、[削除] を選択します。
次のステップ
- Azure Update Manager での事前および事後イベントの概要については、こちらを参照してください
- 事前および事後イベントを作成する方法については、メンテナンス前と後の構成イベントに関する記事を参照してください。
- Webhooks を使用して VM をオンまたはオフするために事前または事後イベントを使用する方法については、こちらを参照してください。
- Azure Functions を使用して VM をオンまたはオフするために事前または事後イベントを使用する方法については、こちらを参照してください。