チュートリアル:Azure Monitor ログを使用して Service Fabric で Windows コンテナーを監視する

これはチュートリアルの第 3 部です。Service Fabric で調整された Windows コンテナーを監視するように Azure Monitor ログを構成する手順について説明します。

このチュートリアルでは、以下の内容を学習します。

  • Service Fabric クラスターの Azure Monitor ログを構成する
  • コンテナーとノードのログの表示とクエリに Log Analytics ワークスペースを使用する
  • Log Analytics エージェントを構成してコンテナーとノード メトリックを選択する

注意

この記事は最近、Log Analytics ではなく Azure Monitor ログという用語を使うように更新されました。 ログ データは引き続き Log Analytics ワークスペースに格納され、同じ Log Analytics サービスによって収集されて分析されます。 Azure Monitor のログの役割をより適切に反映させるために、用語を更新しています。 詳しくは、Azure Monitor の用語の変更に関するページをご覧ください。

前提条件

このチュートリアルを始める前に、次の準備が必要です。

Resource Manager テンプレートでクラスターを使用して Azure Monitor ログを設定する

このチュートリアルの第 1 部で提供されたテンプレートを使用した場合、汎用の Service Fabric Azure Resource Manager テンプレートに次の追加を行う必要があります。 Azure Monitor ログを使用したコンテナーの監視を設定するために独自のクラスターを用意した場合:

  • Resource Manager テンプレートに次の変更を加えます。
  • PowerShell を使用してデプロイし、テンプレートをデプロイしてクラスターをアップグレードします。 Azure Resource Manager はリソースが存在することを認識しているので、アップグレードとして展開されます。

クラスター テンプレートに Azure Monitor ログを追加する

template.json に次の変更を加えます。

  1. Log Analytics ワークスペースの場所と名前を parameters セクションに追加します。

    "omsWorkspacename": {
      "type": "string",
      "defaultValue": "[toLower(concat('sf',uniqueString(resourceGroup().id)))]",
      "metadata": {
        "description": "Name of your Log Analytics Workspace"
      }
    },
    "omsRegion": {
      "type": "string",
      "defaultValue": "East US",
      "allowedValues": [
        "West Europe",
        "East US",
        "Southeast Asia"
      ],
      "metadata": {
        "description": "Specify the Azure Region for your Log Analytics workspace"
      }
    }
    

    いずれかに使用した値を変更するには、template.parameters.json に同じパラメーターを追加して、そのパラメーターに使用されている値を変更します。

  2. ソリューション名とソリューションを variables に追加します。

    "omsSolutionName": "[Concat('ServiceFabric', '(', parameters('omsWorkspacename'), ')')]",
    "omsSolution": "ServiceFabric"
    
  3. 仮想マシン拡張機能として Microsoft Monitoring Agent を追加します。 仮想マシン スケール セット リソース resources > "apiVersion": "[variables('vmssApiVersion')]" を見つけます。 properties > virtualMachineProfile > extensionProfile > extensions 以下の ServiceFabricNode 拡張機能以下に次の拡張機能の説明を追加します。

    {
        "name": "[concat(variables('vmNodeType0Name'),'OMS')]",
        "properties": {
            "publisher": "Microsoft.EnterpriseCloud.Monitoring",
            "type": "MicrosoftMonitoringAgent",
            "typeHandlerVersion": "1.0",
            "autoUpgradeMinorVersion": true,
            "settings": {
                "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')), '2015-11-01-preview').customerId]"
            },
            "protectedSettings": {
                "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')),'2015-11-01-preview').primarySharedKey]"
            }
        }
    },
    
  4. Log Analytics ワークスペースを個別のリソースとして追加します。 resources で、仮想マシン スケール セット リソースの後に次を追加します。

    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[parameters('omsWorkspacename')]",
        "type": "Microsoft.OperationalInsights/workspaces",
        "properties": {
            "sku": {
                "name": "Free"
            }
        },
        "resources": [
            {
                "apiVersion": "2015-11-01-preview",
                "name": "[concat(variables('applicationDiagnosticsStorageAccountName'),parameters('omsWorkspacename'))]",
                "type": "storageinsightconfigs",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]"
                ],
                "properties": {
                    "containers": [ ],
                    "tables": [
                        "WADServiceFabric*EventTable",
                        "WADWindowsEventLogsTable",
                        "WADETWEventTable"
                    ],
                    "storageAccount": {
                        "id": "[resourceId('Microsoft.Storage/storageaccounts/', variables('applicationDiagnosticsStorageAccountName'))]",
                        "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-06-15').key1]"
                    }
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "name": "System",
                "type": "datasources",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsEvent",
                "properties": {
                    "eventLogName": "System",
                    "eventTypes": [
                        {
                            "eventType": "Error"
                        },
                        {
                            "eventType": "Warning"
                        },
                        {
                            "eventType": "Information"
                        }
                    ]
                }
            }
        ]
    },
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[variables('omsSolutionName')]",
        "type": "Microsoft.OperationsManagement/solutions",
        "dependsOn": [
            "[concat('Microsoft.OperationalInsights/workspaces/', parameters('OMSWorkspacename'))]"
        ],
        "properties": {
            "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        },
        "plan": {
            "name": "[variables('omsSolutionName')]",
            "publisher": "Microsoft",
            "product": "[Concat('OMSGallery/', variables('omsSolution'))]",
            "promotionCode": ""
        }
    },
    

サンプル テンプレートはこちらです (このチュートリアルの第 1 部で使用されました)。これらの変更がすべて加えられており、必要に応じて参照できます。 これらの変更で、Log Analytics ワークスペースがリソース グループに追加されます。 Microsoft Azure Diagnostics エージェントで構成されたストレージ テーブルから、Service Fabric プラットフォーム イベントを選択するようにワークスペースが構成されます。 Log Analytics エージェント (Microsoft Monitoring Agent) も、仮想マシン拡張機能としてクラスターの各ノードに追加されます。つまり、クラスターを拡大縮小すると、各マシンのエージェントは自動的に構成され、同じワークスペースに接続されます。

新しい変更を加えたテンプレートをデプロイして、現在のクラスターをアップグレードします。 処理が完了すると、リソース グループにログ分析リソースが表示されます。 クラスターの準備ができたら、コンテナー化されたアプリケーションをデプロイします。 次の手順では、コンテナーの監視を設定します。

Log Analytics ワークスペースにコンテナー監視ソリューションを追加する

ワークスペースでコンテナー ソリューションを設定するには、コンテナー監視ソリューション を検索し、([監視 + 管理] カテゴリの下に) コンテナー リソースを作成します。

コンテナー ソリューションの追加

"Log Analytics ワークスペース" の入力を求められたら、リソース グループに作成したワークスペースを選択し、 [作成] を選択します。 "コンテナー監視ソリューション" がワークスペースに追加され、テンプレートによってデプロイされた Log Analytics エージェントが起動され、Docker ログと統計情報の収集が開始されます。

リソース グループ に戻ると、新しく追加された監視ソリューションが表示されます。 それを選択すると、ランディング ページに実行中のコンテナー イメージ数が表示されます。

チュートリアルの 第 2 部の fabrikam コンテナーのインスタンスが 5 個実行されていたことがわかります

コンテナー ソリューションのランディング ページ

コンテナー監視ソリューション を選択すると、詳細なダッシュボードが表示されます。ここでは、複数のパネルをスクロールしたり、Azure Monitor ログでクエリを実行したりすることができます。

エージェントが Docker ログを選択しているので、既定で stdoutstderr が表示されます。 水平方向にスクロールすると、コンテナー イメージのインベントリ、状態、メトリック、さらに役立つデータを入手するために実行できるサンプル クエリが表示されます。

コンテナー ソリューションのダッシュボード

これらのパネルのいずれかをクリックすると、表示値を生成する Kusto クエリが表示されます。 このクエリを * に変更すると、選択されている全種類のログが表示されます。 ここから、コンテナーのパフォーマンスやログのクエリやフィルターを実行したり、Service Fabric プラットフォームのイベントを確認したりすることができます。 また、エージェントは、各ノードから常にハートビートを発しているので、クラスターの構成が変わった場合に、すべてのコンピューターからデータが収集されていることをハートビートによって確認することができます。

コンテナーのクエリ

パフォーマンス カウンターを選択するように Log Analytics エージェントを構成する

Log Analytics エージェントを使用するもう 1 つの利点として、Azure Diagnostics エージェントを構成し、毎回 Resource Manager テンプレート ベースのアップグレードを実行するのではなく、ログ分析の UI 操作で選択可能なパフォーマンス カウンターを変更できる点があります。 これを行うには、コンテナー監視 (または Service Fabric) ソリューションのランディング ページで [OMS ワークスペース] を選択します。

Log Analytics ワークスペースに移動します。ここでは、ソリューションの確認、カスタム ダッシュボードの作成、Log Analytics エージェントの構成を行うことができます。

  • [詳細設定] メニューを開くには、 [詳細設定] を選択します。
  • [接続されたソース] > [Windows サーバー] の順に選択し、"5 台の Windows コンピューターが接続されています" と表示されることを確認します。
  • [データ] > [Windows パフォーマンス カウンター] の順に選択し、新しいパフォーマンス カウンターを検索して追加します。 この画面には、収集できるパフォーマンス カウンターの Azure Monitor ログのレコメンデーション一覧と、他のカウンターを検索するオプションが表示されます。 Processor(_Total)% Processor Time カウンターと Memory(*)\Available MBytes カウンターが収集されていることを確認します。

数分後にコンテナー監視ソリューションを 更新 すると、コンピューターのパフォーマンス データが表示されるようになります。 このデータから、リソースの使用状況を把握することができます。 また、これらのメトリックを使用して、クラスターの拡大縮小に関する適切な判断を下すことができます。また、クラスターが期待どおりに負荷を分散しているかどうかを確認することができます。

注: これらのメトリックを使用するには、時間フィルターが適切に設定されていることを確認します。

パフォーマンス カウンター 2

次のステップ

このチュートリアルでは、次の作業を行う方法を学びました。

  • Service Fabric クラスターの Azure Monitor ログを構成する
  • コンテナーとノードのログの表示とクエリに Log Analytics ワークスペースを使用する
  • Log Analytics エージェントを構成してコンテナーとノード メトリックを選択する

コンテナー化されたアプリケーションの監視を構成したので、以下を試してみましょう。

  • このチュートリアルと同様の手順で、Linux クラスター用に Azure Monitor ログを構成する。 このテンプレートを参照して、Resource Manager テンプレートを変更してみましょう。
  • Azure Monitor ログを構成して、検出と診断に役立つ自動アラートを設定する。
  • Service Fabric の推奨されるパフォーマンス カウンターの一覧を参照して、実際のクラスターに合わせて構成する。
  • Azure Monitor ログの一部として提供されているログ検索とクエリ機能をよく理解します。