Azure Event Hubs を監視する

Azure リソースに依存するクリティカルなアプリケーションとビジネス プロセスがある場合は、それらのリソースの可用性、パフォーマンス、操作を監視する必要があります。 この記事では、Azure Event Hubs によって生成される監視データと、Azure Monitor でこのデータを分析してアラートを生成する方法について説明します。

Azure Monitor とは

Azure Event Hubs では、Azure のフルスタック監視サービスである Azure Monitor を使用して、監視データが作成されます。 Azure Monitor には、Azure リソースを監視するための完全な機能セットが用意されています。 また、他のクラウドやオンプレミスのリソースも監視できます。

まず「Azure Monitor を使用した Azure リソースの監視」の記事にある次の概念の説明をお読みください。

  • Azure Monitor とは
  • 監視に関連するコスト
  • Azure で収集される監視データ
  • データ収集の構成
  • 監視データの分析とアラート生成のための Azure の標準ツール

以下のセクションでは、この記事に基づき、Azure Event Hubs のために収集される特定のデータについて説明します。 これらのセクションでは、Azure ツールを使用してデータ収集を構成し、このデータを分析する例も紹介します。

ヒント

Azure Monitor に関連したコストを把握するには、「Azure Monitor のコストと使用量」を参照してください。 データが Azure Monitor に表示されるまでにかかる時間を把握するには、ログ データのインジェスト時間に関する記事を参照してください。

Azure Event Hubs からのデータの監視

Azure Event Hubs では、他の Azure リソースと同じ種類の監視データが収集されます。これについては、Azure リソースの監視データに関するページをご覧ください。

Azure Event Hubs によって作成されるログおよびメトリックの詳細なリファレンスについては、Azure Event Hubs 監視データのリファレンスに関する記事を参照してください。

収集とルーティング

プラットフォーム メトリックとアクティビティ ログは自動的に収集および格納されますが、診断設定を使用して他の場所にルーティングすることもできます。

リソース ログは、診断設定を作成して 1 つ以上の場所にルーティングするまでは収集および格納されません。

Azure portal、CLI、または PowerShell を使用して診断設定を作成するプロセスの詳細については、「Azure でプラットフォーム ログとメトリックを収集するための診断設定を作成する」を参照してください。 診断設定を作成するときは、収集するログのカテゴリを指定します。 Azure Event Hubs のカテゴリの一覧については、Azure Event Hubs 監視データのリファレンスに関する記事を参照してください。

Note

Azure Monitor で Azure Storage、Azure Event Hubs、Log Analytics などの宛先に送信されるエクスポートされたメトリック データにディメンションは含まれません。

Azure Storage

Azure Storage を使用して診断ログ情報を格納する場合、情報は insights-logs-operationlogs および insights-metrics-pt1m という名前のコンテナーに格納されます。 操作ログのサンプル URL: https://<Azure Storage account>.blob.core.windows.net/insights-logs-operationallogs/resourceId=/SUBSCRIPTIONS/<Azure subscription ID>/RESOURCEGROUPS/<Resource group name>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<Namespace name>/y=<YEAR>/m=<MONTH-NUMBER>/d=<DAY-NUMBER>/h=<HOUR>/m=<MINUTE>/PT1H.json。 メトリック ログの URL は似ています。

Azure Event Hubs

Azure Event Hubs を使用して診断ログ情報を格納する場合、情報は insights-logs-operationlogs および insights-metrics-pt1m という名前のイベント ハブ インスタンスに格納されます。 診断設定を構成しているイベント ハブを除く、既存のイベント ハブを選ぶこともできます。

Log Analytics

Log Analytics を使用して診断ログ情報を格納する場合、情報は AzureDiagnostics / AzureMetrics、または リソース固有のテーブルという名前のテーブルに格納されます

重要

これらの設定を有効にするには、追加の Azure サービス (ストレージ アカウント、イベント ハブ、または Log Analytics) が必要であり、コストが増加する可能性があります。 推定コストを計算するには、Azure 料金計算ツールにアクセスしてください。

Note

診断設定でメトリックを有効にするとき、現在、ディメンション情報は、ストレージ アカウント、イベント ハブ、または Log Analytics に送信される情報の一部として含まれません。

収集できるメトリックとログについては、次のセクションで説明します。

メトリックの分析

Azure Event Hubs のメトリックと他の Azure サービスのメトリックを分析するには、Event Hubs 名前空間のホーム ページ上で [Azure Monitor] セクションから [メトリック] を選択します。 このツールの使用方法の詳細については、Azure Monitor メトリックス エクスプローラーでメトリックスを分析する方法に関するページを参照してください。 収集されるプラットフォーム メトリックの一覧については、Azure Event Hubs 監視データのリファレンスのメトリックに関する記事を参照してください。

[Event Hubs 名前空間] のメトリックス エクスプローラーを示すスクリーンショット。

参考のために、Azure Monitor でサポートされているすべてのリソース メトリックの一覧を確認できます。

ヒント

Azure Monitor のメトリック データは 90 日分利用できます。 ただし、グラフを作成するときは、30 日分だけ視覚化できます。 たとえば、90 日間の期間を視覚化する場合は、90 日間の期間内で 30 日間の 3 つのグラフに分割する必要があります。

フィルター処理と分割

ディメンションをサポートするメトリックについては、ディメンション値を使用してフィルターを適用できます。 たとえば、フィルターを追加して EntityName をイベント ハブの名前に設定します。 また、メトリックをディメンションで分割して、メトリックのセグメントを互いに比較してどのように異なるかを視覚化することもできます。 フィルター処理と分割の詳細については、Azure Monitor の高度な機能に関する記事をご覧ください。

フィルターを含む [Event Hubs 名前空間] のメトリックス エクスプローラーを示すスクリーンショット。

ログの分析

Azure Monitor Log Analytics を使用するには、診断構成を作成して、Log Analytics への情報の送信 を有効にする必要があります。 詳細については、「コレクションとルーティング」セクションを参照してください。 Azure Monitor のログのデータはテーブルに格納され、各テーブルには独自の一意のプロパティ セットがあります。 Azure Event Hubs には、Log Analytics で Azure Diagnostic またはリソース固有のテーブルという 2 つの宛先テーブルのいずれかにログをディスパッチする機能が追加されました。ログとメトリックの詳細なリファレンスについては、Azure Event Hubs の監視データ リファレンスに関するページを参照してください。

重要

Azure Event Hubs のメニューから [ログ] を選択すると、クエリのスコープが現在のワークスペースに設定された状態で Log Analytics が開きます。 つまり、ログ クエリには、そのリソースからのデータのみが含まれます。 他のデータベースのデータや他の Azure サービスのデータを含むクエリを実行する場合は、Azure Monitor のメニューから [ログ] を選択します。 詳細については、「Azure Monitor Log Analytics のログ クエリのスコープと時間範囲」を参照してください。

サンプル Kusto クエリ

重要

Azure Event Hubs のメニューから [ログ] を選択すると、クエリのスコープが現在の Azure Event Hubs 名前空間に設定された状態で Log Analytics が開きます。 つまり、ログ クエリには、そのリソースからのデータのみが含まれます。 他のワークスペースのデータや他の Azure サービスのデータを含むクエリを実行する場合は、 [Azure Monitor] メニューから [ログ] を選択します。 詳細については、「Azure Monitor Log Analytics のログ クエリのスコープと時間範囲」を参照してください。

次に、Azure Event Hubs リソースの監視に使用できるサンプル クエリを示します。

  • 過去 7 日間のエラーを取得する

    AzureDiagnostics
    | where TimeGenerated > ago(7d)
    | where ResourceProvider =="MICROSOFT.EVENTHUB"
    | where Category == "OperationalLogs"
    | summarize count() by "EventName"
    
    
  • 過去 1 時間に生成されたランタイム監査ログを取得します。

    AzureDiagnostics
    | where TimeGenerated > ago(1h)
    | where ResourceProvider =="MICROSOFT.EVENTHUB"
    | where Category == "RuntimeAuditLogs"    
    
  • "キーが見つかりません" というエラーを発生させた、キー コンテナーへのアクセス試行を取得します。

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.EVENTHUB" 
    | where Category == "Error" and OperationName == "wrapkey"
    | project Message
    
  • キー コンテナーで実行された操作を取得して、キーを無効にするか復元します。

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.EVENTHUB"
    | where Category == "info" and OperationName == "disable" or OperationName == "restore"
    | project Message
    
  • キャプチャのエラーとその期間 (秒単位) を取得します

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.EVENTHUB"
    | where Category == "ArchiveLogs"
    | summarize count() by "failures", "durationInSeconds"    
    

ランタイム ログを使用する

Azure Event Hubs を使用すると、ランタイム監査ログとアプリケーション メトリック ログを使用して、クライアント アプリケーションのデータ プレーン操作を監視および監査できます。

ランタイム監査ログを使用すると、イベントの発行や使用など、すべてのデータ プレーン アクセス操作の集計された診断情報をキャプチャできます。 アプリケーション メトリック ログでは、Event Hubs に接続されたクライアント アプリケーションに関連する特定のランタイム メトリック (コンシューマー ラグやアクティブな接続など) に関する集計データがキャプチャされます。

Note

ランタイム監査ログは、Premium 層および専用の層でのみ使用できます。

ランタイム ログを有効にする

ランタイム監査ログまたはアプリケーション メトリック ログを有効にするには、Azure portal の [Event Hubs 名前空間] ページの [監視] セクションから [診断設定] を選択します。 次の図に示すように、[診断設定の追加] を選びます。

[Event Hubs 名前空間] の [診断設定] ページを示すスクリーンショット。

次に、必要に応じてログ カテゴリ RuntimeAuditLogs または ApplicationMetricsLogs を有効にすることができます。

有効になったランタイム監査ログとアプリケーション メトリック ログを示すスクリーンショット。

ランタイム ログが有効になると、Event Hubs は診断設定の構成に従ってログの収集と格納を開始します。

サンプル データを発行して使用する

Event Hubs 名前空間でサンプル ランタイム監査ログを収集するには、Advanced Message Queuing Protocol (AMQP) を使用する Event Hubs SDK に基づくクライアント アプリケーションを使うか、任意の Apache Kafka クライアント アプリケーションを使って、サンプル データを発行して使用します。

ランタイム監査ログを分析する

収集されたランタイム監査ログは、次のサンプル クエリを使用して分析できます。

AzureDiagnostics
| where TimeGenerated > ago(1h)
| where ResourceProvider == "MICROSOFT.EVENTHUB"
| where Category == "RuntimeAuditLogs"

クエリを実行すると、対応する監査ログを次の形式で取得できるようになります。 ランタイム監査ログを分析するためのサンプル クエリの結果を示す画像。

これらのログを分析することで、各クライアント アプリケーションが Event Hubs と対話する方法を監査できるようになります。 ランタイム監査ログに関連付けられている各フィールドは、ランタイム監査ログ リファレンスで定義されています。

アプリケーション メトリックを分析する

収集されたアプリケーション メトリック ログは、次のサンプル クエリを使用して分析できます。

AzureDiagnostics
| where TimeGenerated > ago(1h)
| where Category == "ApplicationMetricsLogs"

アプリケーション メトリックには、次のランタイム メトリックが含まれています。 アプリケーション メトリックを分析するためのサンプル クエリの結果を示す画像。

そのため、アプリケーション メトリックを使用して、特定のクライアント アプリケーションからのコンシューマー ラグやアクティブな接続などのランタイム メトリックを監視できます。 ランタイム監査ログに関連付けられているフィールドは、アプリケーション メトリック ログ リファレンスで定義されています。

警告

Azure Event Hubs のアラートにアクセスするには、Event Hubs 名前空間のホームページ上で [Azure Monitor] セクションから [アラート] を選択します。 アラートの作成の詳細については、「Azure Monitor を使用してメトリック アラートを作成、表示、管理する」を参照してください。

次のステップ