Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Set Up Application Insights from an Release Pipeline/ARM Templates

We have an Azure DevOps release pipeline, which sets up all of our Azure resources in a location. I can create everything successfully with ARM templates, but I'm struggling to link the App Service with the App Insights resource.

If I were doing it manually, I'd click a "Turn on site extension" button in the AppInsights blade of the App Service (under the heading "Enable Application Insights through site extension without redeploying your code").

I've tried adding an "Azure App Service Manage" step to my release pipeline, set to install the "Application Insights extension for Azure App Service" extension:

Screenshot of Release Pipeline Step for Installing AppInsights

In addition, I've added an "Azure App Service Manage" step to my release pipeline, set to "Enable Continuous Monitoring":

Screenshot of Release Pipeline Step for Enabling Continuous Monitoring

But the result is still that AppInsights is connected, but the extension is not installed:

Screenshot of Azure Portal showing extension is not turned on

Is there any way I can do this automatically? Either via an ARM template, a PowerShell script, or something else?

Edit: In the "Extensions" blade, I can see "Application Insights extension for Azure App Service" (v2.6.5) and "ASP.NET Core Logging Extensions" (v2.2.0), but I'm still asked to "Turn on site extension" in the "Aplication Insights" blade.

like image 975
Paul Avatar asked Feb 20 '19 08:02

Paul


2 Answers

In an ARM-template you can do:

{
  "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"
        }
      ]
    }
  }
}

Refer to documentation at https://docs.microsoft.com/en-us/azure/azure-monitor/app/azure-web-apps#automate-monitoring

like image 112
Markus Avatar answered Oct 04 '22 19:10

Markus


i think you would need to do something like that:

    {
        "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": {
                }
            }
        ]
    }

I've never actually tried this, but looks correct, link to the example I've found: https://github.com/tomasr/webapp-appinsights/blob/master/WebSite.json

like image 31
4c74356b41 Avatar answered Oct 04 '22 18:10

4c74356b41