チュートリアル:Stream Analytics を使用した Application Insights から SQL へのエクスポート

この記事では、連続エクスポートAzure Stream Analytics を使用して、テレメトリ データを Azure Application Insights から Azure SQL Database に移動する方法について説明します。

連続エクスポートにより、JSON 形式でテレメトリ データが Azure Storage に移動されます。 Azure Stream Analytics を使って JSON オブジェクトを解析し、データベース テーブルに行を作成します。

(一般に、連続エクスポートは、アプリが Application Insights に送信するテレメトリを独自に分析するための方法です。このコード サンプルを調整して、データの集計など、エクスポートされたテレメトリで他の処理を実行できます。)

監視対象のアプリが存在していることを想定して説明を始めます。

この例では、ページ ビュー データを使用しますが、同じパターンを簡単に他のデータ型 (カスタム イベントや例外など) に拡張できます。

重要

連続エクスポートは非推奨であり、従来の Application Insights リソースに対してのみサポートされます。 テレメトリをエクスポートするために診断設定を使用するには、ワークスペースベースの Application Insights リソースに移行します。

Application Insights をアプリケーションに追加する

作業を開始するには:

  1. Web ページに Application Insights を設定する

    (この例では、クライアント ブラウザーからのページ ビュー データの処理を取り上げますが、サーバー側の Java または ASP.NET アプリに Application Insights を設定し、要求、依存関係、その他のサーバー テレメトリを処理することもできます。)

  2. アプリを発行して Application Insights のリソースに表示されるテレメトリ データを確認します。

Azure でのストレージの作成

連続エクスポートでは、常に Azure のストレージ アカウントにデータが出力されるため、まずストレージを作成する必要があります。

  1. Azure ポータルで、サブスクリプションのストレージ アカウントを作成します。

    Screenshot of the Azure portal, choose New, Data, Storage then select Classic, Create and provide a Storage name.

  2. コンテナーを作成する

    Screenshot of the new storage, select Containers, then select the Containers tile, and then Add.

  3. ストレージ アクセス キーのコピー

    これは、ストリーム分析サービスへの入力のセットアップのためにすぐに必要になります。

     Screenshot of the storage, open Settings, Keys, and take a copy of the Primary Access Key.

Azure Storage への連続エクスポートの開始

  1. Azure ポータルで、アプリケーション用に作成した Application Insights リソースを参照します。

    SCreenshot of the Azure portal, choose Browse, Application Insights, your application.

  2. 連続エクスポートを作成します。

    Screenshot of Application Insights resource, choose Settings, Continuous Export, then Add.

    以前に作成したストレージ アカウントを選択します。

    Screenshot continuous export then select Add.

    表示するイベントの種類を設定します。

    Screenshot of add continuous export then choose event types.

  3. データを蓄積します。 しばらく待機し、ユーザーにアプリケーションを使用してもらいます。 テレメトリが開始し、統計グラフがメトリックス エクスプローラーに表示され、個々のイベントが診断検索に表示されます。

    また、データはストレージにもエクスポートされます。

  4. エクスポートされたデータを、ポータルまたは Visual Studio で調べます。ポータルの場合は、 [参照] 、ストレージ アカウント、 [コンテナー] の順に選択します。 Visual Studio で、 [表示]、[Cloud Explorer] の順に選びます。[Azure]、[Storage] の順に開きます (このメニュー オプションがない場合は、Azure SDK をインストールする必要があります:[新しいプロジェクト] ダイアログを開き、[Visual C#]、[クラウド]、[Microsoft Azure SDK for .NET の取得] の順に開きます)。

    Screenshot of Visual Studio, open Server Browser, Azure, Storage.

    パス名の共通部分を書き留めます。共通部分はアプリケーションの名前とインストルメンテーション キーから派生します。

イベントが JSON 形式で BLOB ファイルに書き込まれます。 各ファイルに 1 つ以上のイベントが含まれる場合があります。 このため、イベント データを読み取って必要なフィールドをフィルター処理します。 データの処理に関して行えることはありますが、今日の計画は、Stream Analytics を使用してデータを SQL Database に移動することです。 それにより、興味深い多くのクエリを実行しやすくなります。

Azure SQL Database の作成

再度、Azure portal でサブスクリプションから始め、データを書き込むデータベース (および、まだ保有していない場合は新しいサーバー) を作成します。

Screenshot of the Azure portal, create, Data+ storage, and SQL Database.

サーバーに Azure サービスがアクセス可能であることをご確認ください。

Screenshot of SQL servers in the Azure portal and firewall settings.

Azure SQL Database にテーブルを作成する

任意の管理ツールを使って前のセクションで作成したデータベースに接続します。 このチュートリアルでは、 SQL Server Management Tools (SSMS) を使用します。

Screenshot of connect to Azure SQL Database

新しいクエリを作成し、次の T-SQL を実行します。


CREATE TABLE [dbo].[PageViewsTable](
    [pageName] [nvarchar](max) NOT NULL,
    [viewCount] [int] NOT NULL,
    [url] [nvarchar](max) NULL,
    [urlDataPort] [int] NULL,
    [urlDataprotocol] [nvarchar](50) NULL,
    [urlDataHost] [nvarchar](50) NULL,
    [urlDataBase] [nvarchar](50) NULL,
    [urlDataHashTag] [nvarchar](max) NULL,
    [eventTime] [datetime] NOT NULL,
    [isSynthetic] [nvarchar](50) NULL,
    [deviceId] [nvarchar](50) NULL,
    [deviceType] [nvarchar](50) NULL,
    [os] [nvarchar](50) NULL,
    [osVersion] [nvarchar](50) NULL,
    [locale] [nvarchar](50) NULL,
    [userAgent] [nvarchar](max) NULL,
    [browser] [nvarchar](50) NULL,
    [browserVersion] [nvarchar](50) NULL,
    [screenResolution] [nvarchar](50) NULL,
    [sessionId] [nvarchar](max) NULL,
    [sessionIsFirst] [nvarchar](50) NULL,
    [clientIp] [nvarchar](50) NULL,
    [continent] [nvarchar](50) NULL,
    [country] [nvarchar](50) NULL,
    [province] [nvarchar](50) NULL,
    [city] [nvarchar](50) NULL
)

CREATE CLUSTERED INDEX [pvTblIdx] ON [dbo].[PageViewsTable]
(
    [eventTime] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)

Screenshot of create PageViewsTable in SQL Server Management Studio.

このサンプルでは、ページ ビューからデータを使用します。 使用可能なその他のデータを確認するには、JSON 出力を検査し、「 Application Insights エクスポート データ モデル」を参照してください。

Azure Stream Analytics インスタンスの作成

Azure Portal で、Azure Stream Analytics サービスを選び、新しい Stream Analytics ジョブを作成します。

Screenshot shows the Stream analytics job page with the Create button highlighted.

Screenshot of new stream analytics job

新しいジョブが作成されたら、 [リソースに移動] を選びます。

Screenshot shows the Deployment succeeded message and Go to resource button.

新しい入力を追加する

Screenshot shows the Inputs page with the Add button selected.

連続エクスポート BLOB から入力を取るよう設定します。

Screenshot shows the New input window with Input alias, Source, and Storage account drop-down menu options selected.

ここで、ストレージ アカウントからのプライマリ アクセス キーが必要になります。これは前にメモしておいたものです。 ストレージ アカウント キーとしてこれを設定します。

パスのプレフィックス パターンの設定

日付の書式は YYYY-MM-DD (ダッシュ付き) に設定してください。

パスのプレフィックス パターンは、Stream Analytics がストレージ内の入力ファイルを検索する方法を指定します。 連続エクスポートによるデータ格納方法と一致するように設定する必要があります。 次のように設定します。

webapplication27_12345678123412341234123456789abcdef0/PageViews/{date}/{time}

次の点に注意してください。

  • webapplication27 は Application Insights リソースの名前です。すべて小文字で指定します
  • 1234... は Application Insights リソースのインストルメンテーション キーです。ダッシュは削除します
  • PageViews は分析するデータの種類です。 使用可能な種類は、連続エクスポートで設定するフィルターによって異なります。 エクスポートされたデータを調べて、その他の使用可能な種類を確認します。「Application Insights エクスポート データ モデル」をご覧ください。
  • /{date}/{time} はそのまま書き込まれるパターンです。

Application Insights リソースの名前と iKey を取得するには、概要ページの [Essentials] を開くか、[設定] を開きます。

ヒント

入力パスが正しく設定されていることを確認するには、Sample 関数を使用します。 失敗した場合:選択したサンプルの時間範囲でストレージにデータがあることを確認します。 入力定義を編集し、ストレージ アカウント、パスのプレフィックス、日付形式が正しく設定されていることを確認します。

クエリの設定

クエリ セクションを開きます。

既定のクエリを次のもので置き換えます。


    SELECT flat.ArrayValue.name as pageName
    , flat.ArrayValue.count as viewCount
    , flat.ArrayValue.url as url
    , flat.ArrayValue.urlData.port as urlDataPort
    , flat.ArrayValue.urlData.protocol as urlDataprotocol
    , flat.ArrayValue.urlData.host as urlDataHost
    , flat.ArrayValue.urlData.base as urlDataBase
    , flat.ArrayValue.urlData.hashTag as urlDataHashTag
      ,A.context.data.eventTime as eventTime
      ,A.context.data.isSynthetic as isSynthetic
      ,A.context.device.id as deviceId
      ,A.context.device.type as deviceType
      ,A.context.device.os as os
      ,A.context.device.osVersion as osVersion
      ,A.context.device.locale as locale
      ,A.context.device.userAgent as userAgent
      ,A.context.device.browser as browser
      ,A.context.device.browserVersion as browserVersion
      ,A.context.device.screenResolution.value as screenResolution
      ,A.context.session.id as sessionId
      ,A.context.session.isFirst as sessionIsFirst
      ,A.context.location.clientip as clientIp
      ,A.context.location.continent as continent
      ,A.context.location.country as country
      ,A.context.location.province as province
      ,A.context.location.city as city
    INTO
      AIOutput
    FROM AIinput A
    CROSS APPLY GetElements(A.[view]) as flat


最初のいくつかのプロパティはページ ビュー データに固有のプロパティです。 他のテレメトリの種類のエクスポートにはそれぞれ異なるプロパティがあります。 プロパティの種類と値についての詳細なデータ モデル リファレンス

データベースへの出力のセットアップ

SQL を出力として選択します。

Screenshot of stream analytics with Outputs selected.

データベースを指定します。

Screenshot of new output with details of the database.

ウィザードを閉じ、出力がセットアップされたことを示す通知を待機します。

処理の開始

ジョブを操作バーから開始します。

Screenshot of stream analytics with Start selected.

データの処理を今から開始するか、以前のデータを使って開始するかを選択できます。 連続エクスポートの実行を開始してから既に時間が経過している場合は、後者がお勧めです。

数分後、SQL Server Management Tools に戻り、流れているデータを監視します。 たとえば、次のようなクエリを使用します。

SELECT TOP 100 *
FROM [dbo].[PageViewsTable]

次のステップ