7
votes

Comment configurer Application Insights à partir d'un pipeline de versions / modèles ARM

Nous avons un pipeline de versions Azure DevOps, qui configure toutes nos ressources Azure dans un emplacement. Je peux tout créer avec succès avec les modèles ARM, mais j'ai du mal à associer l'App Service à la ressource App Insights.

Si je le faisais manuellement, je cliquais sur un bouton "Activer l'extension de site" dans le panneau AppInsights de l'App Service (sous le titre "Activer Application Insights via l'extension de site sans redéployer votre code").

J'ai essayé d'ajouter une étape "Azure App Service Manage" à mon pipeline de versions, configurée pour installer l'extension "Application Insights extension for Azure App Service":

 Capture d'écran de l'étape du pipeline de publication pour l'installation d'AppInsights

De plus, j'ai ajouté une étape «Azure App Service Manage» à mon pipeline de versions, définie sur «Activer la surveillance continue»:

 Capture d'écran de l'étape du pipeline de publication pour l'activation de la surveillance continue

Mais le résultat est toujours qu'AppInsights est connecté, mais l'extension n'est pas installée:

 Capture d'écran du portail Azure montrant que l'extension n'est pas activée

Est-ce que je peux faire cela automatiquement? Soit via un modèle ARM, un script PowerShell ou autre chose?

Modifier: Dans le panneau "Extensions", je peux voir "Extension Application Insights pour Azure App Service" (v2.6.5) et "Extensions de journalisation ASP.NET Core" (v2.2.0) , mais je suis toujours invité à "Activer l'extension de site" dans le panneau "Aplication Insights".


0 commentaires

3 Réponses :


2
votes

Je pense que vous auriez besoin de faire quelque chose comme ça:

    {
        "apiVersion": "2015-08-01",
        "name": "[parameters('webSiteName')]",
        "type": "Microsoft.Web/sites",
        "location": "[resourceGroup().location]",
        "tags": {
            "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource",
            "displayName": "Website"
        },
        "dependsOn": [
            "[resourceId('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
            "[resourceId('microsoft.insights/components/', parameters('appInsightsName'))]"
        ],
        "properties": {
            "name": "[parameters('webSiteName')]",
            "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
        },
        "resources": [
            {
                "apiVersion": "2015-08-01",
                "name": "appsettings",
                "type": "config",
                "dependsOn": [
                    "[resourceId('Microsoft.Web/Sites', parameters('webSiteName'))]",
                    "Microsoft.ApplicationInsights.AzureWebSites"
                ],
                "properties": {
                    "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(concat('microsoft.insights/components/', parameters('appInsightsName'))).InstrumentationKey]"
                }
            },
            {
                // this bit installs application insights extension
                "apiVersion": "2015-08-01",
                "name": "Microsoft.ApplicationInsights.AzureWebSites",
                "type": "siteextensions",
                "dependsOn": [
                    "[resourceId('Microsoft.Web/Sites', parameters('webSiteName'))]"
                ],
                "properties": {
                }
            }
        ]
    }

Je n'ai jamais vraiment essayé cela, mais semble correct, lien vers l'exemple que j'ai trouvé: https://github.com/tomasr/webapp-appinsights/blob/master/WebSite. json


1 commentaires

J'ai essayé ceci, et je peux voir sous le panneau "Extensions" de l'App Service "Extension Application Insights pour Azure App Service" (v 2.6.5), mais le panneau App Insights dit toujours la même chose: "Il y a une mise à jour disponible pour l'extension de site Application Insights qui offre une meilleure expérience ", avec un bouton pour" Activer l'extension de site "



9
votes

Dans un modèle ARM, vous pouvez faire:

    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2018-02-01",
      "name": "[variables('web_app_service_name')]",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('plan_name'))]",
        "[resourceId('Microsoft.Insights/components', variables('app_insights_name'))]"
      ],
      "kind": "app",
      "properties": {
        "siteConfig": {
          "appSettings": [
            {
              "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
              "value": "[reference(variables('app_insights_name'), '2015-05-01').InstrumentationKey]"
            },
            {
              "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
              "value": "~2"
            },
            {
              "name": "XDT_MicrosoftApplicationInsights_Mode",
              "value": "recommended"
            },
            {
              "name": "InstrumentationEngine_EXTENSION_VERSION",
              "value": "~1"
            },
            {
              "name": "DiagnosticServices_EXTENSION_VERSION",
              "value": "~3"
            },
            {
              "name": "APPINSIGHTS_PROFILERFEATURE_VERSION",
              "value": "1.0.0"
            },
            {
              "name": "XDT_MicrosoftApplicationInsights_BaseExtensions",
              "value": "~1"
            }
          ]
        }
      }
    }

Consultez la documentation à https://docs.microsoft.com/en-us/azure/azure-monitor/app/azure-web-apps#automate- surveillance


2 commentaires

J'ai eu le même problème avec AppInsights pas automatiquement activé par ARM. J'ai d'abord ajouté ApplicationInsightsAgent_EXTENSION_VERSION = ~ 2. En suivant le guide de dépannage ci-dessus, j'ai trouvé IKeyExists = false. La définition de APPINSIGHTS_INSTRUMENTATIONKEY a corrigé IKeyExists = true. Ces deux changements ont suffi à résoudre mon problème.


Merci pour ça!



1
votes

Assurez-vous que la clé des paramètres de votre application est APPINSIGHTS_INSTRUMENTATIONKEY et non ApplicationInsights: InstrumentationKey . Quelque part dans la documentation MS, cela donne l'impression que vous pouvez utiliser l'un ou l'autre. En fait, ce n'est pas le cas, dans Azure, vous devez utiliser l'ancien, sinon Application Insights ne sera pas activé pour les informations côté serveur.


0 commentaires