Azure 診断ログをイベント ハブにストリーミングするStream Azure Diagnostic Logs to an event hub

Azure 診断ログ は、ポータルに組み込まれた [Event Hubs にエクスポート] オプションを使用するか、Azure PowerShell コマンドレットまたは Azure CLI を使用して診断設定でイベント ハブ承認規則 ID を有効にすることによって、任意のアプリケーションにほぼリアルタイムでストリーミングできます。Azure diagnostic logs can be streamed in near real time to any application using the built-in “Export to Event Hubs” option in the Portal, or by enabling the Event Hub Authorization Rule ID in a diagnostic setting via the Azure PowerShell Cmdlets or Azure CLI.

診断ログと Event Hubs で実行できることWhat you can do with diagnostics logs and Event Hubs

診断ログでストリーミング機能を使用する場合、次のような方法があります。Here are just a few ways you might use the streaming capability for Diagnostic Logs:

  • サードパーティ製のログ記録およびテレメトリ システムへのログのストリーミング – すべての診断ログを単一のイベント ハブにストリーミングして、ログ データをサードパーティ製の SIEM またはログ分析ツールにパイプできます。Stream logs to 3rd party logging and telemetry systems – You can stream all of your diagnostic logs to a single event hub to pipe log data to a third-party SIEM or log analytics tool.

  • "ホットパス" データを Power BI にストリーミングしてサービスの正常性を表示する - Event Hubs、Stream Analytics、Power BI を使用して、診断データを Azure サービスに関するほぼリアルタイムの洞察に簡単に変換できます。View service health by streaming “hot path” data to Power BI – Using Event Hubs, Stream Analytics, and Power BI, you can easily transform your diagnostics data in to near real-time insights on your Azure services. Event Hubs をセットアップし、Stream Analytics でデータを処理して、Power BI を出力として使用する方法の概要については、こちらの記事をご覧ください。This documentation article gives a great overview of how to set up Event Hubs, process data with Stream Analytics, and use Power BI as an output. 診断ログを設定する際のヒントを次に示します。Here are a few tips for getting set up with diagnostic logs:

    • オプションをポータルで有効にするか、PowerShell を使用して有効にすると、診断ログの特定のカテゴリのイベント ハブが自動的に作成されます。そのため、名前が insights- で始まる名前空間のイベント ハブを選択できます。An event hub for a category of diagnostic logs is created automatically when you check the option in the portal or enable it through PowerShell, so you want to select the event hub in the namespace with the name that starts with insights-.

    • 次の SQL コードは、Power BI テーブルのすべてのログ データの解析に使用できる Stream Analytics クエリの一例です。The following SQL code is a sample Stream Analytics query that you can use to parse all the log data in to a Power BI table:

      SELECT
      records.ArrayValue.[Properties you want to track]
      INTO
      [OutputSourceName – the Power BI source]
      FROM
      [InputSourceName] AS e
      CROSS APPLY GetArrayElements(e.records) AS records
      
  • カスタムのテレメトリおよびログ プラットフォームを構築する - カスタム構築されたテレメトリ プラットフォームが既にある場合や構築を検討している場合は、Event Hubs の非常にスケーラブルな発行/サブスクライブの特性により、診断ログを柔軟に取り込むことができます。Build a custom telemetry and logging platform – If you already have a custom-built telemetry platform or are just thinking about building one, the highly scalable publish-subscribe nature of Event Hubs allows you to flexibly ingest diagnostic logs. グローバル規模のテレメトリ プラットフォームで Event Hubs を使用する方法については、Dan Rosanova によるガイドをご覧ください。See Dan Rosanova’s guide to using Event Hubs in a global scale telemetry platform here.

診断ログのストリーミングの有効化Enable streaming of diagnostic logs

診断ログのストリーミングは、プログラム、ポータル、または Azure Monitor REST API を使用して有効にすることができます。You can enable streaming of diagnostic logs programmatically, via the portal, or using the Azure Monitor REST APIs. どの方法でも、Event Hubs 名前空間と、名前空間に送信するログ カテゴリおよびメトリックを指定する診断設定を作成します。Either way, you create a diagnostic setting in which you specify an Event Hubs namespace and the log categories and metrics you want to send in to the namespace. 有効にしたログ カテゴリごとにイベント ハブがその名前空間に作成されます。An event hub is created in the namespace for each log category you enable. 診断ログ カテゴリとは、リソースで収集できるログの種類です。A diagnostic log category is a type of log that a resource may collect.

警告

コンピューティング リソース (VM や Service Fabric など) の診断ログを有効にし、ストリーミングするには、 別の手順が必要となります。Enabling and streaming diagnostic logs from Compute resources (for example, VMs or Service Fabric) requires a different set of steps.

設定を構成するユーザーが両方のサブスクリプションに対して適切な RBAC アクセスを持っており、さらに両方のサブスクリプションが同じ AAD テナントに含まれている限り、Event Hubs 名前空間は、ログを出力するリソースと同じサブスクリプションに属している必要はありません。The Event Hubs namespace does not have to be in the same subscription as the resource emitting logs as long as the user who configures the setting has appropriate RBAC access to both subscriptions and both subscriptions are part of the same AAD tenant.

注意

診断設定を使用した多ディメンション メトリックの送信は現在サポートされていません。Sending multi-dimensional metrics via diagnostic settings is not currently supported. ディメンションを含むメトリックは、ディメンション値間で集計され、フラット化された単一ディメンションのメトリックとしてエクスポートされます。Metrics with dimensions are exported as flattened single dimensional metrics, aggregated across dimension values.

: イベント ハブの "受信メッセージ" メトリックは、キュー単位のレベルで調査およびグラフ化できます。For example: The 'Incoming Messages' metric on an Event Hub can be explored and charted on a per queue level. ただし、診断設定を使用してエクスポートすると、メトリックは、イベント ハブ内のすべてのキューのすべての受信メッセージとして表されます。However, when exported via diagnostic settings the metric will be represented as all incoming messages across all queues in the Event Hub.

ポータルを使用して診断ログをストリーミングするStream diagnostic logs using the portal

  1. ポータルで、Azure Monitor に移動し、 [診断設定] をクリックします。In the portal, navigate to Azure Monitor and click on Diagnostic Settings

    Azure Monitor の [監視] セクション

  2. 必要に応じて、リソース グループまたはリソースの種類で一覧をフィルタリングして、診断設定を行うリソースをクリックします。Optionally filter the list by resource group or resource type, then click on the resource for which you would like to set a diagnostic setting.

  3. 選択したリソースの設定が存在しない場合は、設定を作成するように求められます。If no settings exist on the resource you have selected, you are prompted to create a setting. [診断を有効にする] をクリックします。Click "Turn on diagnostics."

    診断設定の追加 - 既存の設定が存在しない

    リソースに既存の設定が存在する場合は、このリソースで構成済みの設定の一覧が表示されます。If there are existing settings on the resource, you will see a list of settings already configured on this resource. [診断設定の追加] をクリックします。Click "Add diagnostic setting."

    診断設定の追加 - 既存の設定が存在する

  4. 設定に名前をつけて [イベント ハブへのストリーム] のチェック ボックスをオンにしてから、Event Hubs 名前空間を選択します。Give your setting a name and check the box for Stream to an event hub, then select an Event Hubs namespace.

    診断設定の追加 - 既存の設定が存在する

    診断ログを初めてストリーミングする場合は、選択した名前空間にイベント ハブが作成されます。そのログ カテゴリを選択した名前空間にストリーミングするリソースが既に存在する場合は、その名前空間にイベント ハブがストリーミングされます。また、ストリーミング メカニズムで使用するアクセス許可をポリシーで定義します。The namespace selected will be where the event hub is created (if this is your first time streaming diagnostic logs) or streamed to (if there are already resources that are streaming that log category to this namespace), and the policy defines the permissions that the streaming mechanism has. 現在、イベント ハブにストリーミングするには、管理、送信、リッスンの各アクセス許可が必要です。Today, streaming to an event hub requires Manage, Send, and Listen permissions. Event Hubs 名前空間の共有アクセス ポリシーは、ポータルの名前空間の [構成] タブで作成または変更できます。You can create or modify Event Hubs namespace shared access policies in the portal under the Configure tab for your namespace. これらの診断設定のいずれかを更新するには、クライアントに Event Hubs の承認規則に対する ListKey アクセス許可が必要です。To update one of these diagnostic settings, the client must have the ListKey permission on the Event Hubs authorization rule. また、必要に応じて、イベント ハブの名前を指定できます。You can also optionally specify an event hub name. イベント ハブの名前を指定した場合、ログは、新しく作成されたログ カテゴリごとのイベント ハブではなく、名前を指定したイベント ハブにルーティングされます。If you specify an event hub name, logs are routed to that event hub rather than to a newly created event hub per log category.

  5. [Save] をクリックします。Click Save.

しばらくすると、このリソースの設定一覧に新しい設定が表示され、新しいイベント データが生成されるとすぐに、診断ログがそのイベント ハブにストリーミングされます。After a few moments, the new setting appears in your list of settings for this resource, and diagnostic logs are streamed to that event hub as soon as new event data is generated.

PowerShell コマンドレットの使用Via PowerShell Cmdlets

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

Azure PowerShell コマンドレットを使用してストリーミングを有効にするには、次のパラメーターを指定して Set-AzDiagnosticSetting コマンドレットを使用します。To enable streaming via the Azure PowerShell Cmdlets, you can use the Set-AzDiagnosticSetting cmdlet with these parameters:

Set-AzDiagnosticSetting -ResourceId [your resource ID] -EventHubAuthorizationRuleId [your Event Hub namespace auth rule ID] -Enabled $true

イベント ハブ承認規則 ID は、{Event Hub namespace resource ID}/authorizationrules/{key name} という形式の文字列です。たとえば、/subscriptions/{subscription ID}/resourceGroups/{resource group}/providers/Microsoft.EventHub/namespaces/{Event Hub namespace}/authorizationrules/RootManageSharedAccessKey のようになります。The Event Hub Authorization Rule ID is a string with this format: {Event Hub namespace resource ID}/authorizationrules/{key name}, for example, /subscriptions/{subscription ID}/resourceGroups/{resource group}/providers/Microsoft.EventHub/namespaces/{Event Hub namespace}/authorizationrules/RootManageSharedAccessKey. 現時点では、PowerShell を使って特定のイベント ハブ名を選択することはできません。You cannot currently select a particular event hub name with PowerShell.

Azure CLI の使用Via Azure CLI

Azure CLI を使ってストリーミングを有効にするには、az monitor diagnostic-settings create コマンドを使います。To enable streaming via the Azure CLI, you can use the az monitor diagnostic-settings create command.

az monitor diagnostic-settings create --name <diagnostic name> \
    --event-hub <event hub name> \
    --event-hub-rule <event hub rule ID> \
    --resource <target resource object ID> \
    --logs '[
    {
        "category": <category name>,
        "enabled": true
    }
    ]'

--logs パラメーターとして渡された JSON 配列にディクショナリを追加することによって、診断ログに他のカテゴリを追加できます。You can add additional categories to the diagnostic log by adding dictionaries to the JSON array passed as the --logs parameter.

--event-hub-rule 引数は、PowerShell コマンドレットで説明したようにイベント ハブ承認規則 ID と同じ形式を使います。The --event-hub-rule argument uses the same format as the Event Hub Authorization Rule ID as explained for the PowerShell Cmdlet.

Event Hubs からログ データを使用する方法How do I consume the log data from Event Hubs?

Event Hubs からのサンプル出力データを次に示します。Here is sample output data from Event Hubs:

{
    "records": [
        {
            "time": "2016-07-15T18:00:22.6235064Z",
            "workflowId": "/SUBSCRIPTIONS/DF602C9C-7AA0-407D-A6FB-EB20C8BD1192/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/DF602C9C-7AA0-407D-A6FB-EB20C8BD1192/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330013509921957/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Error",
            "operationName": "Microsoft.Logic/workflows/workflowActionCompleted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T17:58:55.048482Z",
                "endTime": "2016-07-15T18:00:22.4109204Z",
                "status": "Failed",
                "code": "BadGateway",
                "resource": {
                    "subscriptionId": "df602c9c-7aa0-407d-a6fb-eb20c8bd1192",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330013509921957",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "29a9862f-969b-4c70-90c4-dfbdc814e413",
                    "clientTrackingId": "08587330013509921958"
                }
            }
        },
        {
            "time": "2016-07-15T18:01:15.7532989Z",
            "workflowId": "/SUBSCRIPTIONS/DF602C9C-7AA0-407D-A6FB-EB20C8BD1192/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/DF602C9C-7AA0-407D-A6FB-EB20C8BD1192/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330012106702630/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Information",
            "operationName": "Microsoft.Logic/workflows/workflowActionStarted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T18:01:15.5828115Z",
                "status": "Running",
                "resource": {
                    "subscriptionId": "df602c9c-7aa0-407d-a6fb-eb20c8bd1192",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330012106702630",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "042fb72c-7bd4-439e-89eb-3cf4409d429e",
                    "clientTrackingId": "08587330012106702632"
                }
            }
        }
    ]
}
要素名Element Name 説明Description
recordsrecords このペイロード内のすべてのログ イベントの配列。An array of all log events in this payload.
timetime イベントが発生した時刻。Time at which the event occurred.
categorycategory このイベントのログ カテゴリ。Log category for this event.
resourceIdresourceId このイベントを生成したリソースのリソース ID。Resource ID of the resource that generated this event.
operationNameoperationName 操作の名前。Name of the operation.
levellevel 省略可能。Optional. ログ イベントのレベル。Indicates the log event level.
propertiesproperties イベントのプロパティ。Properties of the event.

Event Hubs へのストリーミングをサポートするすべてのリソース プロバイダーの一覧については、こちらをご覧ください。You can view a list of all resource providers that support streaming to Event Hubs here.

Compute リソースからのデータのストリーミングStream data from Compute resources

診断ログは、Windows Azure Diagnostics エージェントを使用して Compute リソースからストリーミングすることもできます。You can also stream diagnostic logs from Compute resources using the Windows Azure Diagnostics agent. その設定方法については、この記事を参照してくださいSee this article for how to set that up.

次の手順Next steps