チュートリアル: Azure Event Hubs から Azure Monitor ログにイベントを取り込む (パブリック プレビュー)

Azure Event Hubs は、Azure および外部サービスによって取り込まれる複数のソースからイベントを収集するビッグ データ ストリーミング プラットフォームです。 この記事では、イベント ハブから Log Analytics ワークスペースにデータを直接取り込む方法について説明します。

このチュートリアルでは、以下の内容を学習します。

  • Log Analytics ワークスペースにイベント ハブ データの送信先テーブルを作成する
  • データ収集エンドポイントを作成する
  • データ収集ルールを作成する
  • イベント ハブにデータ収集ルールのアクセス許可を付与する
  • データ収集ルールをイベント ハブに関連付ける

必須コンポーネント

Azure Event Hubs から Azure Monitor ログにイベントを送信するには、次のリソースがすべて同じリージョンに必要です。

サポートされているリージョン

Azure Monitor では現在、次のリージョンの Event Hubs からのインジェストがサポートされています。

アメリカ ヨーロッパ 中東 アフリカ アジア太平洋
ブラジル南部 フランス中部 アラブ首長国連邦北部 南アフリカ北部 オーストラリア中部
ブラジル南東部 北ヨーロッパ オーストラリア東部
カナダ中部 ノルウェー東部 オーストラリア南東部
カナダ東部 スイス北部 インド中部
米国東部 スイス西部 東アジア
米国東部 2 英国南部 東日本
米国中南部 英国西部 JIO インド西部
米国西部 西ヨーロッパ 韓国中部
米国西部 3 東南アジア

必要な情報を収集する

以降の手順では、サブスクリプション ID、リソース グループ名、ワークスペース名、ワークスペース リソース ID、イベント ハブ インスタンス リソース ID が必要です。

  1. Log Analytics ワークスペース メニューでワークスペースに移動して プロパティ を選択し、サブスクリプション IDリソース グループワークスペース名をコピーします。 このチュートリアルでリソースを作成するには、これらの詳細が必要です。

    Screenshot showing Log Analytics workspace overview screen with subscription ID, resource group name, and workspace name highlighted.

  2. [JSON] を選択して [リソース JSON] 画面を開き、ワークスペースの [リソース ID] をコピーします。 データ収集ルールを作成するには、ワークスペース リソース ID が必要です。

    Screenshot showing the Resource JSON screen with the workspace resource ID highlighted.

  3. イベント ハブ インスタンスに移動し、[JSON] を選択して [リソース JSON] 画面を開き、イベント ハブ インスタンスの [リソース ID] をコピーします。 データ収集ルールをイベント ハブに関連付けるには、イベント ハブ インスタンスのリソース ID が必要です。

    Screenshot showing the Resource JSON screen with the event hub resource ID highlighted.

Log Analytics ワークスペースに送信先テーブルを作成する

データを取り込めるようになる前に、送信先テーブルを設定する必要があります。 カスタム テーブルとサポートされている Azure テーブルにデータを取り込むことができます。

イベントを取り込むカスタム テーブルを作成するには、Azure portal で次の操作を実行します。

  1. [Cloud Shell] ボタンを選択して、環境が [PowerShell] に設定されていることを確認します。

    Screenshot showing how to open Cloud Shell.

  2. 以下の PowerShell コマンドを実行してテーブルを作成します。その際、JSON にはテーブル名 (<table_name>) を設定し (カスタム テーブルの場合はサフィックス _CL を付けます)、Invoke-AzRestMethod -Path コマンドには <subscription_id><resource_group_name><workspace_name><table_name> の値を設定します。

    $tableParams = @'
    {
        "properties": {
            "schema": {
                "name": "<table_name>",
                "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime",
                        "description": "The time at which the data was ingested."
                    },
                    {
                        "name": "RawData",
                        "type": "string",
                        "description": "Body of the event."
                    },
                    {
                        "name": "Properties",
                        "type": "dynamic",
                        "description": "Additional message properties."
                    }
                ]
            }
        }
    }
    '@
    
    Invoke-AzRestMethod -Path "/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/microsoft.operationalinsights/workspaces/<workspace_name>/tables/<table_name>?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
    

重要

  • 列名は、先頭を文字にする必要があり、最大 45 文字の英数字とアンダースコア (_) で構成できます。
  • _ResourceIdid_ResourceId_SubscriptionIdTenantIdTypeUniqueIdTitle は予約されている列名です。
  • 列名では大文字と小文字が区別されます。 データ収集ルールでは、必ず正しい大文字と小文字を使用してください。

データ収集エンドポイントを作成する

データ収集ルールを使用してデータを収集するには、データ収集エンドポイントが必要です。

  1. データ収集エンドポイントを作成します

    重要

    Log Analytics ワークスペースと同じリージョンにデータ収集エンドポイントを作成します。

  2. データ収集エンドポイントの [概要] 画面で、[JSON ビュー] を選択します。

    Screenshot that shows the data collection endpoint Overview screen.

  3. データ収集ルールの [リソース ID] をコピーします。 この情報は、次の手順で必要になります。

    Screenshot that shows the data collection endpoint JSON view.

データ収集ルールを作成する

Azure Monitor ではデータ収集ルールを使用して、収集するデータ、データの変換方法、データの送信先を定義します。

Azure portal でデータ収集ルールを作成するには、次の操作を実行します。

  1. ポータルの検索ボックスに、「テンプレート」と入力して、[カスタム テンプレートのデプロイ] を選択します。

    Screenshot to deploy custom template.

  2. [Build your own template in the editor] (エディターで独自のテンプレートをビルド) を選択します。

    Screenshot to build template in the editor.

  3. 下の Resource Manager テンプレートをエディターに貼り付けて、[保存] を選択します。

    Screenshot to edit Resource Manager template.

    データ収集ルールで、次の詳細に注目します。

    • identity - 使用するマネージド ID の種類を定義します。 この例では、システム割り当て ID を使用します。 ユーザー割り当てマネージド ID を構成することもできます。

    • dataCollectionEndpointId - データ収集エンドポイントのリソース ID。

    • streamDeclarations - イベント ハブから取り込むデータ (受信データ) を定義します。 ストリーム宣言は変更できません。

      • TimeGenerated - データがイベント ハブから Azure Monitor ログに取り込まれた時刻。
      • RawData - イベントの本文。 詳細については、「イベントを読み取る」をご覧ください。
      • Properties - イベントのユーザー プロパティ。 詳細については、「イベントを読み取る」をご覧ください。
    • datasources - イベント ハブ コンシューマー グループと、データを取り込むストリームを指定します。

    • destinations - データが送信されるすべての送信先を指定します。 1 つ以上の Log Analytics ワークスペースにデータを取り込むことができます

    • dataFlows - ストリームを送信先ワークスペースと照合し、変換クエリと送信先テーブルを指定します。 この例では、前に作成したカスタム テーブルにデータを取り込みます。 サポートされている Azure テーブルに取り込むこともできます。

    • transformKql - 受信データをワークスペースに送信する前に適用する変換 (ストリーム宣言) を指定します。 この例では、受信データを対応するスキーマで作成したカスタム テーブルにマッピングするため、transformKqlsource に設定します。これにより、ソースからのデータが変更されることはありません。 別のスキーマを持つテーブルにデータを取り込む場合、または取り込み前にデータをフィルター処理する場合は、データ収集変換を定義します

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "dataCollectionRuleName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the data collection Rule to create."
                }
            },
            "workspaceResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
                }
            },
            "endpointResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the data collection endpoint to use."
                }
            },
            "tableName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the table in the workspace."
                }
            },
            "consumerGroup": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the consumer group of event hub."
                },
                "defaultValue": "$Default"
            }
        },
        "resources": [
            {
                "type": "Microsoft.Insights/dataCollectionRules",
                "name": "[parameters('dataCollectionRuleName')]",
                "location": "[resourceGroup().location]", 
                "apiVersion": "2022-06-01",
                "identity": {
                                 "type": "systemAssigned"
                  },
                "properties": {
                    "dataCollectionEndpointId": "[parameters('endpointResourceId')]",
                    "streamDeclarations": {
                        "Custom-MyEventHubStream": {
                            "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime"
                    },
                    {
                        "name": "RawData",
                        "type": "string"
                    },
                    {
                        "name": "Properties",
                        "type": "dynamic"
                    }
                ]
                        }
                    },
                    "dataSources": {
                        "dataImports": {
                             "eventHub": {
                                        "consumerGroup": "[parameters('consumerGroup')]",
                                        "stream": "Custom-MyEventHubStream",
                                        "name": "myEventHubDataSource1"
                                                              }
                                               }
                   },
                    "destinations": {
                        "logAnalytics": [
                            {
                                "workspaceResourceId": "[parameters('workspaceResourceId')]",
                                "name": "MyDestination"
                            }
                        ]
                    },
                    "dataFlows": [
                        {
                            "streams": [
                                "Custom-MyEventHubStream"
                            ],
                            "destinations": [
                                "MyDestination"
                            ],
                            "transformKql": "source",
                            "outputStream": "[concat('Custom-', parameters('tableName'))]"
                        }
                    ]
                }
            }
        ]
    }
    
  4. [カスタム デプロイ] 画面で、データ収集ルールを保存する [サブスクリプション][リソース グループ] を指定し、テンプレートに定義されているパラメーターの値を指定します。

    • [リージョン] - データ収集ルールのリージョン。 選択したリソース グループに基づいて自動的に設定されます。
    • [データ収集ルール名] - ルールに名前を付けます。
    • [ワークスペース リソース ID] - 「必要な情報を収集する」をご覧ください。
    • [エンドポイント リソース ID] - データ収集エンドポイントの作成時に生成されます。
    • [テーブル名] - 宛先テーブルの名前を指定します。 この例で、およびカスタム テーブルを使用するときは常に、テーブル名の末尾にサフィックス _CL を付ける必要があります。 Azure テーブルにデータを取り込む場合は、サフィックスを付けずにテーブル名 (Syslog など) を入力します。
    • コンシューマー グループ - 既定では、コンシューマー グループは $Default に設定されます。 必要に応じて、値を別のイベント ハブ コンシューマー グループに変更します。

    Screenshot showing the Custom Template Deployment screen with the deployment values for the data collection rule set up in this tutorial.

  5. [確認と作成] を選択し、詳細を確認したら [作成] をクリックします。

  6. デプロイが完了したら、[デプロイの詳細] ボックスを展開し、データ収集ルールを選択して詳細を表示します。 [JSON ビュー] を選択します。

    Screenshot that shows the Data Collection Rule Overview screen.

  7. データ収集ルールの [リソース ID] をコピーします。 この情報は、次の手順で必要になります。

    Screenshot that shows the data collection rule JSON view.

ユーザー割り当てマネージド ID を構成する (省略可能)

ユーザー割り当て ID をサポートするようにデータ収集ルールを構成するには、上記の例で、以下を置き換えます。

    "identity": {
                        "type": "systemAssigned"
        },

次の内容に置き換えます。

    "identity": {
            "type": "userAssigned",
            "userAssignedIdentities": {
                "<identity_resource_Id>": {
                }
            }
        },

<identity_resource_Id> 値を見つけるには、Azure portal でユーザー割り当てマネージド ID リソースに移動し、[JSON] を選択して [リソース JSON] 画面を開き、マネージド ID のリソース ID をコピーします。

Screenshot showing Resource JSON screen with the managed identity resource ID highlighted.

Azure テーブルにログ データを取り込む (省略可能)

サポートされている Azure テーブルにデータを取り込むには、次の操作を実行します。

  1. データ収集ルールで outputStream を変更します。

    変更前: "outputStream": "[concat('Custom-', parameters('tableName'))]"

    宛先: "outputStream": "outputStream": "[concat(Microsoft-', parameters('tableName'))]"

  2. transformKql で、取り込まれたデータを送信先の Azure テーブルのターゲット列に送信する変換を定義します。

イベント ハブにデータ収集ルールへのアクセス許可を付与する

マネージド ID を使用すると、作成したデータ収集ルールとデータ収集エンドポイントにイベントを送信するアクセス許可を、任意のイベント ハブまたは Event Hubs 名前空間に付与できます。 Event Hubs 名前空間にアクセス許可を付与すると、名前空間内のすべてのイベント ハブがアクセス許可を継承します。

  1. Azure portal のイベント ハブまたは Event Hubs 名前空間から、[アクセス制御 (IAM)]>[ロールの割り当ての追加] を選択します。

    Screenshot that shows the Access control screen for the data collection rule.

  2. [Azure Event Hubs データ受信者] を選択し、[次へ] を選択します。

    Screenshot that shows the Add Role Assignment screen for the event hub with the Azure Event Hubs Data Receiver role highlighted.

  3. アクセスの割り当て先マネージド ID を選択し、メンバーを選択する をクリックします。 データ収集ルール を選択し、データ収集ルールを名前で検索し、 選択 をクリックします。

    Screenshot that shows how to assign access to managed identity.

  4. [確認と割り当て] を選択して、ロールの割り当てを保存する前に詳細を確認します。

    Screenshot that shows the Review and Assign tab of the Add Role Assignment screen.

データ収集ルールをイベント ハブに関連付ける

最後の手順では、イベントを収集するイベント ハブにデータ収集ルールを関連付けます。

同じコンシューマー グループを共有し、同じストリームにデータを取り込む複数のイベント ハブに 1 つのデータ収集ルールを関連付けることができます。 または、一意のデータ収集ルールを各イベント ハブに関連付けることもできます。

重要

イベント ハブからデータを取り込むには、少なくとも 1 つのデータ収集ルールをイベント ハブに関連付ける必要があります。 イベント ハブに関連するすべてのデータ収集ルールの関連付けを削除すると、イベント ハブからのデータの取り込みは停止されます。

Azure portal でデータ収集ルールの関連付けを作成するには、次の操作を実行します。

  1. Azure portal の検索ボックスに、テンプレート と入力して、[カスタム テンプレートのデプロイ] を選択します。

  2. [Build your own template in the editor] (エディターで独自のテンプレートをビルド) を選択します。

  3. 下の Resource Manager テンプレートをエディターに貼り付けて、[保存] を選択します。

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "eventHubResourceID": {
          "type": "string",
          "metadata": {
            "description": "Specifies the Azure resource ID of the event hub to use."
          }
        },
        "associationName": {
          "type": "string",
          "metadata": {
            "description": "The name of the association."
          }
        },
        "dataCollectionRuleID": {
          "type": "string",
          "metadata": {
            "description": "The resource ID of the data collection rule."
          }
        }
      },
      "resources": [
        {
          "type": "Microsoft.Insights/dataCollectionRuleAssociations",
          "apiVersion": "2021-09-01-preview",
          "scope": "[parameters('eventHubResourceId')]",
          "name": "[parameters('associationName')]",
          "properties": {
            "description": "Association of data collection rule. Deleting this association will break the data collection for this event hub.",
            "dataCollectionRuleId": "[parameters('dataCollectionRuleId')]"
          }
        }
      ]
    }
    
  4. [カスタム デプロイ] 画面で、データ収集ルールの関連付けを保存する [サブスクリプション][リソース グループ] を指定し、テンプレートに定義されているパラメーターの値を指定します。

    • [リージョン] - 選択したリソース グループに基づいて自動的に設定されます。
    • [イベント ハブ インスタンスのリソース ID] - 「必要な情報を収集する」をご覧ください。
    • [関連付けの名前] - 関連付けに名前を付けます。
    • [データ収集ルール ID] - データ収集ルールを作成するときに生成されます。

    Screenshot showing the Custom Template Deployment screen with the deployment values for the data collection rule association set up in this tutorial.

  5. [確認と作成] を選択し、詳細を確認したら [作成] をクリックします。

取り込まれたイベントの送信先テーブルを確認する

データ収集ルールをイベント ハブに関連付けたので、Azure Monitor ログは、保持期間が期限切れになっていない既存のすべてのイベントとすべての新しいイベントを取り込みます。

取り込まれたイベントの送信先テーブルを確認するには、次の操作を実行します。

  1. ワークスペースに移動し、[ログ] を選択します。

  2. クエリ エディターで単純なクエリを作成し、[実行] を選択します。

    <table_name>
    

    イベント ハブからのイベントが表示されます。

Screenshot showing the results of a simple query on a custom table. The results consist of events ingested from an event hub.

リソースをクリーンアップする

このチュートリアルでは、次のリソースを作成しました。

  • カスタム テーブル
  • データ収集エンドポイント
  • データ収集ルール
  • データ収集ルールの関連付け

これらのリソースがまだ必要かどうかを評価します。 必要のないリソースを個別に削除するか、リソース グループを削除してこれらのリソースをすべて一度に削除します。 リソースを実行したままにすると、コストが発生する可能性があります。

イベント ハブからのデータの取り込みを停止するには、イベント ハブに関連するすべてのデータ収集ルールの関連付けを削除するか、データ収集ルール自体を削除します。 また、これらのアクションにより、イベント ハブのチェックポイント処理もリセットされます。

既知の問題と制限事項

  • Microsoft Entra ディレクトリ間でサブスクリプションを譲渡する場合は、「Azure リソースのマネージド ID に関する既知の問題」で説明されている手順に従って、データの取り込みを続行する必要があります。
  • Event Hubs から Azure Monitor ログに最大 64 KB のメッセージを取り込むことができます。

次のステップ

以下に関する詳細情報をご覧ください。