451 Unavailable For Legal Reasons

とあるゲームエンジニアのブログです

Application Insightsで本番運用時に気を付けること

Application Insightsとは?

Microsoft Azureのアプリケーション監視サービスです。 azure.microsoft.com

本番運用で考慮すべき「データ速度」

azure.microsoft.com

月間クォータの他にも、データ速度でのスロットルの上限もあります。上限は、Free 価格レベルでは、5 分間の平均が 1 秒あたり 200 データ ポイント、有料レベルでは、1 分間の平均が 1 秒あたり 500 データ ポイントになります。

とあるゲームアプリをApplication Insightsで監視しているのですが、初期にデフォルト設定で本番投入したらスロットルが発動し続けました。

こんなメッセージがAzureポータルに表示され続けます。 f:id:master-0717:20160223125946p:plain

スロットルが発動するということは不要にデータ送信していることになっていてネットワーク帯域がもったいないし、ポータルにすごい頻度でメッセージが表示され続けるのは辛いです。

そこで「Application Insights の価格とクォータの管理」に記載されている下記の2つを実施したところ、スロットルが発動しなくなりました。

記載内容
  • サンプリングの使用。このテクノロジは、メトリックや、検索で関連するアイテム間を移動する機能を損なうことなく、データ レートを削減します。
  • ApplicationInsights.config を編集し、不要なコレクション モジュールを無効にします。たとえば、パフォーマンス カウンターや依存関係のデータが重要ではないと判断した場合などに検討します。
具体的には
  • TelemetryModulesは下記の2つのみに

    • RequestTrackingTelemetryModule
    • ExceptionTrackingTelemetryModule
  • RequestTelemetryによるサンプリングを全リクエストの1%に

本番で設定しているアラート

現状、下記の3項目です。

  • 直近5分以内にレスポンスタイムが3秒以上
  • 直近5分以内にExceptionが30回以上
  • 2つのロケーションからの可用性テスト失敗

f:id:master-0717:20160223130802p:plain

Application InsightsにはProactive Detectionという、機械学習およびデータ マイニングのアルゴリズムを使用して異常パターンを検出してくれるサービスがあるので、レスポンスタイムやException数ぐらいなら監視項目設定の必要が無いかもしれません。

blog.shibayan.jp

Azure App Serviceと組み合わせて使う場合はInstrumentationKeyをWeb.configへ

Azure App ServiceはappSettingsをスロット毎に上書きできるので、InstrumentationKeyをWeb.configへ定義してApplication_Startで設定しておくと便利です。

azure.microsoft.com

protected void Application_Start()
{
  Microsoft.ApplicationInsights.Extensibility.
    TelemetryConfiguration.Active.InstrumentationKey = 
      // - for example -
      WebConfigurationManager.Settings["ikey"];
  //...
まとめ

Application Insights便利ですが、データ送信量を間引くのはconfigファイルやTelemetryConfigurationクラスのプロパティへの設定で簡単に出来てほしいところ。DependencyCollectorなんかも間引ければ本番で使用したいです。

Microsoft Project OxfordのComputer Vision APIを使ってみる

Microsoft Project Oxfordって?

Microsoft Project Oxford Home は、機械学習関連のAPIをいくつか公開しているプロジェクトです。

jp.techcrunch.com

APIへアクセスするには?

プロジェクトサイトの「Get started for free today」リンクを踏むとMicrosoftアカウント*1へのアクセス許可ページに飛ぶので、許可するとアクセスキーが発行できるようになります。

Computer Vision APIを使ってみる

Visual Studio*2でプロジェクトを作成 f:id:master-0717:20160222231603p:plain

f:id:master-0717:20160222231643p:plain

ProjectOxford-ClientSDK/Vision at master · Microsoft/ProjectOxford-ClientSDK · GitHub のNuGetパッケージをインストール

f:id:master-0717:20160222231653p:plain

APIを作成。Streamを引数に渡して分析することも可能です。

「エンジニアなんだからFAXも直せるでしょ」お姉さんの画像を分析してみる。

www.pakutaso.com

結果はこちら*3

f:id:master-0717:20160222235429p:plain

アダルトコンテンツかどうか、顔の位置、性別、年齢(14歳になっちゃってますが)等が返ってきます。

APIの利用料は?

Microsoft Project Oxford Pricing に書いてありますが、現在プレビュー価格で5,000トランザクションまで無料、10トランザクション毎秒を上限に1000トランザクションあたり1.5ドルで使えるようです。

何に使えそう?

自由に画像アップロードできるサービスで公開して良い画像かどうかの判断等に使えそうですね。今後の精度アップやプロパティ追加に期待です。

*1:アカウントを持っていない人は要作成

Microsoft アカウント登録手続き|Microsoft アカウント

*2:Visual Studioを持っていない人は要インストール

Visual Studio Community - Visual Studio

*3:JSONViewを使って表示しています。

JSONView - Chrome Web Store