Application Insights: Ignore 404 status codes for Web APIs

Application Insights is an awesome monitoring tool, but it considers all 4xx and 5xx HTTP Status Codes as errors, and when writing REST APIs some of these codes have a special meaning and are not errors. A 404 (Not found) response from a REST API usually means there are no results for a given action, not that you have hit a non-existent page.

So, how do we tell Application Insights to ignore those 404s? Simple: we write what is called a Telemetry processor.

We then need to add this processor to our Application Insights telemetry configuration, for this we’ll use a helper class:

And we call it in our global.asax:

Now we will not see those 404s as errors in Application Insights.

@gjbellmann

Infographic: Cloud design patterns

Are you designing applications for the cloud? This Cloud Design Patterns infographic created by Microsoft provides a great reference of cloud architecture design patterns and guidance for cloud-hosted applications in Microsoft Azure!

Cloud Design Patterns Infographic

You can see and download the full infographic from: https://azure.microsoft.com/en-us/documentation/infographics/cloud-design-patterns/

@gjbellmann

Getting Azure Web App deployment status notifications in Slack

Introduction

Azure Web Apps have a great feature: continuous deployment from different kinds of repositories: Visual Studio Online, OneDrive, a local Git repo, GitHub, Bitbucket, Dropbox or an external repo. You also have built-in alert notifications, but there’s no built-in notifications for deployments, and that’s where Kudu web hooks come to the rescue.

But first, what is Kudu?

Project Kudu is an open source project hosted in GitHub that is the engine behind Git/Mercurial deployments, WebJobs, and various other features in Azure Web Apps. And, it can also run outside of Azure.

What are Web Hooks?

A Web Hook is an HTTP callback: an HTTP POST that occurs when something happens; a simple event-notification via HTTP POST. Web Hooks are a way to receive valuable information when it happens, rather than continually polling for that data and receiving nothing valuable most of the time.

How do we integrate?

At Nubimetrics, like many other startups, we use Slack as our team communications platform. Slack offers integration with other apps and services like GitHub, Bitbucket, Trello, Asana, JIRA, Google+ Hangouts, Google Drive, Dropbox and Visual Studio Online, just to name a few (if you are interested in all integration options visit https://slack.com/integrations).

As you can see, we have no built-in integration with Kudu, but web hooks come to the rescue again! Slack supports incoming web hooks as a way for other apps to to post messages into Slack.

And, to make things easier, there’s an already built app hosted in GitHub, that is written in Node.js and runs on Azure.

All we need to do is:

  1. Go to our Slack team configuration and set up an incoming webhook integration.
  2. Deploy the app from the deploy button.
  3. Configure an environment variable named slackhookuri with the value of the URI from Step 1.
  4. Add the URI to your Azure web app Kudu portal web hooks, you reach it via https://{your azure web app}.scm.azurewebsites.net/WebHooks
  5. And that’s it!!

Conclusion

Web hooks provide us an easy way of integrating web applications. Using simple web requests with a JSON payload we can integrate almost anything!

Happy coding!

@gjbellmann

Setting up a WebJob to run HDInsight jobs

Introduction

Managing an HDInsight cluster, or running an HDInsight job, from an Azure WebJob, requires you to set up a certificate to access the HDInsight cluster. This post shows how to upload the certificate to the Azure management portal, and how to configure our WebJob.

To generate the certificate file we need, you can follow the steps for the .pfx certificate file generation here.

Uploading the certificate file

The .pfx file should be uploaded in the “Configure” section in your Web App. To do so, follow these steps: Continue reading

Assigning a custom name to Cloud Services instances

The default instance name

Those of you who look at SQL database connection logs, or at tools like New Relic to monitor your Cloud Service applications, may have noticed that the list of servers running the application have names like “RD000D3A107CFC” (this is the host name in the network).

This name isn’t very useful when trying to identify which of the instances we see in the Azure Management Portal is the one that corresponds to that name. All instances in the portal are named as the role name followed by a number (e.g.: CloudService.Web_IN_1). Continue reading

Setting up a cloud service to run HDInsight jobs – Part 2

Introduction

Managing an HDInsight cluster, or running an HDInsight job, from an Azure worker role, requires you to set up a certificate to access the HDInsight cluster. This post shows how to upload the certificates to the Azure management portal, and how to configure our cloud service. The previous post (Setting up a cloud service to run HDInsight jobs – Part 1) showed the steps to generate the certificate files we need.

Uploading the certificate files

The .cer file should be uploaded to the Azure portal under the “Management Certificates” section. To do so, follow these steps: Continue reading

Setting up a cloud service to run HDInsight jobs – Part 1

Introduction

Managing an HDInsight cluster, or running an HDInsight job, from an Azure worker role, requires you to set up a certificate to access the HDInsight cluster. This post shows the steps to generate the certificate files we need. The next one will show you how to upload the certificates to the Azure management portal, and how to configure your cloud service (Setting up a cloud service to run HDInsight jobs – Part 2).

Creating the certificate files

The certificates you download from your Azure subscription will not allow you to generate a pfx file, so we’ll need to create our own. This can be done in two ways: we can buy a certificate from firms like VeriSign or Entrust, or, we can create one ourselves with IIS, for free! Continue reading