Azure Webサイトを持っています。この質問のために、ウェブサイトの本番バージョンはexample.com
で実行され、ウェブサイトのテストバージョンはsandbox.example.com
で実行されます。
2つの唯一の違いは、構成が異なることです。
現在、それらは異なるWebサイトで実行されており、gitを介して同じWebサイトを各Azure Webサイトにデプロイしています。
Application Insightsのデータを分離したいのですが。デプロイ後にサンドボックス環境でApplicationInsights.config
ファイルを編集する以外に、誰もが使用する手法またはプロセスはありますか?
または、展開スロットを使用してこれを何らかの方法で処理しますか?
本日、これに関する新しいブログ投稿がありました Application Insights Support for Multiple Environments、Stamps and App Versions 。
テレメトリの宛先は、すべてのテレメトリメッセージとともに送信されるインストルメンテーションキー(iKey)によって決定されます。 Application Insightsポータルでは、同じiKeyを持つ同様のイベントとメトリックが集約され、平均期間、イベント数、ユーザーの合計などのグラフが表示されます。 iKeyはプロジェクトの2つの場所に表示されます。 1つは
ApplicationInsights.config
にあります:<InstrumentationKey>94843456-2345-3456-4567-324562759284</InstrumentationKey>
アプリケーションにWebページがある場合、iKeyはすべてのWebページの先頭にあるスクリプトにも表示されます。通常、
Views\Shared\_Layout.cshtml
などのマスターページで1回だけコード化されます。テレメトリをさまざまなアプリケーションリソースに向けるために、さまざまなiKeyでいくつかのリソースを作成できます。次に、接続サイクル、証明書、サブスクリプションなどの他の構成データとともに、ライフサイクルの各遷移でアプリケーションのiKeyを変更するだけで済みます。
次に、コード、confgなどでこれを行う方法について説明します。
1)
iKey
をWeb.config
のプロパティとして追加します。2)
ApplicationInsights.config
のiKey
を使用する代わりに、コードで設定します。global.asax.cs
内。混乱を避けるために、
<InstrumentationKey>
からApplicationInsights.config
ノードを削除します。3)
instrumentationKey: "@Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey"
を取得するようにWebページを構成します。これは通常View\Shared\_Layout.cshtml
にあるスクリプトです。4)展開プロセス中に、適切な
iKey
構成でWeb.config
を更新することを忘れないでください。ビルドの一部として適切に設定する方法を考案するかもしれませんが、それはあなたに任せます。
この半関連の質問が見つかりました: アプリケーションインサイトを使用して単一のアプリケーションの複数のAzureサブスクリプションをサポートする方法 これはクラウドサービスで使用するためのものであり、機能します!
Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = ConfigurationManager.AppSettings["appInsightsKey"];
Unityのregistertypesメソッドでこれを実行しましたが、そこで機能します。
Webサイト用のAzureポータルの[構成]タブには、[アプリの設定]というセクションがあります。さまざまな構成設定をここに配置できます。公開時に、Azureはこれらの設定をweb.configに挿入します。
次に、通常どおりWebConfigurationManager.AppSettingsを使用すると、挿入された値がプルされます。