Instana U

 View Only

Microservices Monitoring On Power Architecture Using Instana

By Neha Ghongade posted Fri November 19, 2021 08:08 AM

Authors: Rajesh K. Jeyapaul, Mukesh Mangal, Neha Ghongade
Instana is the first and fully automated Application Performance Management (APM) solution designed specifically for the challenges of managing Microservices and cloud-native applications. Basically, it’s a Server-Client model. You need to install the Instana agents on a standalone VM, a cluster, or a Docker environment, and configure it by providing details of the Instana server where you want to connect. Then, the Instana server can monitor all the agents that are connected to it.      
Here, let's discuss the monitoring capability for Power-Architecture-based environments.

Power Architecture Capability for Instana
The Instana agents can be deployed on a stand-alone Power VM, a Docker environment, a Kubernetes cluster, or an OpenShift cluster (4.7 or later versions). They can be installed in a cluster by using the Helm, YAML or Operator methods. From the perspective of monitoring, Instana supports almost all runtimes, such as JVM, python, nodejs, etc. It also supports managing events and alerts. 

Agent availability 
  •  A static host agent is a self-contained agent that includes all the latest available components at the time of its release, and that has no dynamic update capabilities. On the one hand, the static host agent has a stable "bill of materials", that never changes after the host agent's installation. On the other hand, the lack of update capabilities means that you will need to create your own method for keeping Instana agents up-to-date by using infrastructure-as-code tools like Ansible or Terraform. 
  • A dynamic host agent downloads on startup the latest set of sensors from repositories. By default, a dynamic agent will update itself on a daily basis with the latest and greatest capabilities released.
For more details on static and dynamic agent availability click here

Agent Configuration
Instana agents are available for both standalone VMs and cluster environment such as a Kubernetes cluster, or an OpenShift cluster. 
  • Host level (Standalone)
The following configurations are used to deploy and configure Instana agents in a Standalone VM:
  1. Download the agent package. Follow these steps 
2.   After downloading the required deb/rpm package, run the following command to install the agent:
     - Debian derivatives:  sudo apt install ./<Package_name> 
     - Redhat derivatives:  rpm -i <Package_name> 
     For example, rpm -i  instana-agent-static-j9-20211020-1148.ppc64le.rpm
3. Go here for agent configuration.
Notes : 
  • Automatic Installation (One Liner) is not supported for power architecture. You need to install the agents manually.
  • To install instana agents on AIX, read this
  • This is applicable for the customers who are having instana license, those who don't  have can register for trial one and use that license. Click here to register for free trial.
  • Cluster level  
For environments with network access, you can use any of the following methods to deploy and configure the Instana agents:
Notes : 
  • The image pull from Docker Hub will be done at runtime when you apply the helm chart (If the Installation is done by using Helm), or apply the yaml (If the Installation is done by using YAML or Operator). 
  • For clusters running in an air-gapped environment, images need to be downloaded manually and pushed to your local registry. You need to update the image path in the yaml file (If the Installation is done by using YAML or Operator) or the helm chart (If the Installation is done by using Helm).
  • Required images for cluster level (air-gapped environments) can be downloaded from docker hub. If the Installation is done by using Helm or YAML, you need to pull the agents and Leader-elector images, and push to your local registry. If the Installation is done by using Operator, you need to pull the agents and Operator, and push to your local registry. 
Metrics and Traces
For the following supported environments, the metrics and traces can be monitored.

  *As on november 2021

The monitoring capability can be further understood by referring to the following videos:
Standalone: Click here  to verify metrics, such as OS/Host level, runtime, etc. 

OCP: Click here to verify metrics for some of the runtimes. 
Application monitoring scenario 
For demonstration purpose, here we use a Microservice application that is Open-Source and can be downloaded from Github. Instana supports most of the runtimes monitoring on the Power platform. You can try the robot-shop Microservice since it covers almost all runtimes. 
As the robot-shop name implies, it's a simple e-commerce storefront that includes a service catalogue, user, shopping cart and order pipeline. 
Here is its architecture: 

Based on the architecture diagram,  you can see the dependency of each Microservice component over others. 
  • The orange colour components indicates endpoint of particular smaller services. For example, the payment service is dependent on Rabbit-mq.
  • The web page is a Single Page Application written by using AngularJS, its  resources are served by Nginx , which acts as a reverse proxy for the back-end Microservices. 
  • MongoDB is used as the data store for the product catalogue and the registered users. 
  • MySQL is used for the lookup of the shipping information. 
  • Redis is used to hold the active shopping carts. 
  • The order pipeline is processed by using RabbitMQ. 
We have customized to run this application on 3 different worker nodes. The following picture indicates three different nodes on the Instana UI.

The following Diagram shows how Instana builds the relationship between the different Microservices.

Sample Problem Scenario
Let's consider a problem scenario where MongoDB crashes and impacts the behaviour of the Catalogue service.
Assume that the MongoDB crashed due to resource limitations. Instana has the capability to monitor resource utilization and the impact on the catalogue service due to MongoDB crash. Also, Instana raises an alert for the call failure. This scenario is explained in the Video listed here.
I hope this has been a helpful exploration of this subject. If you would like to find out more about Instana and monitoring capabilities regarding microservices please refer this.