Welcome!

Microservices Expo Authors: Liz McMillan, Pat Romanski, Carmen Gonzalez, Elizabeth White, Jason Bloomberg

Related Topics: Microservices Expo, Containers Expo Blog

Microservices Expo: Article

Monitoring Web Applications Using Hyperic

Monitoring enables us to anticipate the issues

Monitoring applications is an important aspect of IT industry. Huge investments are made in setting and maintaining the IT infrastructure be it cloud or physical. To ensure maximum performance across your business, problems have to be identified and resolved before they affect the users. Monitoring enables us to anticipate the issues and hence resolve them before they start appearing as problems to users. We need to have visibility into IT infrastructure to identify the issue origin. For example, by monitoring the applications proactively, we can figure out the root cause whether its poor performance is due to the problem at resource level or at application level or at any other place and take action before it starts impacting the user. It gives us more control and confidence on the application and hence helps us in meeting the service quality requirements.

Performance issues can arise due to problems at any level - machine/ application/ transaction. We should be able to monitor through all levels so that exact point of origin can be located. Most of the current solutions provide monitoring at any one particular level. For example, some cloud based infrastructure solutions provide monitoring at machine level only. Problem need not be necessarily to be at machine level. There could be problem at the application level like increased thread count, more number of active connections to valuable resources, etc or at transaction level like response time, request rate, etc. Thus, monitoring across different levels gives us visibility to know where the problem lies. Once the problem origin is known, we can take corrective actions to resolve it before it impacts the user experience.

There should be a solution to achieve the same to dig out the actual problem. We are going to deal with it in this article. We are going to see how to monitor different metrics (CPU utilization, thread count per minute, response time) at different levels. We will use Hyperic as our monitoring tool to measure the metrics. It is a systems monitoring, server monitoring and IT management software. It is based on server-agent model. We will have a look at the basic architecture of Hyperic as well.

Use-case scenario - Problem statement

Consider a case where a web application becomes famous and workload increases on it. This causes the application's performance to go down which results in slow loading of web pages. There could be many reasons for the degradation of performance like CPU utilization exceeds certain level, application logic is poor, less number of resources in infrastructure which are not able to sustain the load and many more. Issue could be at any level as discussed. Availability and performance marks end users' experience. This necessitates the monitoring of applications at different levels so that any unexpected behaviour could be avoided by taking corrective measures on time.

Deep dive into the solution
One of the most common complaints heard from end user is ‘website responds very slowly'. Poor performance of application can drift the user away from web application and leaves a bad impact on them. To find out the reason for poor performance of application, we have to measure the metrics at different levels to dig out the actual issue. We are programmatically going to monitor CPU utilization at machine level, used thread count per minute at application level and response time at transaction level.

Monitoring requires a reliable tool which can track the metrics periodically and update the application administrators.  There are lots of monitoring tools present in the market with varying features. Some of the most commonly used are Hyperic, Nagios, Cacti, Ganglia, etc.  Most of the tools in the market represent the metric values in visual form which helps the administrators to monitor and analyze any unexpected behaviour of application.

Hyperic is one of the leading monitoring tools in this arena. Hyperic comes in two flavors - open source (under GPL licensing) and enterprise edition (commercial license). It is based on server-agent model.  Following is a short description of Hyperic key components:

  1. HQ Agent: HQ agent is responsible for collecting data of the machine in which it is installed and send it to server. Each machine which is to be monitored should have an HQ agent running.
  2. HQ Server: HQ server consolidates the data sent by agents installed on different machines and persist it in the Hyperic database. HQ server maintains the inventory which keeps the information of all the resources and their monitored values.
  3. HQ Portal: HQ portal is a graphical user interface which gives complete information about the resources being monitored. User can add/ remove/perform control actions/set alarms from this portal. It is highly customizable with provision of choosing the metric to be collected and changing the collection intervals.
  4. HQ Web Service API: It has java based API called HQAPI. It helps in accessing the resources and their metrics programmatically.
  5. HQ Plugins: Hyperic has its own set of resource plugins for collecting metrics and other operations. It is also possible to build a new plugin to support additional functionality.

A large number of metrics is managed by Hyperic. In case of virtual environment, Hyperic agents are installed on virtual machines. We will use HQAPI to access the resources.

Consider a web application deployed on Apache Tomcat as application server. We will deploy famous - Jpetstore web portal on application server and then monitor the same.

Deploy web application on application server
Copy the jpetstore application under ${Apache_Tomcat_Installation_dir}/webapps and start tomcat. Try accessing - http://localhost:8080/jpetstore link and if it shows jpetstore homepage that means application is deployed successfully.

The way resources are modelled in hierarchical fashion in Hyperic UI console, same way resources could be accessed programmatically using HQ Java API. Top most resource is Platform and beneath it are present services running which are allowed to be monitored in that machine. Let's see how to monitor different metrics at different levels using HQAPI.

More Stories By Akansha Jain

Akansha works as a Technology Analyst at SETLabs, R&D division, at Infosys Technologies Ltd. She has close to 4 years of experience in development of Cloud computing, Java and Java EE applications, Eclipse Plugin Architecture, Software Factory, Web 2.0,etc. Earlier publication works are available on devx.com.

Microservices Articles
Modern software design has fundamentally changed how we manage applications, causing many to turn to containers as the new virtual machine for resource management. As container adoption grows beyond stateless applications to stateful workloads, the need for persistent storage is foundational - something customers routinely cite as a top pain point. In his session at @DevOpsSummit at 21st Cloud Expo, Bill Borsari, Head of Systems Engineering at Datera, explored how organizations can reap the bene...
"NetApp's vision is how we help organizations manage data - delivering the right data in the right place, in the right time, to the people who need it, and doing it agnostic to what the platform is," explained Josh Atwell, Developer Advocate for NetApp, in this SYS-CON.tv interview at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
The Jevons Paradox suggests that when technological advances increase efficiency of a resource, it results in an overall increase in consumption. Writing on the increased use of coal as a result of technological improvements, 19th-century economist William Stanley Jevons found that these improvements led to the development of new ways to utilize coal. In his session at 19th Cloud Expo, Mark Thiele, Chief Strategy Officer for Apcera, compared the Jevons Paradox to modern-day enterprise IT, examin...
In his session at 20th Cloud Expo, Mike Johnston, an infrastructure engineer at Supergiant.io, discussed how to use Kubernetes to set up a SaaS infrastructure for your business. Mike Johnston is an infrastructure engineer at Supergiant.io with over 12 years of experience designing, deploying, and maintaining server and workstation infrastructure at all scales. He has experience with brick and mortar data centers as well as cloud providers like Digital Ocean, Amazon Web Services, and Rackspace. H...
Skeuomorphism usually means retaining existing design cues in something new that doesn’t actually need them. However, the concept of skeuomorphism can be thought of as relating more broadly to applying existing patterns to new technologies that, in fact, cry out for new approaches. In his session at DevOps Summit, Gordon Haff, Senior Cloud Strategy Marketing and Evangelism Manager at Red Hat, will discuss why containers should be paired with new architectural practices such as microservices ra...
In his session at 20th Cloud Expo, Scott Davis, CTO of Embotics, discussed how automation can provide the dynamic management required to cost-effectively deliver microservices and container solutions at scale. He also discussed how flexible automation is the key to effectively bridging and seamlessly coordinating both IT and developer needs for component orchestration across disparate clouds – an increasingly important requirement at today’s multi-cloud enterprise.
The Software Defined Data Center (SDDC), which enables organizations to seamlessly run in a hybrid cloud model (public + private cloud), is here to stay. IDC estimates that the software-defined networking market will be valued at $3.7 billion by 2016. Security is a key component and benefit of the SDDC, and offers an opportunity to build security 'from the ground up' and weave it into the environment from day one. In his session at 16th Cloud Expo, Reuven Harrison, CTO and Co-Founder of Tufin, ...
DevOps is often described as a combination of technology and culture. Without both, DevOps isn't complete. However, applying the culture to outdated technology is a recipe for disaster; as response times grow and connections between teams are delayed by technology, the culture will die. A Nutanix Enterprise Cloud has many benefits that provide the needed base for a true DevOps paradigm. In their Day 3 Keynote at 20th Cloud Expo, Chris Brown, a Solutions Marketing Manager at Nutanix, and Mark Lav...
Many organizations are now looking to DevOps maturity models to gauge their DevOps adoption and compare their maturity to their peers. However, as enterprise organizations rush to adopt DevOps, moving past experimentation to embrace it at scale, they are in danger of falling into the trap that they have fallen into time and time again. Unfortunately, we've seen this movie before, and we know how it ends: badly.
TCP (Transmission Control Protocol) is a common and reliable transmission protocol on the Internet. TCP was introduced in the 70s by Stanford University for US Defense to establish connectivity between distributed systems to maintain a backup of defense information. At the time, TCP was introduced to communicate amongst a selected set of devices for a smaller dataset over shorter distances. As the Internet evolved, however, the number of applications and users, and the types of data accessed and...