Azure Meetup Christchurch notes

For the people who came to my Azure meetup session this evening

Sources of sensors and development boards (watering kits) (NZ based dev boards) (.NetMF development boards)

nRF24Shields for RPI devices

nRF24Shields for *duino devices in AU

Raspberry PI Source in CHC

RFM69 & LoRa Modules

local sensor and device resellers quick turnaround

The watch development platform (Antennas & other wireless kit based in Rangiora)

my projects

“Don’t forget to flush” Application Insights

An Azure solution I was working on had a .Net console application which ran on a server at the customer’s premises. It was scheduled task that uploaded some files to azure blob storage every 5 minutes.

To help with debugging I added support for Azure application Insights but after monitoring the application for a while I noticed some shutdown events were not getting uploaded.

Initially I was a bit confused because when I ran the application on my desktop it worked fine (It works on my machine). I found this was because when launched from the debugger the application would upload any files it found then wait until I pressed to exit and this was enough time for the shutdown messages to get uploaded.

The code for a smallest example application is below (I pass the instrumentation key as a command line parameter).

// Copyright (c) 2018, devMobile Software
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
using System;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;

namespace devMobile.Azure.ApplicationInsightsClientConsole
   class Program
      static void Main(string[] args)
         if (args.Length != 1)
            Console.WriteLine("Command line argument InstrumentationKey missing");
         TelemetryConfiguration.Active.InstrumentationKey = args[0];

         TelemetryClient telemetryClient = new TelemetryClient();

         telemetryClient.TrackTrace("This is Application Insights native");

         telemetryClient.TrackTrace("Application startup");

         // application does stuff

         telemetryClient.TrackTrace("Application shutdown");


Sample project AzureApplicationInsightsClientConsole