I have a process running in a Azure WebJob that generate an Excel file containing images and I want to measure the performance of this process in time.

This process has the following metrics;

  • The number of images
  • The time took to finish the excel

I want to create a graph that shows me how these two metrics variable over the time. Because I don't know how to create/judge a 3 axis graph I think of combining these two metrics into one so I can create a graph with [Time/Images per sec].

Should I segment the data into divisions such as Many images(>300), some images (>100) and few images(<100)?

How should I store the data in db? My initial thoughts are to store the raw data in a table and with a WebJob crunch the data every night and produce daily, weekly and monthly sums.


Since you're using Azure, why not use Azure Monitor? See the Application Insights API for custom metrics. It should be very simple to track the number of images and processing time, and you can visualize the metrics right in Azure Monitor. Or you can use the API to fetch the metrics and visualize them in your own tool or create reports.

Insert a few lines of code in your application to find out what users are doing with it, or to help diagnose issues. You can send telemetry from device and desktop apps, web clients, and web servers.

This will be much simpler to implement than creating a schema and collection API yourself.

  • My question is about what data should I retain and how to better segment the data so they are meaningful, not where to store the data. Aug 2 '17 at 9:50
  • You should always record the raw data. The number of images in each file and the time it took to process the file. Any transformation done for the visualization should be done by a visualization tool.
    – Samuel
    Aug 2 '17 at 19:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.