beawolf - Fotolia

Problem solve Get help with specific problems with your technologies, process and projects.

Should you build your own tools for diagnostics?

Learn which makes more sense for your enterprise: building your own cloud-based diagnostic tooling or purchasing an existing product. Expert Ken Milberg explains.

Why would you look to build your own tools when your product may have everything you already are looking for? There are pros and cons to both. You will never find an existing product that is completely customized for what you are looking to do. That is where the benefit of building your own application comes into play. On the other hand, using an existing tool spares you from the development effort necessary to build your own diagnostic tools. We're going to look at both here.

Build your own tools

There are many tools available that allow you to build out diagnostic tools, though finding the right tool is always a challenge. Let's look at one example. The Java Development Kit (JDK) that Oracle provides has an extensive toolkit that can be used to develop diagnostic tools that will help you diagnose issues, debug problems and monitor your overall environment. You may decide you do not want rewrite the book by creating your own tools but rather use existing tools that are already available in frameworks.

Within JDK, there are specific tools that will help you build your diagnostic tools. One of them is the Java Heap Analysis Tool, which is used to analyze heap dumps. Another useful tool is Jmap, which is a memory mapping tool that provides a way to obtain these heap dumps, without causing OutOfMemoryErrors. The Java Virtual Machine (JVM) Process Status Tool is a utility that allows you to determine the process ID of the Java process. It makes it easy for you to identify the process that you will need to analyze. Another useful tool is Jstack, which produces a thread's stack traces in a JVM process. This allows you to identify deadlock conditions and also provides a method to verify what your threads are doing.

Use something already in the market

The Microsoft Azure software development kit has several tools available to help you improve your overall experience -- many of which are directly from Visual Studio. These tools can help you configure diagnostics to help you manage your system. You should know that it is always better to configure diagnostics when your application is first deployed, because you will need to add configuration data to tell Azure what you are looking to monitor. If you don't do this, nothing will be collected, and the diagnostics will simply not work the way you need them to work. The Microsoft Azure Diagnostics agent will gather your diagnostic data, store it and then send it to a secure area for safekeeping – where, later, you can download or query for more information about the application. Enabling the agent is done through Visual Studio and is as simple as checking "enabled diagnostics." It is customizable, which is good; you can tell the agent what to collect, how often and how to transfer it to storage.

Whether you choose to build your own tools or use existing tools that are already available, take the time to understand exactly what you are trying to accomplish, and put it all in writing. By getting all your specifications documented, it will make your approach that much easier to decide.

This was last published in December 2017

Dig Deeper on Cloud DevOps



Find more PRO+ content and other member only offers, here.

Have a question for an expert?

Please add a title for your question

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

Join the conversation

1 comment

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

Did your enterprise buy prepackaged products or build your own tools?