As containers are becoming the preferred way to rapidly build and deploy applications, organizations are also starting to look at managed platforms to host their containerized applications. Red Hat OpenShift is a popular choice as it provides an enterprise-grade container platform based on Docker and Kubernetes in a variety of consumption models, from fully hosted to on-premises. For enterprises that don’t want to bother with an on-premises installation, but still want a private OpenShift instance, hosting on Microsoft Azure is an interesting alternative.
In this blog post, we will explain how to monitor an OpenShift environment on Azure, using a private CoScale instance on Azure. This is the result of a partnership between CoScale, Microsoft, and Red Hat.
Monitoring OpenShift on Azure
Both Azure and OpenShift provide management dashboards that provide good insights into resource usage at the host and container level, however they don’t provide real-time visibility in the performance of your microservices and the dynamics of containers. This is where a service as CoScale comes in. CoScale is an OpenShift Primed partner that provides integrated monitoring of your hosts and containers, as well as detailed insight into the services that run inside your containers. Powered by anomaly detection, this lets you quickly detect abnormal behavior.
CoScale on Azure
Now you can also install the CoScale monitoring platform as a private instance on Azure. This makes it very easy to monitor any service on Azure (including OpenShift) from within Azure. This blog post will provide more details about running OpenShift and CoScale on Azure, and how you can use CoScale to monitor your applications running on OpenShift.
Azure Resource Manager
Deployment of OpenShift and CoScale on Azure can be easily done via the Azure Resource Manager. This allows you to provision your applications using a declarative template. In a single template, you can deploy and manage multiple services and their dependencies as a group. You use the same template to repeatedly deploy your application during every stage of the application lifecycle.
Installing OpenShift on Azure
If you don’t have an OpenShift instance running yet, you can easily set one up with the following template:
This template deploys OpenShift Origin with basic username / password for authentication to OpenShift. You can select to use either CentOS or RHEL for the OS.
Installing CoScale on Azure
The same goes for installing CoScale on Azure with the following template:
This template installs the CoScale platform on a single VM and automatically creates all required objects, such as a storage account, virtual network, nic, load balancer, public ip, etc.
You will need to provide a registration key that can be obtained via https://www.coscale.com/azure/ and provide your account credentials, as shown below.
Once you click “Deploy on Azure” and the template finishes, it will output the URL of your private CoScale instance. This will take approximately 10-15 minutes.
Setting up the CoScale Agent
The GitHub repository also contains a deploy-agent.sh script to easily deploy the CoScale agent on all VMs in a resource group. With the CoScale agent you can monitor your Kubernetes cluster and Docker containers, as well as the services running inside your containers by setting up the right plugins. For more information about configuring the plugins for OpenShift, see our OpenShift monitoring blog post.
Start Monitoring your OpenShift Environment
You can now start monitoring the performance of your OpenShift platform and the applications running on it via CoScale’s dashboards, many of which are available out-of-the-box.
Typically you would start with a high level dashboard to get see the main performance metrics of your application and its main services. For example, the dashboard below shows the response time of different microservices as well as a heatmap of the containers for these microservices, as well as some other high-level metrics.
From there you can drill into more details, for example showing general resource metrics of your hosts and containers that are collected by our lightweight agent.
The next two dashoards show more information about your Kubernetes cluster in OpenShift and the containers and microservices it hosts. This quickly shows which services or containers are having issues, as also explained in our previous blog post on monitoring Kubernetes.
The following dashboard shows performance metrics of an Elasticsearch service running inside the containers. This is a default dashboard provided by CoScale that monitors the most important Elasticseach KPIs and that automatically pics up the metrics from new containers, as also explained in our previous blogpost on monitoring containers and the services inside.
Of course, you don’t want to be constantly looking at all these dashboards. That is why our anomaly detection will automatically detect abnormal behaviour for you, as shown in some of the examples below.
In the first example, our anomaly detection detects an anomaly at the services level, where there is an abnormal high request rate on all containers for a particular service. By detecting this anomaly at the services level, we avoid having to send anomalies for each container.
In the second example, we detect an anomaly on one container that spins into an infinite loop and shows abnormal CPU usage compared to other containers for the same service.