Cloud Native sample microservices showcasing Full Stack Observability using AppDynamics and ThousandEyes

Overview

published

Cloud Native Sample Bookinfo App Observability

Bookinfo is a sample application composed of four Microservices written in different languages. Application is originally created by as part of Istio project to demonstrate various Istio features, See https://istio.io/docs/examples/bookinfo/.

Project extends this sample application to demonstrate observability of Cloud Native application using Cisco AppDynamics and ThousandEyes. Microservices code and docker images area extended to include respective AppDynamics agents that enables Application Performance Monitoring for these microservices. ThousandEyes Web App monitoring is also configured, that helps understand understand how HTTP, page load and transaction performance is affected by the network, and how it stacks up against other similar services.

Architecture

Sample book info application is created using 4 polygot microservices & can be deployed on kubernetes cluster.

Microservice details

Service Name Language Details
Product Page Python Frontend Microservices service simple web page showing book details, reviews & ratings
Details Ruby The details microservice contains book information.
Review Java The reviews microservice contains book reviews. It also calls the ratings microservice.
Ratings NodeJS The ratings microservice contains book ranking information that accompanies a book review.

Full Stack Observability are enabled for this application (composed of microservices) that monitors user experience, business transaction, container, virtual machine, Kubernetes container orchestrator etc. Each Microservices is instrumented with respective language AppDynamics agent to enable application monitoring data. In addition to this AppD cluster agent for Kubernetes is also setup too to monitor health of Kubernetes and collect metrics and metadata for entire cluster, including every node and container.

For ProductPage web endpoints the HTTP monitor are added to ThousandEyes that can monitor Response time, Availability and Throughput from multiple from different geographic location in world.

Setup Application

  1. Pre-requisite
  1. Clone the code to local laptop

    git clone https://github.com/CiscoDevNet/bookinfo-cloudnative-sample
    
  2. Get Access Key and account details from AppDynamics

    Access keys & Account Name

  3. Update Access Keys and deploy microservices pods

    i. Modify access-key (base64 encoded), APPDYNAMICS_AGENT_ACCOUNT_NAME (account_name) and APPDYNAMICS_CONTROLLER_HOST_NAME in field

    echo -n  | base64 - 
    vi platform/kube/appd.yaml
    

    ii. Upload Secret

    kubectl apply -f platform/kube/appd.yaml
    

    iii. Deploy microservice pods & created services

    kubectl apply -f platform/kube/bookinfo.yaml
    

    Sample Creation

    iv. Expose service to internet If your cluster have ingress with public internet domain configured use same.

    Alternative option is to expose service using ngork. Service needs to exposed so that ThousandEye can test app. NOTE: This is will expose your app to world so please read yourself aware of ngrok.

    kubectl run --restart=Never   -t -i --rm   ngrok --image=gcr.io/kuar-demo/ngrok   -- http productpage:9080
    
  4. Access app, browse various page & login using 'demo' and 'demo' cred.

    This will start sending metrics to AppdAccount

    Application Browsing

  5. Check Application and Infra monitoring details in AppDynamics account

    AppDynamics Monitoring Details

  6. Register Web Test on ThousandEyes

    ThousandEyes Test Addition & reports

AppDynamic Agents Instrumentation of Microservices

  1. Python agent for 'Product Page'

    AppDynamics Agent for Python is installed using pip package via requirements.txt

  2. Ruby agent for 'Details Service'

    AppDynamics Agent for Ruby is installed using Gemfile

  3. Java agent for 'Review' Service

    AppDynamics agent for Java is inserted using init-container.

          initContainers:
         - command:
             - cp
             - -r
             - /opt/appdynamics/.
             - /opt/temp
           name: appd-agent
           image: docker.io/appdynamics/java-agent:20.8.0
           volumeMounts:
             - mountPath: /opt/temp
               name: appd-agent-repo
    
  4. NodeJS 'Rating' Service AppDynamics agent for NodeJS are installed using npm install in package.json

  5. Agent configuration are set for following AppDynamics agents configuration Best Practices in kubernetes refer appd.yaml and bookinfo.yaml for details.

Rebuild Microservices docker images

Refer Build Document for build instruction.

Owner
Cisco DevNet
Place for DevNet community to access sample code and collaborate on open source projects that are used in some way in DevNet
Cisco DevNet
Open source stenotype engine

Plover Bringing stenography to everyone. Homepage Releases Wiki Blog Google Group Discord Chat About Installation Getting help Contributing Donations

Open Steno Project 2k Jan 09, 2023
Stack-overflow-import - Import arbitrary code from Stack Overflow as Python modules.

StackOverflow Importer Do you ever feel like all you’re doing is copy/pasting from Stack Overflow? Let’s take it one step further. from stackoverflow

Filip Haglund 3.7k Jan 08, 2023
This is a calculator of strike price distance for options.

Calculator-of-strike-price-distance-for-options This is a calculator of strike price distance for options. Options are a type of derivative. One strat

André Luís Lopes da Silva 4 Dec 30, 2022
This is collection of Managementsystem programs: Hospital Management, Student Managemen, etc

Contribute in this repository and help other students with their assignment by adding python scripts for various management system programs.

GDSC BVP DET - Navi Mumbai 3 Mar 20, 2022
Learning objective: Use React.js, Axios, and CSS to build a responsive YouTube clone app

Learning objective: Use React.js, Axios, and CSS to build a responsive YouTube clone app to search for YouTube videos, channels, playlists, and live events via wrapper around Google YouTube API.

Dillon 0 May 03, 2022
🎴 LearnQuick is a flashcard application that you can study with decks and cards.

🎴 LearnQuick is a flashcard application that you can study with decks and cards. The main function of the application is to show the front sides of the created cards to the user and ask them to guess

Mehmet Güdük 7 Aug 21, 2022
Shopping-card - Shopping Card Project With Python

Shopping Card Project this application was built to handle problems with saving

moein98 1 May 06, 2022
Incident Response Process and Playbooks | Goal: Playbooks to be Mapped to MITRE Attack Techniques

PURPOSE OF PROJECT That this project will be created by the SOC/Incident Response Community Develop a Catalog of Incident Response Playbook for every

Austin Songer 987 Jan 02, 2023
A module that can manage you're gtps

Growtopia Private Server Controler Module For Controle Your GTPS | Build in Python3 Creator Information

iFanpS 6 Jan 14, 2022
skimpy is a light weight tool that provides summary statistics about variables in data frames within the console.

skimpy Welcome Welcome to skimpy! skimpy is a light weight tool that provides summary statistics about variables in data frames within the console. Th

267 Dec 29, 2022
A parser of Windows Defender's DetectionHistory forensic artifact, containing substantial info about quarantined files and executables.

A parser of Windows Defender's DetectionHistory forensic artifact, containing substantial info about quarantined files and executables.

Jordan Klepser 101 Oct 30, 2022
resultados (data) de elecciones 2021 y código para extraer data de la ONPE

elecciones-peru-2021-ONPE Resultados (data) de elecciones 2021 y código para extraer data de la ONPE Data Licencia liberal, pero si vas a usarlo por f

Ragi Yaser Burhum 21 Jun 14, 2021
Cobalt Strike Sleep Python Bridge

This project is 'bridge' between the sleep and python language. It allows the control of a Cobalt Strike teamserver through python without the need for for the standard GUI client. NOTE: This project

Cobalt Strike 140 Jan 04, 2023
Python programs, usually short, of considerable difficulty, to perfect particular skills.

Peter Norvig MIT License 2015-2020 pytudes "An étude (a French word meaning study) is an instrumental musical composition, usually short, of considera

Peter Norvig 19.9k Dec 27, 2022
Feature engineering library that helps you keep track of feature dependencies, documentation and schema

Feature engineering library that helps you keep track of feature dependencies, documentation and schema

28 May 31, 2022
WriteAIr is a website which allows users to stream their writing.

WriteAIr is a website which allows users to stream their writing. It uses HSV masking to detect a pen which the user writes with. Plus, users can select a wide range of options through hand gestures!

Atharva Patil 1 Nov 01, 2021
A fancy and practical functional tools

Funcy A collection of fancy functional tools focused on practicality. Inspired by clojure, underscore and my own abstractions. Keep reading to get an

Alexander Schepanovski 2.9k Dec 29, 2022
A calculator for common measurements used in sci-fi books.

Sci-fi-speed-calculator A calculator for common measurements used in sci-fi books. Author: Tyler Windmemuth Purpose: This program allows sci-fi author

Tyler Windemuth 0 Apr 22, 2022
use Notepad++ for real-time sync after python appending new log text

FTP远程log同步工具 使用Notepad++配合来获取实时更新的log文档效果 适用于FTP协议的log远程同步工具,配合MT管理器开启FTP服务器使用,通过Notepad++监听文本变化,更便捷的使用电脑查看方法注入打印后的信息 功能 过滤器 对每行要打印的文本使用回调函数筛选,支持链式调用

Liuhaixv 1 Oct 17, 2021
Standard mutable string (character array) implementation for Python.

chararray A standard mutable character array implementation for Python.

Tushar Sadhwani 3 Dec 18, 2021