【第24回】Azureで社内システム再現（クラウド編）｜Hybrid Worker にバックアップとアラート通知を構成する

## 概要

これまでの「オンプレ編」では、Azure の仮想マシン（IaaS）を使って、社員番号から名前を検索できるシンプルな社内システムを構築してきました。Active Directory、SQL Server、ADFS などを組み合わせ、オンプレミスの構成を仮想的に再現しています。

※全体構成の詳細は、[【第0回】Azureで社内システム再現（オンプレ編）｜構成図と動作の流れ](https://qiita.com/your-link-here) をご参照ください。

クラウド編では、これまでの構成をベースにしつつ、Azure のマネージドサービス（PaaS）を中心とした構成へ段階的に移行していきます。

※クラウド移行全体の設計方針については、[【第10.5回】Azureで社内システム再現（クラウド編）｜オンプレ構成をどうクラウドに移行するか？](https://qiita.com/saba_infra/items/4ff691131593e947d6cf) にまとめています。

## システム構成（今回の対象範囲）

今回のテーマは、**Azure 環境に構築した社内システムの中核となる Hybrid Worker VM に対して、バックアップと監視体制を整備し、運用フェーズへの移行を図ること**です。

まず、下図は「クラウド編」における全体構成図です。

![スクリーンショット 2025-04-30 14.05.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4032599/3e1bee7d-3e3c-400f-9f9c-3274c41b66a5.png)


このうち、**赤枠で示している Recovery Services コンテナー（バックアップ）と Log Analytics Workspace（監視）周辺の構成**が、今回の対象範囲となります。

---

今回は以下の作業を行いました。

- Hybrid Worker VM を対象とした Azure Backup の構成  
- Log Analytics Workspace（LAW）を用いたイベントログの収集  
- 「Error」ログを検出するクエリの作成と、それに基づくアラートルールの設定  
- アラート発火時にメール通知が届くようアクショングループを構成  
- テスト用にエラーログを手動発生させ、検知と通知が正しく機能することを確認

これにより、Hybrid Worker に対する障害対応と異常検知の体制が整い、システムの安定運用に向けた基盤が完成しました。


## Azure Backup の構成（Hybrid Worker のバックアップ）

社内システムの中核である Hybrid Worker（hw-vm）を対象に、Azure Backup を使ったバックアップ構成を行います。  
IaaS ベースの VM はユーザー側での復旧責任があるため、障害発生時の備えとしてバックアップは必須の構成要素です。

Azure Backup では、まずバックアップデータを保存するための「Recovery Services コンテナー（RSC）」を作成します。  

また、バックアップの「ポリシー」は、バックアップの**取得タイミング**や**保持期間**などを定義するルールであり、  
これに従って Azure が自動的にスナップショットを取得・管理します。

今回は、毎日午前5時にバックアップを取得するようなポリシーを構成して進めます。

### Recovery Services コンテナーの作成

Azure ポータルで「Recovery Services コンテナー」を選択し、作成を進めます。

リソースグループ、名前、リージョン等を設定します。


![スクリーンショット 2025-04-07 20.47.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/0cb7c8ec-6136-492a-9740-443a28ec66e9.png)

### バックアップの構成を開始

Recovery Services コンテナーが作成されたら、上部の「＋バックアップ」をクリックします。

バックアップ対象を選択する画面へ遷移します。


![スクリーンショット 2025-04-07 20.50.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/0edc34f6-c26d-4be0-9ee3-806c02872e6b.png)

### バックアップ対象を選択（Azure VM）

バックアップする対象として「仮想マシン」を選択します。  
今回は、Automation や ADF の実行基盤となっている **hybridworker** を対象とします。


![スクリーンショット 2025-04-07 20.50.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/175ccad9-3a06-4fb8-8db0-27e276869b71.png)

### バックアップポリシーの作成

次に、バックアップの頻度や保持期間を定義する「バックアップポリシー」を作成します。  
今回は以下のように設定しました。

- バックアップの実行：毎日 午前 5 時


![スクリーンショット 2025-04-07 20.51.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/8cca738f-b8d8-4a8e-abeb-752493b64eff.png)

### バックアップ構成の最終確認と有効化

設定内容を確認し、「バックアップを有効にする」をクリックします。  
これにより、初回のバックアップ準備が開始されます。


![スクリーンショット 2025-04-07 20.52.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/91553e49-40ae-4685-a1d2-e11497023193.png)

### 動作確認
Recovery Services コンテナーの「バックアップ項目」から、対象の VM に対してバックアップが正常に取得されていることを確認できます。

![スクリーンショット 2025-04-24 15.00.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/e5e10c3a-5f4f-44a2-9d6e-f5b8f205f570.png)

このように、**Hybrid Worker VM に対するバックアップが正常に完了していることを確認できました。**  




## Hybrid Worker の監視構成（Log Analytics + アラート通知）

次に監視の構成を行います。
Hybrid Worker に対して Azure Monitor のログベース監視構成を行い、  
イベントログに「Error」が出力された際に、指定のメールアドレスへ通知が届くように設定します。

具体的には、Azure Monitor Agent により収集されたイベントログを Log Analytics Workspace（LAW）に送信し、  
そのログに対してクエリ（KQL）を実行してアラートルールを定義しています。  
これにより、エラーが発生した際に即座に検知・通知する仕組みを実現します。

---

### Log Analytics Workspace の作成

まず、Log Analytics Workspace（以下 LAW）を作成し、ログの集約先を用意します。

![スクリーンショット 2025-04-07 20.24.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/08db8b71-fd1f-4fb5-81d0-6e95583c6420.png)

---

### データ収集ルール（DCR）の自動作成

Hybrid Worker を構成すると、Azure Monitor Agent が対象 VM にインストールされ、  
対応するデータ収集ルール（DCR）も自動的に作成されます。

![スクリーンショット 2025-04-09 11.20.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/ed9fc005-560d-4137-ab5a-126814458d08.png)

---

### LAW との接続確認

Hybrid Worker の VM が LAW に接続され、ログが送信されていることを確認します。

![スクリーンショット 2025-04-09 12.10.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/c56ecbbc-1cb7-4b51-baff-9e389e9111f8.png)

---

### エラーログ取得用のクエリ作成

収集されたログに対して以下のクエリを実行し、直近のエラーログを時系列順に確認します。

```kql
Event
| where EventLevelName == "Error"
| sort by TimeGenerated desc
```

![スクリーンショット 2025-04-09 12.46.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/5f9d9bda-db18-4d29-93e2-11e0e0b7a3f1.png)

このクエリは「Detect-ErrorEvents」という名前で保存し、アラートルール作成に使用します。

![スクリーンショット 2025-04-09 12.47.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/2ca90175-3040-43b3-98df-8615ac24be7f.png)

---

### アラートルールとアクショングループの概要

Azure Monitor の監視構成では、ログの異常を検知した際に「誰に・どのように知らせるか」を定義する必要があります。  
そのために使うのが、以下の2つの仕組みです。

- **アラートルール**：  
  クエリ結果やメトリックのしきい値に基づいて、異常を検知するルール。  
  今回は「エラーが1件以上検出されたら通知する」という条件を設定します。

- **アクショングループ**：  
  アラートが発火したときに「どのようなアクションを取るか（例：メール通知）」を定義する設定です。

---

### アラートルールの作成

保存したクエリ（Detect-ErrorEvents）をもとに、アラートルールを作成します。

アラートの対象として「カスタム ログ検索（Log Analytics クエリ）」を選択します。  
ここでは先ほど保存した Detect-ErrorEvents クエリを選び、クエリ実行結果に基づいて異常検知を行います。

![スクリーンショット 2025-04-09 12.49.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/7d0e26a0-cf7a-4775-9da4-adfea14b9ff0.png)

---

### アラートロジックの設定

次に、アラートの評価条件を設定します。  
評価頻度を「1分ごと」、しきい値を「0より大きい」に設定することで、  
1分間で1件でもエラーがあれば即アラートが発火する仕組みです。


![スクリーンショット 2025-04-09 12.51.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/f35f668f-b17f-4e67-824e-63b6f4ca3c18.png)

このルールでは、「現在の評価ウィンドウ内に1件でもエラーが検出された場合のみ」通知が発生します。  
※ 過去のログ（例：前日に出たエラー）は評価対象外です。

---

### アクショングループと通知設定

アラートが発火した際に「どんな通知・操作を行うか」を定義するのがアクショングループです。  
ここでは、指定のメールアドレスに通知を送るように新しいグループを作成します。

![スクリーンショット 2025-04-09 12.52.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/2e85f803-1800-4e24-9aae-dc0b9a21c95b.png)

最後に、これまでの設定内容を確認し、問題がなければアラートルールを作成して完了です。

![スクリーンショット 2025-04-09 12.54.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/2d022419-0584-4f08-bc22-8761b818bfd7.png)


### 動作テストと通知確認

Hybrid Worker VM 上で手動でエラーを発生させ、アラートが正常に検知・通知されるかを確認しました。  
テストには、PowerShell 上で以下のコマンドを実行して、明示的に Application ログにエラーイベントを作成しています。

```powershell
EventCreate /L Application /T ERROR /SO "TestSource" /ID 100 /D "これはテストエラーです"
```

- **ログ種別**：Application ログ  
- **タイプ**：ERROR  
- **ソース**：TestSource  
- **イベント ID**：100  
- **メッセージ**：「これはテストエラーです」

![スクリーンショット 2025-04-09 13.23.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/71399722-fbcf-4737-a4b1-9359270d9125.png)

この操作により、VM 内のイベントログにエラーが記録されます。

![スクリーンショット 2025-04-09 14.41.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/4a020345-6a53-416c-8c60-09edfaf45b43.png)

また、Log Analytics Workspace 上でも、先ほど保存したクエリにより該当のエラーイベントが検出されました。

![スクリーンショット 2025-04-09 14.38.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/e394b755-fc67-459b-b22b-5fd0246f2cc6.png)

このエラーにより、アラートルールが発火したことも確認済みです。

![スクリーンショット 2025-04-09 14.39.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/3909acb9-0cfd-4bdb-a7c0-91fbc4a178b9.png)

最終的に、設定したアクショングループのとおり、指定したメールアドレス宛に通知が届きました。

![スクリーンショット 2025-04-24 15.21.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/777b5c0e-e126-4e96-9146-99b8a7f4c60d.png)

以上により、Hybrid Worker のイベントログ監視とアラート通知が正しく機能していることが確認できました。