SlideShare una empresa de Scribd logo
1 de 47
Automate performance testing with
AppDynamics using continuous
integration platforms
Brad Stoner
Senior Sales Engineer | AppDynamics
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 2
Notice
The information and materials included in this presentation (collectively, the
“Materials”) are the proprietary information of AppDynamics, Inc. (“AppDynamics” or
the “Company”). No part of the Materials may be reproduced, distributed,
communicated or displayed in any form or by any means, or used to make any
derivative work, without prior written permission from AppDynamics.
The Materials may contain product roadmap information of AppDynamics.
AppDynamics reserves the right to change any product roadmap information at any
time, for any reason and without notice. This information is intended to outline
AppDynamics' general product direction, it is not a guarantee of future product
features, and it should not be relied on in making a purchasing decision. The
development, release, and timing of any features or functionality described for
AppDynamics' products remains at AppDynamics' sole discretion. AppDynamics
reserves the right to change any planned features at any time before making them
generally available as well as never making them generally available.
All third-party trademarks, including names, logos and brands, referenced by
AppDynamics in this presentation are property of their respective owners. All
references to third-party trademarks are for identification purposes only and shall be
considered nominative fair use under trademark law. © 2016 AppDynamics, Inc. All
rights reserved.
Key takeaways
• How to get started with performance test automation
• How to detect and resolve performance issues earlier in the
development lifecycle with AppDynamics
• How to maximize the quality and value of your performance test
strategy
AppDynamics Confidential and Proprietary 3
My background
• 7 years @ H&R Block Load and Performance Team
– 5 person team
– 100k + user concurrency
– Tax peak 2nd week after go-live
– 70 applications annually
– Diverse technology stack – including 3rd party
• 2 years @ Neotys – Senior Performance Engineer
• Currently Sales Engineer @ AppDynamics
AppDynamics Confidential and Proprietary 4
What is performance testing?
AppDynamics Confidential and Proprietary 5
Why bother?
AppDynamics Confidential and Proprietary 6
Google - Using page speed in site ranking
Facebook - Launches 'lite' mobile app
Amazon - 100ms delay -> $6.79M sales
decrease
Recent airline industry outages
Legacy performance testing
AppDynamics Confidential and Proprietary 7
Increasing velocity
…performance testing
isn't historically fast
AppDynamics Confidential and Proprietary 8
Keeping up with Agile / DevOps
AppDynamics Confidential and Proprietary 9
Performance defects
AppDynamics Confidential and Proprietary 10
Pull back the layers
AppDynamics Confidential and Proprietary 11
Prod / Perf
Pre-Prod /
Staging
Dev / QA
Dev / QA
• Short test cycle
• Low resources / cost
• Rapid feedback
• Component testing
AppDynamics Confidential and Proprietary 12
Staging / Pre-Prod
• Increased resources
• Long test durations
• Additional resources
• Multiple test
elements
• Integrated systems
• Build validation
AppDynamics Confidential and Proprietary 13
Prod / Perf
• High complexity
• Multiple integrated
systems
• Environmental variance
• Resource intensive
• High cost
AppDynamics Confidential and Proprietary 14
Resources and speed
Resources
Speed
Prod / Perf
Staging / Pre-
Prod
DEV/QA
Mobile web/app example
Dev testing - APIs
Staging testing – Capacity w/ UI
and API
Build automation
Baseline Pre-Prod / Staging -
platform
Prod / Perf testing (inside
firewall) – stability /
scalability
Prod / Perf testing
(outside firewall) –
network / load
balancing
QA testing – API flows
Optimize app chatter
and network
resources
Mobile app released
Mobile app built
Mobile site releasedMobile site built
APIs released/ BE functionality
Front End
Optimization
What if legacy test principles were applied?
Staging testing –
Capacity w/ UI and API
Baseline Pre-Prod /
Staging - platform
Prod / Perf testing (inside firewall) –
stability / scalability
Prod / Perf testing (outside
firewall) – network / load
balancing
Front End
Optimization
Optimize app
chatter and
network
resources
Mobile app released
Mobile app built
Mobile site releasedMobile site built
APIs released/ BE functionality
Demo
AppDynamics Key Components
AppDynamics Usage
Compare Releases Compare critical metrics for different tests (FE and BE)
Database Monitoring Measure and visualize performance deltas between tests
Server Monitoring Measure and visualize performance deltas between tests
Jenkins Plugin Enables automated pass/fail of tests
Troubleshoot Slow
Response Times
Quickly find root cause of performance issues and test failure
Service Endpoints Track shared services performance over time (APIs)
Custom Match Rules Name Business Transactions to match load test scripts
Custom Dashboards Management and technical level tracking of application
performance
AppDynamics Confidential and Proprietary 19
Questions and contact
• Email: brad.stoner@appdynamics.com
• Twitter: @sandbreak80
AppDynamics Confidential and Proprietary 20
Please give us your feedback—Session HOL16978
• Complete the online survey you'll receive via
email later today or via text at:
Text this number: 878787
Text this word: APPSPHERE
• Every time you submit a session survey, your
name will be entered in a random drawing.
We're giving away Amazon Echos
to 5 lucky winners!
• Thank you for your input
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 21
Win!
Thank you
Screenshots of live demo
for offline viewing
Jenkins for CI/CD
AppDynamics Confidential and Proprietary 24
Git and AppDynamics integration
AppDynamics Confidential and Proprietary 25
Jenkins job details
AppDynamics Confidential and Proprietary 26
AppDynamics Jenkins plugin
AppDynamics Confidential and Proprietary 27
Performance job execution
AppDynamics Confidential and Proprietary 28
NeoLoad performance report
AppDynamics Confidential and Proprietary 29
KonaKart test application
AppDynamics Confidential and Proprietary 30
Custom events in AppDynamics
AppDynamics Confidential and Proprietary 31
Identify slow queries
AppDynamics Confidential and Proprietary 32
Add missing index
AppDynamics Confidential and Proprietary 33
Compare release performance
AppDynamics Confidential and Proprietary 34
Reference material
Technology stack
AppDynamics Confidential and Proprietary 36
AppDynamics Confidential and Proprietary 36
Demo resources
• AppDynamics controller - https://www.appdynamics.com/free-trial/
• Docker Compose YML: https://github.com/sandbreak80/myapp
• NeoLoad project for KonaKart (localhost):
https://github.com/sandbreak80/konakart
– Jenkins user will need access to modify these files
• Docker Hub for mysql access via adminer:
https://hub.docker.com/r/sandbreak80/adminer/
• Docker Hub for konakart:
https://hub.docker.com/r/sandbreak80/docker_konakart/
AppDynamics Confidential and Proprietary 37
Demo software install
• Setup instance for docker
– Install Docker: curl -sSL https://get.docker.com/ | sh
– Avoid sudo for docker: sudo usermod -aG docker ubuntu
– Install docker compose:
• sudo apt-get -y install python-pip
• sudo pip install docker-compose
• Jenkins 2 install (if needed):
– wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
– sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
– sudo apt-get update
– sudo apt-get install jenkins
• NeoLoad install
– wget https://d24mnm5myvorwj.cloudfront.net/documents/download/neoload/v5.2/neoload_5_2_2_linux_x64.sh
– sudo chmod +x neoload_5_2_2_linux_x64.sh
– mkdir /home/ubuntu/neoload
– sudo sh neoload_5_2_2_linux_x64.sh -q -dir /home/ubuntu/neoload -Vsys.installationTypeId=Controller -
Vsys.component.Common$Boolean=true -Vsys.component.Controller$Boolean=true
AppDynamics Confidential and Proprietary 38
Start demo environment
• Clone docker-compose file
– mkdir myapp
– cd myapp
– git clone https://github.com/sandbreak80/myapp.git
• Pull, build, and start docker containers
– sudo docker-compose start
AppDynamics Confidential and Proprietary 39
Configure AppDynamics
• Connect to the KonaKart instance
– sudo docker exec -i -t konakart /bin/bash
• Install VIM: apt-get install vim
• Edit the tomcat environment file
– vi /usr/local/konakart/bin/setenv.sh
– export CATALINA_OPTS="$CATALINA_OPTS -
javaagent:/home/appdynamics/java_agent/javaagent.jar
– -Dappdynamics.controller.hostName=your_controller_name_or_ip
– -Dappdynamics.controller.port=8090
– -Dappdynamics.agent.applicationName=KonaKart
– -Dappdynamics.agent.tierName=Kona_Server
– -Dappdynamics.agent.nodeName=Node1
– -Dappdynamics.agent.accountName=customer1
– -Dappdynamics.agent.accountAccessKey=your_access_key"
AppDynamics Confidential and Proprietary 40
AppDynamics authentication
• BASIC authentication is used in AppDynamics to create custom events and time ranges in the
next two slides
– As a reference, the AppDynamics REST API is documented here -
https://docs.appdynamics.com/display/PRO42/Using+the+Controller+APIs.
– The first call authenticates with the AppDynamics controller, and stores the authentication cookie into
/tmp/session.dat on the Jenkins Server. Note that we’re using a basic authentication header instead of
directly exposing our username and password.
– There are a number of utilities you can leverage to base64 encode a string, like
https://www.base64encode.org/.
– The username / password format to encode is: <username>@<account name>:<password> and the @
symbol needs to be URI encoded.
– By default, in single tenant controllers, the <account name> will always be customer1. So, to get our
base64 authentication header we can encode - admin%40customer1:appdynamics – to get our
authentication header
– YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M=
– ***Note***
– We need to URI encode our username and password string, which is why we use ‘%40’ instead of the
‘@’ character.
AppDynamics Confidential and Proprietary 41
Create custom event in AppDynamics
• Load test start (linux shell step):
– curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token" -X
GET http://your_appdynamics_controller:8090/controller/auth?action=login
– PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_
TEST_START-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server”
– curl -s -b /tmp/session.dat --data "${PARAMS}"
http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events
• Load test stop (linux shell step):
– curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token " -X
GET http://your_appdynamics_controller:8090/controller/auth?action=login
– PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_
TEST_STOP-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server”
– curl -s -b /tmp/session.dat --data "${PARAMS}"
http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events
AppDynamics Confidential and Proprietary 42
Create custom time range in AppDynamics
• Linux shell step in Jenkins for creating a custom time range based on job start and end:
#!/bin/sh
END=$(date +%s)
echo "$END"
END_MS=$(($END * 1000))
echo "$END_MS"
echo "$BUILD_TIMESTAMP"
jobstart=$BUILD_TIMESTAMP
START=$(date -d "${jobstart}" +%s)
echo "$START"
START_MS=$(($START * 1000))
echo "$START_MS"
curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M=" -X GET http://devopslabappsphere:8090/controller/auth?action=login
PARAMS="{"name":"LOAD_TEST-${JOB_NAME}-
${BUILD_ID}","description":"","shared":true,"timeRange":{"type":"BETWEEN_TIMES","durationInMinutes":0,"startTime":${START_MS},"endTime":${END_MS}}}"
curl --verbose -s -b /tmp/session.dat --header "Content-Type: application/json;charset=utf-8" --header "Authorization: Basic YnJhZCU0MGN1c3RvbWVyMTozQ29tMzgxMg==" --header "Accept-
Encoding: gzip, deflate" --header "Accept: application/json, text/plain" --data "${PARAMS}" http://devopslabappsphere:8090/controller/restui/user/createCustomRange
AppDynamics Confidential and Proprietary 43
NeoLoad with GIT
• GitHub project - https://github.com/sandbreak80/konakart
– mkdir neoload_projects/konakart
– cd neoload_projects/konakart
– git clone https://github.com/sandbreak80/konakart.git
• Pull project in Jenkins job (linux shell step):
– cd /home/ubuntu/neoload_projects/konakart
– git fetch –all
– git reset --hard origin/master
• Push test results (linux shell step):
– cd /home/ubuntu/neoload_projects/konakart
– git add *git commit -a -m "jenkins-${JOB_NAME}-${BUILD_NUMBER}”
– git push https://username:your_github_token@github.com/username/konakart.git --all
• Generate GitHub token:
– https://help.github.com/articles/creating-an-access-token-for-command-line-use/
AppDynamics Confidential and Proprietary 44
Jenkins plugins used
• AppDynamics - https://wiki.jenkins-
ci.org/display/JENKINS/AppDynamics+Plugin/
• NeoLoad - https://wiki.jenkins-
ci.org/display/JENKINS/NeoLoad+Plugin
• Timestamper - https://wiki.jenkins-
ci.org/display/JENKINS/Timestamper
– Manage Jenkins -> Configure ->
– Date pattern for the BUILD_TIMESTAMP
– EEE d MMM yyyy HH:mm:ss
AppDynamics Confidential and Proprietary 45
Adminer access
• http://your_server_name:8080/
• host: konakart
• user : monitor
• password: appd123
• database: konakart
AppDynamics Confidential and Proprietary 46
KonaKart access
• http://your_server_name:8780/konakart/
AppDynamics Confidential and Proprietary 47

Más contenido relacionado

Destacado

Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16AppDynamics
 
イノベーション創発塾_2017 001
イノベーション創発塾_2017 001イノベーション創発塾_2017 001
イノベーション創発塾_2017 001Rikie Ishii
 
Top 10 Application Problems
Top 10 Application ProblemsTop 10 Application Problems
Top 10 Application ProblemsAppDynamics
 
Containers: Give Me The Facts, Not The Hype - AppD Summit Europe
Containers: Give Me The Facts, Not The Hype - AppD Summit EuropeContainers: Give Me The Facts, Not The Hype - AppD Summit Europe
Containers: Give Me The Facts, Not The Hype - AppD Summit EuropeAppDynamics
 
Velocity Presentation - Unified Monitoring with AppDynamics
Velocity Presentation - Unified Monitoring with AppDynamicsVelocity Presentation - Unified Monitoring with AppDynamics
Velocity Presentation - Unified Monitoring with AppDynamicsAppDynamics
 
Introduction to appDynamics
Introduction to appDynamics Introduction to appDynamics
Introduction to appDynamics Siddhanta Rath
 
AppSphere 15 - The Future of Enterprise IT
AppSphere 15 - The Future of Enterprise ITAppSphere 15 - The Future of Enterprise IT
AppSphere 15 - The Future of Enterprise ITAppDynamics
 
Become an AppDynamics Dashboard Rockstar - AppD Summit Europe
Become an AppDynamics Dashboard Rockstar - AppD Summit EuropeBecome an AppDynamics Dashboard Rockstar - AppD Summit Europe
Become an AppDynamics Dashboard Rockstar - AppD Summit EuropeAppDynamics
 
Business Transactions with AppDynamics
Business Transactions with AppDynamicsBusiness Transactions with AppDynamics
Business Transactions with AppDynamicsAppDynamics
 
Forrester Research: How To Organise Your Business For Digital Success - AppD ...
Forrester Research: How To Organise Your Business For Digital Success - AppD ...Forrester Research: How To Organise Your Business For Digital Success - AppD ...
Forrester Research: How To Organise Your Business For Digital Success - AppD ...AppDynamics
 
Cisco and AppDynamics: Redefining Application Intelligence - AppD Summit Europe
Cisco and AppDynamics: Redefining Application Intelligence - AppD Summit EuropeCisco and AppDynamics: Redefining Application Intelligence - AppD Summit Europe
Cisco and AppDynamics: Redefining Application Intelligence - AppD Summit EuropeAppDynamics
 
End User Monitoring with AppDynamics - AppSphere16
End User Monitoring with AppDynamics - AppSphere16End User Monitoring with AppDynamics - AppSphere16
End User Monitoring with AppDynamics - AppSphere16AppDynamics
 

Destacado (12)

Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16
 
イノベーション創発塾_2017 001
イノベーション創発塾_2017 001イノベーション創発塾_2017 001
イノベーション創発塾_2017 001
 
Top 10 Application Problems
Top 10 Application ProblemsTop 10 Application Problems
Top 10 Application Problems
 
Containers: Give Me The Facts, Not The Hype - AppD Summit Europe
Containers: Give Me The Facts, Not The Hype - AppD Summit EuropeContainers: Give Me The Facts, Not The Hype - AppD Summit Europe
Containers: Give Me The Facts, Not The Hype - AppD Summit Europe
 
Velocity Presentation - Unified Monitoring with AppDynamics
Velocity Presentation - Unified Monitoring with AppDynamicsVelocity Presentation - Unified Monitoring with AppDynamics
Velocity Presentation - Unified Monitoring with AppDynamics
 
Introduction to appDynamics
Introduction to appDynamics Introduction to appDynamics
Introduction to appDynamics
 
AppSphere 15 - The Future of Enterprise IT
AppSphere 15 - The Future of Enterprise ITAppSphere 15 - The Future of Enterprise IT
AppSphere 15 - The Future of Enterprise IT
 
Become an AppDynamics Dashboard Rockstar - AppD Summit Europe
Become an AppDynamics Dashboard Rockstar - AppD Summit EuropeBecome an AppDynamics Dashboard Rockstar - AppD Summit Europe
Become an AppDynamics Dashboard Rockstar - AppD Summit Europe
 
Business Transactions with AppDynamics
Business Transactions with AppDynamicsBusiness Transactions with AppDynamics
Business Transactions with AppDynamics
 
Forrester Research: How To Organise Your Business For Digital Success - AppD ...
Forrester Research: How To Organise Your Business For Digital Success - AppD ...Forrester Research: How To Organise Your Business For Digital Success - AppD ...
Forrester Research: How To Organise Your Business For Digital Success - AppD ...
 
Cisco and AppDynamics: Redefining Application Intelligence - AppD Summit Europe
Cisco and AppDynamics: Redefining Application Intelligence - AppD Summit EuropeCisco and AppDynamics: Redefining Application Intelligence - AppD Summit Europe
Cisco and AppDynamics: Redefining Application Intelligence - AppD Summit Europe
 
End User Monitoring with AppDynamics - AppSphere16
End User Monitoring with AppDynamics - AppSphere16End User Monitoring with AppDynamics - AppSphere16
End User Monitoring with AppDynamics - AppSphere16
 

Más de AppDynamics

Good Migrations: APM Essentials For Cloud Success at AppD Global Tour London
Good Migrations: APM Essentials For Cloud Success at AppD Global Tour LondonGood Migrations: APM Essentials For Cloud Success at AppD Global Tour London
Good Migrations: APM Essentials For Cloud Success at AppD Global Tour LondonAppDynamics
 
Top Tips For AppD Adoption Success at AppD Global Tour London
Top Tips For AppD Adoption Success at AppD Global Tour LondonTop Tips For AppD Adoption Success at AppD Global Tour London
Top Tips For AppD Adoption Success at AppD Global Tour LondonAppDynamics
 
How To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour LondonHow To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour LondonAppDynamics
 
Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...
Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...
Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...AppDynamics
 
Just Eat: DevOps at Scale at AppD Global Tour London
Just Eat: DevOps at Scale at AppD Global Tour LondonJust Eat: DevOps at Scale at AppD Global Tour London
Just Eat: DevOps at Scale at AppD Global Tour LondonAppDynamics
 
What’s Next For AppDynamics and Cisco? AppD Global Tour London
What’s Next For AppDynamics and Cisco? AppD Global Tour LondonWhat’s Next For AppDynamics and Cisco? AppD Global Tour London
What’s Next For AppDynamics and Cisco? AppD Global Tour LondonAppDynamics
 
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...AppDynamics
 
Overcoming Transformational Barriers with Ensono - AppD Global Tour London
Overcoming Transformational Barriers with Ensono - AppD Global Tour LondonOvercoming Transformational Barriers with Ensono - AppD Global Tour London
Overcoming Transformational Barriers with Ensono - AppD Global Tour LondonAppDynamics
 
Equinor: What does normal look like?
Equinor: What does normal look like? Equinor: What does normal look like?
Equinor: What does normal look like? AppDynamics
 
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...AppDynamics
 
Top Tips For AppD Adoption Success - AppD Global Tour Stockholm
Top Tips For AppD Adoption Success - AppD Global Tour StockholmTop Tips For AppD Adoption Success - AppD Global Tour Stockholm
Top Tips For AppD Adoption Success - AppD Global Tour StockholmAppDynamics
 
What's next for AppD and Cisco? - AppD Global Tour
What's next for AppD and Cisco? - AppD Global TourWhat's next for AppD and Cisco? - AppD Global Tour
What's next for AppD and Cisco? - AppD Global TourAppDynamics
 
British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...
British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...
British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...AppDynamics
 
AppDynamics the Missing Link to DevOps - AppSphere16
AppDynamics the Missing Link to DevOps - AppSphere16AppDynamics the Missing Link to DevOps - AppSphere16
AppDynamics the Missing Link to DevOps - AppSphere16AppDynamics
 
AppDynamics Custom Transaction Correlation
 AppDynamics Custom Transaction Correlation AppDynamics Custom Transaction Correlation
AppDynamics Custom Transaction CorrelationAppDynamics
 
Memory Heap Analysis with AppDynamics - AppSphere16
Memory Heap Analysis with AppDynamics - AppSphere16Memory Heap Analysis with AppDynamics - AppSphere16
Memory Heap Analysis with AppDynamics - AppSphere16AppDynamics
 
AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16AppDynamics
 
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...AppDynamics
 

Más de AppDynamics (18)

Good Migrations: APM Essentials For Cloud Success at AppD Global Tour London
Good Migrations: APM Essentials For Cloud Success at AppD Global Tour LondonGood Migrations: APM Essentials For Cloud Success at AppD Global Tour London
Good Migrations: APM Essentials For Cloud Success at AppD Global Tour London
 
Top Tips For AppD Adoption Success at AppD Global Tour London
Top Tips For AppD Adoption Success at AppD Global Tour LondonTop Tips For AppD Adoption Success at AppD Global Tour London
Top Tips For AppD Adoption Success at AppD Global Tour London
 
How To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour LondonHow To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour London
 
Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...
Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...
Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...
 
Just Eat: DevOps at Scale at AppD Global Tour London
Just Eat: DevOps at Scale at AppD Global Tour LondonJust Eat: DevOps at Scale at AppD Global Tour London
Just Eat: DevOps at Scale at AppD Global Tour London
 
What’s Next For AppDynamics and Cisco? AppD Global Tour London
What’s Next For AppDynamics and Cisco? AppD Global Tour LondonWhat’s Next For AppDynamics and Cisco? AppD Global Tour London
What’s Next For AppDynamics and Cisco? AppD Global Tour London
 
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
 
Overcoming Transformational Barriers with Ensono - AppD Global Tour London
Overcoming Transformational Barriers with Ensono - AppD Global Tour LondonOvercoming Transformational Barriers with Ensono - AppD Global Tour London
Overcoming Transformational Barriers with Ensono - AppD Global Tour London
 
Equinor: What does normal look like?
Equinor: What does normal look like? Equinor: What does normal look like?
Equinor: What does normal look like?
 
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
 
Top Tips For AppD Adoption Success - AppD Global Tour Stockholm
Top Tips For AppD Adoption Success - AppD Global Tour StockholmTop Tips For AppD Adoption Success - AppD Global Tour Stockholm
Top Tips For AppD Adoption Success - AppD Global Tour Stockholm
 
What's next for AppD and Cisco? - AppD Global Tour
What's next for AppD and Cisco? - AppD Global TourWhat's next for AppD and Cisco? - AppD Global Tour
What's next for AppD and Cisco? - AppD Global Tour
 
British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...
British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...
British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...
 
AppDynamics the Missing Link to DevOps - AppSphere16
AppDynamics the Missing Link to DevOps - AppSphere16AppDynamics the Missing Link to DevOps - AppSphere16
AppDynamics the Missing Link to DevOps - AppSphere16
 
AppDynamics Custom Transaction Correlation
 AppDynamics Custom Transaction Correlation AppDynamics Custom Transaction Correlation
AppDynamics Custom Transaction Correlation
 
Memory Heap Analysis with AppDynamics - AppSphere16
Memory Heap Analysis with AppDynamics - AppSphere16Memory Heap Analysis with AppDynamics - AppSphere16
Memory Heap Analysis with AppDynamics - AppSphere16
 
AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16
 
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
 

Último

SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 

Último (20)

SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

DevOps Continuous Integration and APM Best Practices: Automation, Microservices, and Beyond - AppSphere16

  • 1. Automate performance testing with AppDynamics using continuous integration platforms Brad Stoner Senior Sales Engineer | AppDynamics
  • 2. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 2 Notice The information and materials included in this presentation (collectively, the “Materials”) are the proprietary information of AppDynamics, Inc. (“AppDynamics” or the “Company”). No part of the Materials may be reproduced, distributed, communicated or displayed in any form or by any means, or used to make any derivative work, without prior written permission from AppDynamics. The Materials may contain product roadmap information of AppDynamics. AppDynamics reserves the right to change any product roadmap information at any time, for any reason and without notice. This information is intended to outline AppDynamics' general product direction, it is not a guarantee of future product features, and it should not be relied on in making a purchasing decision. The development, release, and timing of any features or functionality described for AppDynamics' products remains at AppDynamics' sole discretion. AppDynamics reserves the right to change any planned features at any time before making them generally available as well as never making them generally available. All third-party trademarks, including names, logos and brands, referenced by AppDynamics in this presentation are property of their respective owners. All references to third-party trademarks are for identification purposes only and shall be considered nominative fair use under trademark law. © 2016 AppDynamics, Inc. All rights reserved.
  • 3. Key takeaways • How to get started with performance test automation • How to detect and resolve performance issues earlier in the development lifecycle with AppDynamics • How to maximize the quality and value of your performance test strategy AppDynamics Confidential and Proprietary 3
  • 4. My background • 7 years @ H&R Block Load and Performance Team – 5 person team – 100k + user concurrency – Tax peak 2nd week after go-live – 70 applications annually – Diverse technology stack – including 3rd party • 2 years @ Neotys – Senior Performance Engineer • Currently Sales Engineer @ AppDynamics AppDynamics Confidential and Proprietary 4
  • 5. What is performance testing? AppDynamics Confidential and Proprietary 5
  • 6. Why bother? AppDynamics Confidential and Proprietary 6 Google - Using page speed in site ranking Facebook - Launches 'lite' mobile app Amazon - 100ms delay -> $6.79M sales decrease Recent airline industry outages
  • 7. Legacy performance testing AppDynamics Confidential and Proprietary 7
  • 8. Increasing velocity …performance testing isn't historically fast AppDynamics Confidential and Proprietary 8
  • 9. Keeping up with Agile / DevOps AppDynamics Confidential and Proprietary 9
  • 11. Pull back the layers AppDynamics Confidential and Proprietary 11 Prod / Perf Pre-Prod / Staging Dev / QA
  • 12. Dev / QA • Short test cycle • Low resources / cost • Rapid feedback • Component testing AppDynamics Confidential and Proprietary 12
  • 13. Staging / Pre-Prod • Increased resources • Long test durations • Additional resources • Multiple test elements • Integrated systems • Build validation AppDynamics Confidential and Proprietary 13
  • 14. Prod / Perf • High complexity • Multiple integrated systems • Environmental variance • Resource intensive • High cost AppDynamics Confidential and Proprietary 14
  • 15. Resources and speed Resources Speed Prod / Perf Staging / Pre- Prod DEV/QA
  • 16. Mobile web/app example Dev testing - APIs Staging testing – Capacity w/ UI and API Build automation Baseline Pre-Prod / Staging - platform Prod / Perf testing (inside firewall) – stability / scalability Prod / Perf testing (outside firewall) – network / load balancing QA testing – API flows Optimize app chatter and network resources Mobile app released Mobile app built Mobile site releasedMobile site built APIs released/ BE functionality Front End Optimization
  • 17. What if legacy test principles were applied? Staging testing – Capacity w/ UI and API Baseline Pre-Prod / Staging - platform Prod / Perf testing (inside firewall) – stability / scalability Prod / Perf testing (outside firewall) – network / load balancing Front End Optimization Optimize app chatter and network resources Mobile app released Mobile app built Mobile site releasedMobile site built APIs released/ BE functionality
  • 18. Demo
  • 19. AppDynamics Key Components AppDynamics Usage Compare Releases Compare critical metrics for different tests (FE and BE) Database Monitoring Measure and visualize performance deltas between tests Server Monitoring Measure and visualize performance deltas between tests Jenkins Plugin Enables automated pass/fail of tests Troubleshoot Slow Response Times Quickly find root cause of performance issues and test failure Service Endpoints Track shared services performance over time (APIs) Custom Match Rules Name Business Transactions to match load test scripts Custom Dashboards Management and technical level tracking of application performance AppDynamics Confidential and Proprietary 19
  • 20. Questions and contact • Email: brad.stoner@appdynamics.com • Twitter: @sandbreak80 AppDynamics Confidential and Proprietary 20
  • 21. Please give us your feedback—Session HOL16978 • Complete the online survey you'll receive via email later today or via text at: Text this number: 878787 Text this word: APPSPHERE • Every time you submit a session survey, your name will be entered in a random drawing. We're giving away Amazon Echos to 5 lucky winners! • Thank you for your input APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 21 Win!
  • 23. Screenshots of live demo for offline viewing
  • 24. Jenkins for CI/CD AppDynamics Confidential and Proprietary 24
  • 25. Git and AppDynamics integration AppDynamics Confidential and Proprietary 25
  • 26. Jenkins job details AppDynamics Confidential and Proprietary 26
  • 27. AppDynamics Jenkins plugin AppDynamics Confidential and Proprietary 27
  • 28. Performance job execution AppDynamics Confidential and Proprietary 28
  • 29. NeoLoad performance report AppDynamics Confidential and Proprietary 29
  • 30. KonaKart test application AppDynamics Confidential and Proprietary 30
  • 31. Custom events in AppDynamics AppDynamics Confidential and Proprietary 31
  • 32. Identify slow queries AppDynamics Confidential and Proprietary 32
  • 33. Add missing index AppDynamics Confidential and Proprietary 33
  • 34. Compare release performance AppDynamics Confidential and Proprietary 34
  • 36. Technology stack AppDynamics Confidential and Proprietary 36 AppDynamics Confidential and Proprietary 36
  • 37. Demo resources • AppDynamics controller - https://www.appdynamics.com/free-trial/ • Docker Compose YML: https://github.com/sandbreak80/myapp • NeoLoad project for KonaKart (localhost): https://github.com/sandbreak80/konakart – Jenkins user will need access to modify these files • Docker Hub for mysql access via adminer: https://hub.docker.com/r/sandbreak80/adminer/ • Docker Hub for konakart: https://hub.docker.com/r/sandbreak80/docker_konakart/ AppDynamics Confidential and Proprietary 37
  • 38. Demo software install • Setup instance for docker – Install Docker: curl -sSL https://get.docker.com/ | sh – Avoid sudo for docker: sudo usermod -aG docker ubuntu – Install docker compose: • sudo apt-get -y install python-pip • sudo pip install docker-compose • Jenkins 2 install (if needed): – wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - – sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' – sudo apt-get update – sudo apt-get install jenkins • NeoLoad install – wget https://d24mnm5myvorwj.cloudfront.net/documents/download/neoload/v5.2/neoload_5_2_2_linux_x64.sh – sudo chmod +x neoload_5_2_2_linux_x64.sh – mkdir /home/ubuntu/neoload – sudo sh neoload_5_2_2_linux_x64.sh -q -dir /home/ubuntu/neoload -Vsys.installationTypeId=Controller - Vsys.component.Common$Boolean=true -Vsys.component.Controller$Boolean=true AppDynamics Confidential and Proprietary 38
  • 39. Start demo environment • Clone docker-compose file – mkdir myapp – cd myapp – git clone https://github.com/sandbreak80/myapp.git • Pull, build, and start docker containers – sudo docker-compose start AppDynamics Confidential and Proprietary 39
  • 40. Configure AppDynamics • Connect to the KonaKart instance – sudo docker exec -i -t konakart /bin/bash • Install VIM: apt-get install vim • Edit the tomcat environment file – vi /usr/local/konakart/bin/setenv.sh – export CATALINA_OPTS="$CATALINA_OPTS - javaagent:/home/appdynamics/java_agent/javaagent.jar – -Dappdynamics.controller.hostName=your_controller_name_or_ip – -Dappdynamics.controller.port=8090 – -Dappdynamics.agent.applicationName=KonaKart – -Dappdynamics.agent.tierName=Kona_Server – -Dappdynamics.agent.nodeName=Node1 – -Dappdynamics.agent.accountName=customer1 – -Dappdynamics.agent.accountAccessKey=your_access_key" AppDynamics Confidential and Proprietary 40
  • 41. AppDynamics authentication • BASIC authentication is used in AppDynamics to create custom events and time ranges in the next two slides – As a reference, the AppDynamics REST API is documented here - https://docs.appdynamics.com/display/PRO42/Using+the+Controller+APIs. – The first call authenticates with the AppDynamics controller, and stores the authentication cookie into /tmp/session.dat on the Jenkins Server. Note that we’re using a basic authentication header instead of directly exposing our username and password. – There are a number of utilities you can leverage to base64 encode a string, like https://www.base64encode.org/. – The username / password format to encode is: <username>@<account name>:<password> and the @ symbol needs to be URI encoded. – By default, in single tenant controllers, the <account name> will always be customer1. So, to get our base64 authentication header we can encode - admin%40customer1:appdynamics – to get our authentication header – YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M= – ***Note*** – We need to URI encode our username and password string, which is why we use ‘%40’ instead of the ‘@’ character. AppDynamics Confidential and Proprietary 41
  • 42. Create custom event in AppDynamics • Load test start (linux shell step): – curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token" -X GET http://your_appdynamics_controller:8090/controller/auth?action=login – PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_ TEST_START-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server” – curl -s -b /tmp/session.dat --data "${PARAMS}" http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events • Load test stop (linux shell step): – curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token " -X GET http://your_appdynamics_controller:8090/controller/auth?action=login – PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_ TEST_STOP-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server” – curl -s -b /tmp/session.dat --data "${PARAMS}" http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events AppDynamics Confidential and Proprietary 42
  • 43. Create custom time range in AppDynamics • Linux shell step in Jenkins for creating a custom time range based on job start and end: #!/bin/sh END=$(date +%s) echo "$END" END_MS=$(($END * 1000)) echo "$END_MS" echo "$BUILD_TIMESTAMP" jobstart=$BUILD_TIMESTAMP START=$(date -d "${jobstart}" +%s) echo "$START" START_MS=$(($START * 1000)) echo "$START_MS" curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M=" -X GET http://devopslabappsphere:8090/controller/auth?action=login PARAMS="{"name":"LOAD_TEST-${JOB_NAME}- ${BUILD_ID}","description":"","shared":true,"timeRange":{"type":"BETWEEN_TIMES","durationInMinutes":0,"startTime":${START_MS},"endTime":${END_MS}}}" curl --verbose -s -b /tmp/session.dat --header "Content-Type: application/json;charset=utf-8" --header "Authorization: Basic YnJhZCU0MGN1c3RvbWVyMTozQ29tMzgxMg==" --header "Accept- Encoding: gzip, deflate" --header "Accept: application/json, text/plain" --data "${PARAMS}" http://devopslabappsphere:8090/controller/restui/user/createCustomRange AppDynamics Confidential and Proprietary 43
  • 44. NeoLoad with GIT • GitHub project - https://github.com/sandbreak80/konakart – mkdir neoload_projects/konakart – cd neoload_projects/konakart – git clone https://github.com/sandbreak80/konakart.git • Pull project in Jenkins job (linux shell step): – cd /home/ubuntu/neoload_projects/konakart – git fetch –all – git reset --hard origin/master • Push test results (linux shell step): – cd /home/ubuntu/neoload_projects/konakart – git add *git commit -a -m "jenkins-${JOB_NAME}-${BUILD_NUMBER}” – git push https://username:your_github_token@github.com/username/konakart.git --all • Generate GitHub token: – https://help.github.com/articles/creating-an-access-token-for-command-line-use/ AppDynamics Confidential and Proprietary 44
  • 45. Jenkins plugins used • AppDynamics - https://wiki.jenkins- ci.org/display/JENKINS/AppDynamics+Plugin/ • NeoLoad - https://wiki.jenkins- ci.org/display/JENKINS/NeoLoad+Plugin • Timestamper - https://wiki.jenkins- ci.org/display/JENKINS/Timestamper – Manage Jenkins -> Configure -> – Date pattern for the BUILD_TIMESTAMP – EEE d MMM yyyy HH:mm:ss AppDynamics Confidential and Proprietary 45
  • 46. Adminer access • http://your_server_name:8080/ • host: konakart • user : monitor • password: appd123 • database: konakart AppDynamics Confidential and Proprietary 46