メインコンテンツまでスキップ
Sumo Logic Japanese

Azure Blob Storage アプリケーションのログの収集

要件 

  • 汎用 v2 (GPv2) および Blob ストレージ アカウントのみがサポートされています。この統合では、汎用 v1 (GPv1) アカウントはサポートされません。  
  • Azure サービスと同じ場所でストレージ アカウントを設定します。
  • このソリューションでは、ファイル拡張子が .csv、.json、.blob、.log の Blob ストレージからのログ ファイルのみがサポートされています。 

機能の概要

  1. その目的で作成されたストレージ アカウント内のコンテナにログをエクスポートするように Azure サービスを設定します。
  2. ARM テンプレートは、ストレージ コンテナをパブリッシャとして、イベント ハブ (Sumo 提供の ARM で作成) をサブスクライバとして Event Grid サブスクリプションを作成します。Event Grid は、ブロック Blob 作成イベントをイベント ハブにルーティングします。
  3. Event Hub は、イベントを TaskProducer Azure 関数にストリーミングし、この関数がタスク (開始および終了バイト、コンテナ名、Blob パスを指定する JSON オブジェクト) を作成して、これらのタスクをサービス バス タスク キューに転送します。
  4. TaskConsumer Azure 関数はサービス バスが新しいタスクを受信したときにトリガされ、開始バイトから停止バイトまでブロック Blob を読み取り、そのデータを Sumo に送信します。 
  5. セットアップには、エラー処理メカニズムも含まれています。ソリューション ストラテジの詳細については、「Azure Blob Storage」を参照してください。

ステップ 1.Azure ストレージ アカウントを設定する 

このステップでは、Azure サービスのモニタリング データをエクスポートするストレージ アカウントを設定します。   

この目的で使用するコンテナを含むストレージ アカウントがある場合は、そのリソース グループ、ストレージ アカウント名、およびコンテナ名を書き留めてステップ 2 に進みます。

Azure ストレージ アカウントを設定するには、次の手順を実行します。
  1. 新しいストレージ アカウントとして汎用 v2 (GPv2) ストレージ アカウントを作成します。手順については、Azure ヘルプの「Create a storage account (ストレージ アカウントを作成する)」を参照してください。
  2. Azure ポータルで、(前のステップで) 作成したストレージ アカウントに移動します。
  3. [Blob Service (Blob サービス)][Blobs (Blob)] を選択します。
    この手順の後半で入力する必要があるため、コンテナ名を書き留めます。 
    1. [+ Container (+ コンテナ)] を選択します。
    2. 名前を入力します。
    3. [Public Access Level (パブリック アクセス レベル)] に [Private (プライベート)] を選択します。
    4. [OK] をクリックします。

ステップ 2.HTTP Source を設定する

 このステップでは、Azure 関数からログを受信するための HTTP Source を設定します。

  1. HTTP Source を設定する Hosted Collector を選択します。必要に応じて、「Hosted Collector を設定する」の説明に従って Hosted Collector を新規作成します。
  2. 「HTTP ログとメトリクス Source」の説明に従って HTTP Source を設定します。次のステップで必要になるため、Source の URL を書き留めます。

ステップ 3.ARM テンプレートを使用して Azure リソースを設定する

このステップでは、Sumo 提供の Azure Resource Manager (ARM) テンプレートを使用して、Event Hub、3 つの Azure 関数、Service Bus キュー、ストレージ アカウントを作成します。

  1. blobreaderdeploy.json ARM テンプレートをダウンロードします。
  2. Azure ポータルで [Create a Resource (リソースの作成)] をクリックし、[Template deployment (テンプレートのデプロイ)] を検索して、[Create (作成)] をクリックします。
  3. [Custom deployment (カスタム デプロイ)] ブレードで、[Build your own template in the editor (エディタで独自のテンプレートを作成)] をクリックします。
  4. テンプレートの内容をコピーして、エディタ ウィンドウに貼り付けます。

    edit-template.png
  5. [Save (保存)] をクリックします。
  6. [Custom deployment (カスタム デプロイ)] ブレードで、次の手順を実行します。
    1. リソース グループを新規作成する (推奨) か、既存のリソース グループを選択します。
    2. [Location (ロケーション)] を選択します。
    3. 次のパラメータの値を設定します。
  • SumoEndpointURL: 上記のステップ 2 で設定した HTTP Source の URL。
  • StorageAccountName: 上記のステップ 1 で設定した、Azure サービスからのログを保存するストレージ アカウントの名前。
  • StorageAccountResourceGroupName: 上記のステップ 1 で設定したストレージ アカウントのリソース グループの名前。
  • フィルタ接頭辞 (省略可能)。特定のコンテナからのログをフィルタリングする場合は、/blobServices/default/containers/<container_name>/ と入力します。なお、変数は自分のコンテナ名に置き換えてください。
  1. 利用規約に同意するチェック ボックスをオンにして、[Purchase (購入)] をクリックします。

Azure_Blob_Storage_Custom_Deployment.png

  1. Azure ポータルの右上にある [Notifications (通知)] でデプロイに成功したことを確認します。

notification-success.png

  1. (省略可能) 同じウィンドウで [Go to resource group (リソース グループに移動)] をクリックすると、次の例に示すようにすべてのリソースが正常に作成されたことを確認できます。

Azure_Blob_all-resources.png

  1. [Storage accounts (ストレージ アカウント)] に移動して sumobrlogs を検索し、[sumobrlogs<random-string>] を選択します。

storage-accounts.png

  1. [Table Service (テーブル サービス)] で、次の手順を実行します。
    1. [Tables (テーブル)] をクリックします。
    2. [+ Table (+ テーブル)] をクリックします。
    3. [Name (名前)] に「FileOffsetMap」と入力します。
  2. [OK] をクリックします。

Azure_Blob_create-table.png

ステップ 4.ログを Azure サービスから Azure Blob Storage に転送する

このセクションでは、診断ログを設定してログを Azure サービスから Azure Blob Storage に転送する方法について説明します。この手順では、例として Azure Web アプリケーション サービスを使用しています。 

  1. Azure ポータルにログインします。
  2. [Monitoring (モニタリング)][AppServices] > [Your Function App (関数アプリケーション)] > [Diagnostic Logs (診断ログ)] をクリックします。
  3. [Diagnostic Logs (診断ログ)] ブレードが表示されます。アプリケーションのロギングと Web サーバのロギングのいずれか、またはその両方を有効にして、[Storage Settings (ストレージ設定)] をクリックします。
  4. 接続文字列をステップ 1 で設定したストレージ アカウントを選択します。 
  5. [Containers (コンテナ)] ブレードで、ステップ 1 で作成したコンテナを選択します。
  6. [Diagnostic Logs (診断ログ)] ブレードで [Retention Period (Days) (保持期間 (日数))] を指定して [Save (保存)] をクリックし、診断ログの設定を終了します。

    export-webapp-logs.png

複数のストレージ アカウントからの取り込み (省略可能)

複数のストレージ アカウントから Sumo にデータを取り込む場合は、ストレージ アカウントごとに個別に次のタスクを実行します。

ステップ 1: App Service がストレージ アカウント キーをリストすることの許可

このセクションでは、App Service がストレージ アカウント キーをリストすることを許可する手順について説明します。これにより、Azure 関数がストレージ アカウントから読み取りを行えるようになります。

App Service がストレージ アカウント キーをリストすることを許可するには、次の手順を実行します。
  1. [Storage Account (ストレージ アカウント)] に移動して、[Access Control(IAM) (アクセス制御 (IAM))] をクリックします。

AzureBlob_AccessControl_IAM.png

  1. ページ上部にある [Add + (追加 +)] をクリックします。

AzureBlob_IAM_Add.png

  1. [Add Permissions (権限の追加)] ウィンドウで、次の値を指定します。
  • Role (ロール): [Storage Account Key Operator Service Role (ストレージ アカウント キー operator サービス ロール)] を選択します。
  • Assign Access To (アクセス権の割り当て先): [App Service (App Service)] を選択します。
  • Subscription (サブスクリプション): 従量制課金。
  • Select (選択):  ARM テンプレートによって作成された [SUMOBRDLQProcessor<unique_prefix>] および [SUMORTaskConsumer<unique_prefix>] App Service を選択します。

AzureBlob_AddPermissions.png

  1. [Save (保存)] をクリックします。

ステップ 2: Event Grid サブスクリプションを作成する

このセクションでは、上記のステップ 3 で ARM テンプレートによって作成された Event Hub へのすべての Blob 作成イベントをサブスクライブする Event Grid サブスクリプションの作成手順について説明します。

Event Grid サブスクリプションを作成するには、次の手順を実行します。
  1. Azure ポータルの左側のペインで [All Services (すべてのサービス)] をクリックし、Event Grid サブスクリプションを検索してクリックします。

AzureBlob_EventGridSubscriptions.png

  1. [Event subscriptions (イベント サブスクリプション)] ページの上部にある [+Event Subscription (+ イベント サブスクリプション)] をクリックします。 

AzureBlob_EventSubscriptionsPage.png

[Create Event Subscription (イベント サブスクリプションの作成)] ダイアログが表示されます。

AzureBlob_CreatEventSubscription_dialog.png

  1. [Event Subscription Details (イベント サブスクリプションの詳細)] で、次の値を指定します。
  • Name (名前): イベント サブスクリプション名を入力します。
  • Event Schema (イベント スキーマ): [Event Grid Schema (Event Grid スキーマ)] を選択します。
  1. [Topic Details (トピックの詳細)] で、次の値を指定します。
  • Topic Type (トピック タイプ): ストレージ アカウントを選択します。
  • Subscription (サブスクリプション): [Pay As You Go (従量制課金)] を選択します。
  • Resource Group (リソース グループ): Azure サービスによりログがエクスポートされる、ログ取り込み先のストレージ アカウントのリソース グループを選択します。 
  • Resource (リソース): ログ取り込み先の設定済みのストレージ アカウントを選択します。
  1. [Event Types (イベント タイプ)] で、次の情報を指定します。
  • [Subscribe to all event types (すべてのイベント タイプにサブスクライブ)] ボックスをオフにします。
  • [Define Event Types (イベント タイプの定義)] ドロップダウンから [Blob Created (Blob 作成済み)] を選択します。
  1. [Endpoint Types (エンドポイント タイプ)] で、次の情報を指定します。 
  • [Endpoint Type (エンドポイント タイプ)]: ドロップダウンから [Event Hubs (Event Hub)] を選択します。 
  • Endpoint (エンドポイント):  [Select an endpoint (エンドポイントの選択)] をクリックします。 

[Select Event Hub (Event Hub の選択)] ダイアログが表示されます。

AzureBlob_SelectEventHub-EventGrid.png

  1. [Select Event Hub (Event Hub の選択)] で次のパラメータを指定して、[Confirm Selection (選択の確認)] をクリックします。
  • Resource Group (リソース グループ): ARM テンプレートで作成されたすべてのリソースが存在する、ステップ 3 で作成したリソース グループを選択します。
  • Event Hub Namespace (Event Hub 名前空間): [SUMOBREventHubNamespace<unique string>] を選択します。
  • Event Hub: ドロップダウンから [blobreadereventhub] を選択します。
  1. [Filters (フィルタ)] タブで次のオプションを指定します。
  • [Enable subject filtering (件名のフィルタリングを有効にする)] をオンにします。
  • コンテナ名でイベントをフィルタリングするには、[Subject Begins With (次で開始する件名)] フィールドに /blobServices/default/containers/<container_name>/ と入力します。なお、<container_name> は、ログをエクスポートするコンテナの名前に置き換えてください。

AzureBlob_FiltersDialog.png

  1. [Create (作成)] をクリックします。
  2. Azure ポータルの右上隅にある [Notifications (通知)] でデプロイに成功したことを確認します。

 

  • この記事は役に立ちましたか?