{"id":5871,"date":"2015-09-16T10:54:23","date_gmt":"2015-09-16T10:54:23","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/webdev\/2015\/09\/16\/deploy-to-azure-from-github-with-application-insights\/"},"modified":"2023-09-19T11:12:48","modified_gmt":"2023-09-19T18:12:48","slug":"deploy-to-azure-from-github-with-application-insights","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/deploy-to-azure-from-github-with-application-insights\/","title":{"rendered":"Deploy to Azure from GitHub with Application Insights"},"content":{"rendered":"<p>Browsing GitHub the other day I found an interesting button in README: <strong>Deploy to Azure<\/strong>. This button intrigued me to say the least. With one click I can create my own instance of that web app and try it out. Isn\u2019t it great? And it\u2019s very easy to insert into your own GitHub repo. But every app should include monitoring! So I\u2019ll show you how to extend the button to create a new Application Insights resource. Anyone who deploys your app also gets their own web app monitor that shows the performance and usage of their instance of the app.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/3264.image_thumb_0CE15687.png\"><img decoding=\"async\" title=\"image\" style=\"border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/3264.image_thumb_0CE15687.png\" width=\"644\" height=\"263\" \/><\/a><\/p>\n<h2>Just a button<\/h2>\n<p>There is a nice blog post on <a href=\"http:\/\/azure.microsoft.com\/blog\/deploy-to-azure-button-for-azure-websites-2\/\" target=\"_blank\" rel=\"noopener\">how to implement this button<\/a> for your project. It is very straightforward. All you have to do is to insert this line of code into <code>Readme.md<\/code>:<\/p>\n<div id=\"codeSnippetWrapper\">\n<div id=\"codeSnippet\">\n<pre><span id=\"lnum1\" style=\"color: #606060\">   1:<\/span> [![Deploy to Azure](http:<span style=\"color: #008000\">\/\/azuredeploy.net\/deploybutton.png)](https:\/\/azuredeploy.net\/) <\/span><\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<p>There are some gotchas:<\/p>\n<ol>\n<li>Your repository should be public. <\/li>\n<li>If your application is .NET and require compilation, the solution should compile in a Visual Studio without extra manual configuration. <\/li>\n<li>For application with NuGet dependencies you have to enable <a href=\"http:\/\/docs.nuget.org\/consume\/package-restore\" target=\"_blank\" rel=\"noopener\">NuGet restore<\/a>.<\/li>\n<li>Your readers need an Azure subscription.<\/li>\n<\/ol>\n<p>When a reader clicks <strong>Deploy to Azure <\/strong>nice deployment wizard will help them to deploy the application from GitHub to Azure.<\/p>\n<h2>Application Example<\/h2>\n<p>To demonstrate the power of the <strong>Deploy to Azure <\/strong>feature, I\u2019ve implemented a simple private NuGet feed project following instructions from <a href=\"https:\/\/docs.nuget.org\/create\/hosting-your-own-nuget-feeds\" target=\"_blank\" rel=\"noopener\">docs.nuget.org<\/a>. Here is a resulting application: <a title=\"https:\/\/github.com\/SergeyKanzhelev\/PrivateFeed\" href=\"https:\/\/github.com\/SergeyKanzhelev\/PrivateFeed\">https:\/\/github.com\/SergeyKanzhelev\/PrivateFeed<\/a>. <\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/3324.image_thumb_268DC1CE.png\"><img decoding=\"async\" title=\"image\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/3324.image_thumb_268DC1CE.png\" width=\"542\" height=\"484\" \/><\/a><\/p>\n<p>Now if you need a share your test packages with somebody it is very easy to do:<\/p>\n<ol>\n<li>Deploy this repository to Azure using D<strong>eploy to Azure <\/strong>button <\/li>\n<li>Open <a href=\"https:\/\/github.com\/projectkudu\/kudu\" target=\"_blank\" rel=\"noopener\">KuDu<\/a> console at <em>http:\/\/&lt;your site name&gt;.scm.azurewebsites.net<\/em> <\/li>\n<li>Go to <em>Debug Console<\/em> &gt; <em>CMD<\/em> <\/li>\n<li>Use command <code>cd sitewwwrootapp_data<\/code> to open <code>App_Data<\/code> folder <\/li>\n<li>Drag and drop your <code>*nupkg<\/code> files to the folder <\/li>\n<li>Use <em>http:\/\/&lt;your site name&gt;.azurewebsites.net\/nuget<\/em> as a nuget feed <\/li>\n<\/ol>\n<p>If you already have your Azure subscription it will take you a minute to set up a private NuGet feed now.<\/p>\n<h2>Template customization<\/h2>\n<p>Once you have deployment set up you can start customizing it. All template customization is done by creating new file in your repository called <code>azuredeploy.json<\/code>. <a href=\"https:\/\/elliotthamai.wordpress.com\/2014\/11\/15\/using-custom-arm-templates-with-the-deploy-to-azure-button\/\" target=\"_blank\" rel=\"noopener\">This blog post<\/a> explains how basic template looks like and how customization works.<\/p>\n<p>For private NuGet feed it is important to set up a private key for packages publishing from command line. Following instructions from the blog post you need to add new parameter for your template:<\/p>\n<div id=\"codeSnippetWrapper\">\n<div id=\"codeSnippet\">\n<pre><span id=\"lnum1\" style=\"color: #606060\">   1:<\/span> <span style=\"color: #006080\">&quot;NuGetApiKey&quot;<\/span>: {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum2\" style=\"color: #606060\">   2:<\/span>   <span style=\"color: #006080\">&quot;type&quot;<\/span>: <span style=\"color: #006080\">&quot;string&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum3\" style=\"color: #606060\">   3:<\/span>   <span style=\"color: #006080\">&quot;defaultValue&quot;<\/span>: <span style=\"color: #006080\">&quot;{7F2C2BC0-CBEE-41B1-9963-9C4F164CE8C9}&quot;<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum4\" style=\"color: #606060\">   4:<\/span> },<\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<p>And than use this parameter to set websites settings:<\/p>\n<div id=\"codeSnippetWrapper\">\n<div id=\"codeSnippet\">\n<pre><span id=\"lnum1\" style=\"color: #606060\">   1:<\/span> <span style=\"color: #006080\">&quot;resources&quot;<\/span>: [<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum2\" style=\"color: #606060\">   2:<\/span>   {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum3\" style=\"color: #606060\">   3:<\/span>     <span style=\"color: #006080\">&quot;apiVersion&quot;<\/span>: <span style=\"color: #006080\">&quot;2014-04-01&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum4\" style=\"color: #606060\">   4:<\/span>     <span style=\"color: #006080\">&quot;type&quot;<\/span>: <span style=\"color: #006080\">&quot;config&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum5\" style=\"color: #606060\">   5:<\/span>     <span style=\"color: #006080\">&quot;name&quot;<\/span>: <span style=\"color: #006080\">&quot;web&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum6\" style=\"color: #606060\">   6:<\/span>     <span style=\"color: #006080\">&quot;dependsOn&quot;<\/span>: [<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum7\" style=\"color: #606060\">   7:<\/span>       <span style=\"color: #006080\">&quot;[concat('Microsoft.Web\/Sites\/', parameters('siteName'))]&quot;<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum8\" style=\"color: #606060\">   8:<\/span>     ],<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum9\" style=\"color: #606060\">   9:<\/span>     <span style=\"color: #006080\">&quot;properties&quot;<\/span>: {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum10\" style=\"color: #606060\">  10:<\/span>       <span style=\"color: #006080\">&quot;appSettings&quot;<\/span>: [<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum11\" style=\"color: #606060\">  11:<\/span>         {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum12\" style=\"color: #606060\">  12:<\/span>           <span style=\"color: #006080\">&quot;name&quot;<\/span>: <span style=\"color: #006080\">&quot;apiKey&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum13\" style=\"color: #606060\">  13:<\/span>           <span style=\"color: #006080\">&quot;value&quot;<\/span>: <span style=\"color: #006080\">&quot;[parameters('NuGetApiKey')]&quot;<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum14\" style=\"color: #606060\">  14:<\/span>         }<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum15\" style=\"color: #606060\">  15:<\/span>       ]<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum16\" style=\"color: #606060\">  16:<\/span>     }<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum17\" style=\"color: #606060\">  17:<\/span>   },<\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<p>Now you\u2019ll have this setting set for your application:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/16\/2018\/10\/2844.image_75E36F00.png\"><img decoding=\"async\" title=\"image\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/7651.image_thumb_3286BDC5.png\" width=\"644\" height=\"274\" \/><\/a><\/p>\n<h2>Monitoring for your application<\/h2>\n<p>Every application needs monitoring. <a href=\"https:\/\/azure.microsoft.com\/documentation\/articles\/app-insights-get-started\/\" target=\"_blank\" rel=\"noopener\">Application Insights<\/a> provides you visibility into application performance and reliability. Since Application Insights is part of Azure, it is very easy to set it up and configure monitoring for your application using a deployment template. All you need is:<\/p>\n<ol>\n<li>Create Application Insights resource in Azure<\/li>\n<li>Get the Instrumentation Key of that resource and set it for your application <\/li>\n<li>Enable Application Insights Azure WebSite extension <\/li>\n<\/ol>\n<p>Here is how you can do it using azure template. <\/p>\n<h2>Crate Application Insights component<\/h2>\n<p>First, new component needs to be created. Everything in Azure is a resource of certain provider. For Application Insights components provider is called <code>Microsoft.Insights<\/code>. Let\u2019s give Application Insights component the same name as your application:<\/p>\n<div id=\"codeSnippetWrapper\">\n<div id=\"codeSnippet\">\n<pre><span id=\"lnum1\" style=\"color: #606060\">   1:<\/span> {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum2\" style=\"color: #606060\">   2:<\/span>   <span style=\"color: #006080\">&quot;apiVersion&quot;<\/span>: <span style=\"color: #006080\">&quot;2014-04-01&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum3\" style=\"color: #606060\">   3:<\/span>   <span style=\"color: #006080\">&quot;name&quot;<\/span>: <span style=\"color: #006080\">&quot;[parameters('siteName')]&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum4\" style=\"color: #606060\">   4:<\/span>   <span style=\"color: #006080\">&quot;type&quot;<\/span>: <span style=\"color: #006080\">&quot;Microsoft.Insights\/components&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum5\" style=\"color: #606060\">   5:<\/span>   <span style=\"color: #006080\">&quot;location&quot;<\/span>: <span style=\"color: #006080\">&quot;Central US&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum6\" style=\"color: #606060\">   6:<\/span>   <span style=\"color: #006080\">&quot;dependsOn&quot;<\/span>: [ ],<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum7\" style=\"color: #606060\">   7:<\/span>   <span style=\"color: #006080\">&quot;tags&quot;<\/span>: { <span style=\"color: #006080\">&quot;[concat('hidden-link:', resourceGroup().id, '\/providers\/Microsoft.Web\/sites\/', parameters('siteName'))]&quot;<\/span>: <span style=\"color: #006080\">&quot;Resource&quot;<\/span> },<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum8\" style=\"color: #606060\">   8:<\/span>   <span style=\"color: #006080\">&quot;properties&quot;<\/span>: { <span style=\"color: #006080\">&quot;ApplicationId&quot;<\/span>: <span style=\"color: #006080\">&quot;[parameters('siteName')]&quot;<\/span> }<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum9\" style=\"color: #606060\">   9:<\/span> },<\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<p>You may note I created a hidden link between Application Insights component and web site. This link is needed so Azure portal will show Application Insights component in the list of Performance Monitoring providers.<\/p>\n<h2>Set instrumentation key<\/h2>\n<p><a href=\"https:\/\/azure.microsoft.com\/documentation\/articles\/app-insights-create-new-resource\/\" target=\"_blank\" rel=\"noopener\">Instrumentation key<\/a> is a guid that tells Application Insights SDK where to send telemetry. In Azure templates terms it is a property of Application Insights component. As we want to use instrumentation key to configure website we need to tell azure to create Application Insights component first. So I set a <code>dependsOn<\/code> property for website:<\/p>\n<div id=\"codeSnippetWrapper\">\n<div id=\"codeSnippet\">\n<pre><span id=\"lnum1\" style=\"color: #606060\">   1:<\/span> <span style=\"color: #006080\">&quot;name&quot;<\/span>: <span style=\"color: #006080\">&quot;[parameters('siteName')]&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum2\" style=\"color: #606060\">   2:<\/span> <span style=\"color: #006080\">&quot;type&quot;<\/span>: <span style=\"color: #006080\">&quot;Microsoft.Web\/Sites&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum3\" style=\"color: #606060\">   3:<\/span> <span style=\"color: #006080\">&quot;dependsOn&quot;<\/span>: [<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum4\" style=\"color: #606060\">   4:<\/span>   <span style=\"color: #006080\">&quot;[concat('Microsoft.Web\/serverFarms\/', parameters('hostingPlanName'))]&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum5\" style=\"color: #606060\">   5:<\/span>   <span style=\"color: #006080\">&quot;[concat('Microsoft.Insights\/components\/', parameters('siteName'))]&quot;<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum6\" style=\"color: #606060\">   6:<\/span> ],<\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<p>I also use reference function to get property of one resource and use it in another:<\/p>\n<div id=\"codeSnippetWrapper\">\n<div id=\"codeSnippet\">\n<pre><span id=\"lnum1\" style=\"color: #606060\">   1:<\/span> {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum2\" style=\"color: #606060\">   2:<\/span>     <span style=\"color: #006080\">&quot;name&quot;<\/span>: <span style=\"color: #006080\">&quot;APPINSIGHTS_INSTRUMENTATIONKEY&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum3\" style=\"color: #606060\">   3:<\/span>     <span style=\"color: #006080\">&quot;value&quot;<\/span>: <span style=\"color: #006080\">&quot;[reference(concat('Microsoft.Insights\/components\/', parameters('siteName'))).InstrumentationKey]&quot;<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum4\" style=\"color: #606060\">   4:<\/span> }<\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<h2>Enable Application Insights Azure WebSite extension <\/h2>\n<p>Last step configuring Application Insights is an actual deployment of Application Insights SDK so it will monitor your website. You need to enable <a href=\"https:\/\/azure.microsoft.com\/documentation\/articles\/app-insights-start-monitoring-app-health-usage\/\" target=\"_blank\" rel=\"noopener\">Azure WebSite extension<\/a> using the <code>siteextensions<\/code> resource:<\/p>\n<div id=\"codeSnippetWrapper\">\n<div id=\"codeSnippet\">\n<pre><span id=\"lnum1\" style=\"color: #606060\">   1:<\/span> {<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum2\" style=\"color: #606060\">   2:<\/span>   <span style=\"color: #006080\">&quot;apiVersion&quot;<\/span>: <span style=\"color: #006080\">&quot;2014-04-01&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum3\" style=\"color: #606060\">   3:<\/span>   <span style=\"color: #006080\">&quot;name&quot;<\/span>: <span style=\"color: #006080\">&quot;Microsoft.ApplicationInsights.AzureWebSites&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum4\" style=\"color: #606060\">   4:<\/span>   <span style=\"color: #006080\">&quot;type&quot;<\/span>: <span style=\"color: #006080\">&quot;siteextensions&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum5\" style=\"color: #606060\">   5:<\/span>   <span style=\"color: #006080\">&quot;dependsOn&quot;<\/span>: [<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum6\" style=\"color: #606060\">   6:<\/span>     <span style=\"color: #006080\">&quot;[resourceId('Microsoft.Web\/Sites', parameters('siteName'))]&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum7\" style=\"color: #606060\">   7:<\/span>     <span style=\"color: #006080\">&quot;[resourceId('Microsoft.Web\/Sites\/config', parameters('siteName'), 'web')]&quot;<\/span>,<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum8\" style=\"color: #606060\">   8:<\/span>     <span style=\"color: #006080\">&quot;[resourceId('Microsoft.Web\/sites\/sourcecontrols', parameters('siteName'), 'web')]&quot;<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum9\" style=\"color: #606060\">   9:<\/span>   ],<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum10\" style=\"color: #606060\">  10:<\/span>   <span style=\"color: #006080\">&quot;properties&quot;<\/span>: { }<\/pre>\n<p><!--CRLF--><\/p>\n<pre><span id=\"lnum11\" style=\"color: #606060\">  11:<\/span> }<\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<p>You can see complete deployment template at <a href=\"https:\/\/github.com\/SergeyKanzhelev\/PrivateFeed\/blob\/master\/azuredeploy.json\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<h2>Result<\/h2>\n<p>Once you updated template \u2013 you see that the first screen of wizard now has extra parameter \u201cNuGet Api Key\u201d:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/0675.image34_thumb_149F501F.png\"><img decoding=\"async\" title=\"image[34]\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px\" border=\"0\" alt=\"image[34]\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/0675.image34_thumb_149F501F.png\" width=\"631\" height=\"484\" \/><\/a><\/p>\n<p>While deploying you will see that Application Insights component was created and site extension was enabled for your website:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/16\/2018\/10\/3362.image_17C9A686.png\"><img decoding=\"async\" title=\"image\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/5736.image_thumb_41407877.png\" width=\"644\" height=\"348\" \/><\/a><\/p>\n<p>&#160;<\/p>\n<p>And when you browsed your application you will see all your monitoring data in portal on summary page. You can open Application Insights blade or from WebSite blade go to <strong><em>Tools<\/em><\/strong> &gt; <strong><em>Performance Monitoring<\/em><\/strong>.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/1805.image_thumb_78C17B67.png\"><img decoding=\"async\" title=\"image\" style=\"border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/1805.image_thumb_78C17B67.png\" width=\"644\" height=\"270\" \/><\/a><\/p>\n<p>&#160;<\/p>\n<p>And search blade:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/6153.image_thumb_6D0AB1D6.png\"><img decoding=\"async\" title=\"image\" style=\"border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2015\/09\/6153.image_thumb_6D0AB1D6.png\" width=\"508\" height=\"772\" \/><\/a><\/p>\n<p>Note, to see browser information you need to modify your application and <a href=\"https:\/\/azure.microsoft.com\/documentation\/articles\/app-insights-javascript\/\" target=\"_blank\" rel=\"noopener\">inject JavaScript snippet<\/a>. <\/p>\n<h2>Summary<\/h2>\n<p>Azure provides great flexibility in deployment automation. It is easy to deploy your application, configure it and enable monitoring for it in a single click. With the GitHub integration you can see this power. Give it a try!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Browsing GitHub the other day I found an interesting button in README: Deploy to Azure. This button intrigued me to say the least. With one click I can create my own instance of that web app and try it out. Isn\u2019t it great? And it\u2019s very easy to insert into your own GitHub repo. But [&hellip;]<\/p>\n","protected":false},"author":397,"featured_media":58792,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197],"tags":[],"class_list":["post-5871","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aspnet"],"acf":[],"blog_post_summary":"<p>Browsing GitHub the other day I found an interesting button in README: Deploy to Azure. This button intrigued me to say the least. With one click I can create my own instance of that web app and try it out. Isn\u2019t it great? And it\u2019s very easy to insert into your own GitHub repo. But [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/5871","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/397"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=5871"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/5871\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/58792"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=5871"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=5871"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=5871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}