Insightsは、Webアプリケーションのパフォーマンス管理のためのAzureのサービスです。さまざまなアプリケーションと統合して、パフォーマンス状況の集計や異常の検知などを一括で管理することができる横断的なソリューションとなっています。Insightsを統合し、さまざまなデータの収集と確認方法やアラームの通知方法などについて説明していきます。Insightsは、一般的にAPM(アプリケーション性能管理)ツールと呼ばれる製品のひとつです。APMツールはログの収集、アプリケーションの応答時間やレスポンス状態の監視を通してアプリケーションの稼働状況の管理を行います。稼働状況のデータを収集することで、アプリケーションに異常が発生した場合に素早く通知することができたり、あるいは事前に異常の発生を予測したりすることが可能となります。InsightsはAzureのサービスラインナップの一つですが、パフォーマンスの監視対象となるアプリケーションはAzureプラットフォーム上のものでなくても構いません。Core、Node.js、Javaといったプラットフォームで稼働するアプリケーションに対応しています。CenterやHockeyAppといったモバイルアプリの開発プラットフォームと統合することで、モバイルアプリのパフォーマンスも管理できるようになっています。Insightsが管理できるアプリケーションの情報には以下のものが含まれます。Insightsに送信し、Azureポータル上で確認することができるようになります。Insightsに送信します。Insightsでは送信するデータのことを「テレメトリ」と呼びます。Insights内で種類によって分類され、Azureポータル上で確認することができます。ほかにも、メール送信、Webhook(HTTPベースのデータ送信)やPowerBI(Microsoftが提供するのデータ分析・視覚化ツール)等へ連携して確認することもできます。Insightsに送信されてAzureポータル上で監視ができることを確認していきます。Functionsでアプリケーションを作成します。Insightsを統合し、テレメトリを送信するコードを実装していきます。Insightsのダッシュボード上で種類別に分類されることを確認します。テレメトリの中にはエラーとして検知されるものも含めます。Insightsがエラーを検知したら、アラートをメールで開発者に送信する仕組みまで作成していきます。App)を作成していきます。App」を選択します。Marketplace」と表示されている検索フォームに「function」と入力することで選択することができます。Appの作成画面に移ったら、必須項目を入力していきます。「アプリ名」には任意の名前を入力してください。「サブスクリプション」はお持ちのサブスクリプションを選択します。「リソースグループ」と「Storage」は既存のものがあれば利用しても構いませんし、新規作成しても構いません。「OS」はWindowsを選択します。「ホスティングプラン」は従量課金プランを選択します(使用量に応じて課金が発生しますのでご注意下さい)。「場所」は東日本を選択します。Insights」の項目があるのでオンを選択します。Asia(東南アジア)を選択します。Appの作成を開始します。待つと作成が完了します。Insightsも構成されます。Insightsのリソースが表示されているかと思います。Appで関数を作成・実行してテレメトリを送信してみましょう。App内に関数を作成して実際にテレメトリを送信してみましょう。Appを展開し、「関数」メニューの右側の「+」を選択して関数を新規作成します。今回はタイマー起動で言語はJavaScriptの関数を作成します。「この関数を作成する」ボタンをクリックすると「TimerTriggerJS1」という名前の関数が新規作成されます。今回は関数を手動でのみ実行させたいため、「TimerTriggerJS1」を展開して「管理」画面の「関数の状態」を無効にします。この状態で「TimerTriggerJS1」に戻り、「実行」ボタンを押して関数を実行してみましょう。completed」と表示されれば実行成功です。Insightsの画面に移動してみましょう。Insightsのリソースを選択すると、ダッシュボードが表示されます。Insightsのダッシュボード画面ダッシュボード画面では、さまざまな種類のテレメトリの情報を確認することができます。「正常性」の項目では、いくつかのグラフが表示されています。REQUESTS」にデータが存在しています。REQUESTS」はサーバへのリクエスト数が表示されます。Appの場合は関数の実行回数が表示されます。上の図の筆者の環境では、関数を2回実行したため計2回カウントされています。Time」つまりサーバの応答時間を表しています。平均応答時間がサマリとして表示されています。このようにダッシュボードではテレメトリの大まかな情報を確認することができます。Insightsの基本的な使い方になります。テレメトリの詳細を確認してみようつづいて、関数から送信されたテレメトリの詳細な情報を確認していきましょう。Insightsのダッシュボード画面の上部にある「検索」を選択します。Insightsに送信されたテレメトリが時系列に表示された画面に遷移します。テレメトリの検索画面この画面では、7種類のテレメトリの詳細情報について時系列に確認することができます。テレメトリの種類、時刻やメッセージに含まれるキーワードなどで検索対象となるテレメトリを絞り込んで検索することもできます。各テレメトリはそれぞれ、以下の用途で分類されています。Appの関数の実行内容などが表示される例外アプリケーションで発生した例外のうち、キャッチされていない例外が表示される表示WebブラウザなどのWebクライアントから送信されるテレメトリが表示される。Appの関数を修正して異なるテレメトリを送信できるようにしてみましょう。InsightsのNode.js向けSDKをインストールします。Appに対してNode.jsのライブラリをインストールするには、KuduというAzureに付属するツール上から、Node.jsのパッケージマネージャであるnpmコマンドを実行します。Appの名前>.scm.azurewebsites.net」でアクセスすることができます(筆者の環境では「https://app-insights-sample.scm.azurewebsites.net」となります)。console」→「PowerShell」を選択します。するとカレントディレクトリの一覧と、その下にPowerShellのコンソールが表示された画面に移ります。site\wwwroot\TimerTriggerJS1」となります)。initコマンドを実行します。このコマンドにより、このディレクトリでnpmを使用するにあたっての初期化処理が実行されます。コマンドを実行すると、以下のリストのように対話形式でいくつかの項目について入力を求められますので、状況に応じて適切な内容を入力していきます。今回はサンプルアプリのため、「name」以外は空白のままとしています。「name」については大文字が許容されないため、関数名を小文字に置き換えた内容で入力しています。」をEnterキーを押下してしばらくすると、ディレクトリ上に「package.json」というファイルが作成されます(PowerShellコンソール上部のディレクトリの一覧から確認できます)。initコマンドは完了です。」でEnterキー押下後にコンソールがプロンプトを返さずに止まってしまう場合がありますが、package.jsonが作成されていればコマンド自体は完了しているので、一度ブラウザを更新し再度このディレクトリまで移動するようにしてください。InsightsのSDKをインストールします。以下のコマンドを実行します。install」に続きインストールしたいライブラリの名前を指定します。今回は「applicationinsights」がインストール対象のライブラリ名です。「--save」は、インストールしたライブラリをディスクに保存して以降もライブラリを使用できるようにするオプションです。コマンドを実行し、成功するとディレクトリ上に/node_modulesというディレクトリが作成されます。node_modulesディレクトリには以下の図のように/applicationinsightsと依存するライブラリが存在しているか確認してください。InsightsのSDKを使用する準備が整いました。再度関数に戻ってさまざまなテレメトリを送信してみましょう。Appに戻り、TimerTriggerJS1関数を修正してさまざまなテレメトリを送信してみましょう。関数を以下のリストのように修正します。InsightsのSDKライブラリをインポート、セットアップするコードを追加します(1)。このオブジェクトからクライアントオブジェクトを生成します(2)。クライアントオブジェクトには、各テレメトリの送信に対応したメソッドが用意されています(3)。関数を「保存して実行」してみましょう。Insights上でテレメトリを確認することができます。以下の図のように、異なる種類のテレメトリとしてデータが送信されているかと思います。Insightsからアラートを送信することができます。アラートはメールやWebhookによって送信することができます。ここではメールでサーバの例外発生を通知するアラートを作成してみます。Insightsを表示し、メニューから「警告」を選択し、「メトリックアラートの追加」を選択し「規則の追加」画面に遷移します。「名前」にはアラートの名前を入力します。exceptions」を選択します。アラートの追加(名前の入力、メトリックの選択)次に「条件」、「しきい値」、「期間」を指定していきます。これらを組み合わせてアラートを通知するルールとしていきます。今回は「ある5分間のうちに例外が1回でも発生したら」アラートとするように指定しています。最後に通知先の設定をします。今回は自分1人に対してのみメールを送信したいので、「追加の管理者メール」に自身の有効なメールアドレスを入力します。アラートの追加(条件の指定、通知先の設定)「OK」ボタンを選択して設定を保存するとアラートが有効になります。Appに戻り、先ほど修正した内容で関数を「実行」ボタンから実行してみましょう。Insightsから届きます。Insightsの画面が表示されるので、ここから例外について調査を開始することができるようになっています。5分以上経過すると、次はアラート解消のメールが届きます。Insightsからのアラート解消通知メールこれは、先ほどの関数手動実行による例外発生からの5分間で新たに例外が発生していないため、アラートの発生条件から外れたこと表しています。Insightsの使い方について説明しました。Insightsの適用範囲を広めていくことをおすすめします。DB」を使ったNoSQLデータベースの使い方について紹介します。著/山田祥寛監修<WINGSプロジェクトについて>テクニカル執筆プロジェクト(代表山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・雑誌/Web記事の執筆、講演等を幅広く手がける。共通点は○○だったAI時代に「必要とされる人材」とは??」4月1日より...71%の人が仕事を辞めたいと思った経験あり。Azure※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。システムやソフトウェアの開発に携わるエンジニアに向けた最新情報など仕事に役立つ話題などを提供していきます。Corporation。