SlideShare uma empresa Scribd logo
1 de 43
AppDynamics Webinars:
Building Custom Extensions
Todd Radel, Senior Manager – Customer Advocacy
Agenda
• Introduction
• Writing a script extension
• Writing a Java extension
• Using your custom metrics
• Best practices
• Office hours
About Me
Todd Radel
SENIOR MANAGER
CUSTOMER ADVOCACY TEAM
• More than 20 years experience in the software industry
• Java, .NET, Python, Perl
• Author of the Python SDK for AppDynamics REST API
• Author of six AppDynamics Extensions: F5, Tibco EMS,
Redis, Keynote, SQL, URL Monitor
Copyright © 2015 AppDynamics. All rights reserved. 3
tradel@appdynamics.com
+1 (484) 857-2335
tradel
todd.radel
linkedin.com/in/tradel
INTRODUCTION
What is an Extension?
• Plugs in to Machine Agent
• Imports additional metrics to AppDynamics
Copyright © 2015 AppDynamics. All rights reserved. 5
Why Use Extensions?
“I already have Graphite/Nagios/my own custom tools…”
BUT:
• Add more color to overall AppDynamics picture
• Baseline and alert on custom metrics
• Create custom dashboards
• Work towards a “single pane of glass”
Copyright © 2015 AppDynamics. All rights reserved. 6
Example Extensions
• Apache Server Monitor
• F5 Monitor
• ActiveMQ Monitor
…or build your own!
Copyright © 2015 AppDynamics. All rights reserved. 7
Use Cases
• Run a SQL query every few minutes to count
sales/signups/etc.
• Extract metrics from custom instrumentation
• Eliminate redundant tools
Copyright © 2015 AppDynamics. All rights reserved. 8
SCRIPT EXTENSIONS
Anatomy of a Simple Script Extension
• Script file
• monitor.xml – describes the extension
Copyright © 2015 AppDynamics. All rights reserved. 10
Example
• Write an extension to count the number of files in /var/tmp
and alert if there are too many
Copyright © 2015 AppDynamics. All rights reserved. 11
Simple Extension Script
Copyright © 2015 AppDynamics. All rights reserved. 12
Script Output
name=Custom Metrics|File Count|count, value=29, aggregator=OBSERVATION,
time-rollup=CURRENT, cluster-rollup=COLLECTIVE
• name – path and name of your metric
• value – metric value
• aggregator – how to handle multiple values in one interval
• time-rollup – how to aggregate values over time
• cluster-rollup – how to aggregate values over nodes
Copyright © 2015 AppDynamics. All rights reserved. 13
Metric Aggregation
Aggregation Time Rollup Cluster Rollup
How should the controller handle
multiple values in a single minute?
How should values be aggregated over
time?
How should values be aggregated
across nodes in a tier?
AVERAGE
Average of all reported values in that
minute
AVERAGE
Average of all one-minute values
INDIVIDUAL
Average of metric values across each
node in the tier
SUM
Sum of all reported values in the
minute
SUM
Sum of all one-minute values
COLLECTIVE
Sum of metric values across each node
in the tier
OBSERVATION
Last reported value in the minute
CURRENT
Last reported one-minute value
Copyright © 2015 AppDynamics. All rights reserved. 14
Simple monitor.xml for a Script
Copyright © 2015 AppDynamics. All rights reserved. 15
”periodic” or “continuous”
script filename
OS-Specific monitor.xml for a Script
Copyright © 2015 AppDynamics. All rights reserved. 16
JAVA EXTENSIONS
Anatomy of a Java Extension
• Class file or JAR file
• Dependent libraries
• Configuration file
• monitor.xml
Copyright © 2015 AppDynamics. All rights reserved. 18
Structuring Your Java Code
• Can be a single class
• Extend from com.singularity.ee.agent.systemagent.api.AManagedMonitor
• Override and implement execute() method
• Call getMetricWriter().printMetric() to send data
Copyright © 2015 AppDynamics. All rights reserved. 19
Example
• Write an extension to import metrics from the Linux
collectd(8) daemon
Copyright © 2015 AppDynamics. All rights reserved. 20
Sample Execute() Method
Copyright © 2015 AppDynamics. All rights reserved. 21
Configuring Your Extension
• Task arguments from monitor.xml are sent as first
parameter to execute() method
public TaskOutput execute(Map<String, String> args,
TaskExecutionContext taskExecutionContext)
throws TaskExecutionException {
• Configure via external file (e.g. config.yml), read the file
during execute()
Copyright © 2015 AppDynamics. All rights reserved. 22
Monitor.xml for Java
Copyright © 2015 AppDynamics. All rights reserved. 23
Installation
Copyright © 2015 AppDynamics. All rights reserved. 24
HTTP LISTENER
When to use the HTTP Listener
• When you don’t have control over the code
• When the data collector runs on another machine
Copyright © 2015 AppDynamics. All rights reserved. 26
Starting Machine Agent with HTTP Listener
java -Dmetric.http.listener=true
-Dmetric.http.listener.port=8000
-jar machineagent.jar
Copyright © 2015 AppDynamics. All rights reserved. 27
Sending Metric Data
Copyright © 2015 AppDynamics. All rights reserved. 28
Sending Metrics as JSON
Copyright © 2015 AppDynamics. All rights reserved. 29
USING CUSTOM METRICS
Locating Your Custom Metrics
Copyright © 2015 AppDynamics. All rights reserved. 31
Tier name
Node name
Metric path
Create Custom Dashboards
Copyright © 2015 AppDynamics. All rights reserved. 32
Sample Custom Dashboard
Copyright © 2015 AppDynamics. All rights reserved. 33
Create Health Rules
Copyright © 2015 AppDynamics. All rights reserved. 34
BEST PRACTICES
Best Practices
• Make it configurable via monitor.xml or config.yml
• Allow a custom metric path
• Write portable code
• Send output to the machine agent log
• Follow our “mavenized” project structure
• Post the code on GitHub and encourage pull requests
Copyright © 2015 AppDynamics. All rights reserved. 36
Increasing the Agent Metric Limit
• If you don’t see all metrics in the controller UI
• Check machine agent logs for “metric limit reached”
• Add command line options and restart machine agent
• Without custom extensions:
java -jar machineagent.jar
• With extensions:
java -Xmx256m -Dappdynamics.agent.maxMetrics=10000
-jar machineagent.jar
Copyright © 2015 AppDynamics. All rights reserved. 37
Publishing Your Extension
• Remove any usernames/passwords/hostnames from
configuration files
• Add README.md and LICENSE files
• Post the code on GitHub
• Create new thread on AppDynamics Community to
announce and publish!
Copyright © 2015 AppDynamics. All rights reserved. 38
Contents of Your README.md
• Description
• Requirements
• Installation
• Configuration
• Metrics Produced
• How to Contribute (optional)
• History/Release Notes
• Screenshots
Copyright © 2015 AppDynamics. All rights reserved. 39
FURTHER READING
Documentation
• Extensions and Custom Metrics
• Build a Monitoring Extension Using Java
• Build a Monitoring Extension Using Scripts
• Machine Agent HTTP Listener
Copyright © 2015 AppDynamics. All rights reserved. 41
Sample Java code
• Apache Monitoring Extension
• URL Monitoring Extension
• Follow along as I finish these extensions!
https://github.com/tradel/collectd-monitoring-extension
https://github.com/tradel/file-count-monitoring-extension
Copyright © 2015 AppDynamics. All rights reserved. 42
Thank You

Mais conteúdo relacionado

Mais procurados

仮想DOMを理解する
仮想DOMを理解する仮想DOMを理解する
仮想DOMを理解するK K
 
Project: People - Podstawy testów użytkowych
Project: People - Podstawy testów użytkowychProject: People - Podstawy testów użytkowych
Project: People - Podstawy testów użytkowychProject: People
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...Marcello Thiry
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Lorenzo Miniero
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
8. Event Storming (P. Rayner).pdf
8. Event Storming (P. Rayner).pdf8. Event Storming (P. Rayner).pdf
8. Event Storming (P. Rayner).pdfMikhail Andronov
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud GatewaySpring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud GatewayIván López Martín
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Odoo External API
Odoo External APIOdoo External API
Odoo External APIOdoo
 
The 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz TestingThe 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz TestingSebastiano Panichella
 
Tabela ascii
Tabela asciiTabela ascii
Tabela asciicjaraujo2
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012 Erik Onnen
 
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)Gleyciana Garrido
 
Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...
Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...
Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...Intel® Software
 
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)Andrew Rota
 
Troubleshooting your Elasticsearch cluster like an Elastic Support Engineer
Troubleshooting your Elasticsearch cluster like an Elastic Support EngineerTroubleshooting your Elasticsearch cluster like an Elastic Support Engineer
Troubleshooting your Elasticsearch cluster like an Elastic Support EngineerImma Valls Bernaus
 

Mais procurados (20)

仮想DOMを理解する
仮想DOMを理解する仮想DOMを理解する
仮想DOMを理解する
 
Project: People - Podstawy testów użytkowych
Project: People - Podstawy testów użytkowychProject: People - Podstawy testów użytkowych
Project: People - Podstawy testów użytkowych
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
Mapeamento objeto relacional
Mapeamento objeto relacionalMapeamento objeto relacional
Mapeamento objeto relacional
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
8. Event Storming (P. Rayner).pdf
8. Event Storming (P. Rayner).pdf8. Event Storming (P. Rayner).pdf
8. Event Storming (P. Rayner).pdf
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud GatewaySpring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Odoo External API
Odoo External APIOdoo External API
Odoo External API
 
The 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz TestingThe 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz Testing
 
Tabela ascii
Tabela asciiTabela ascii
Tabela ascii
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012
 
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
Projeto de Banco de Dados: Gerenciamento de Locadora de Vídeo (parte escrita)
 
Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...
Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...
Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...
 
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
 
Tipos de dados em MySQL
Tipos de dados em MySQLTipos de dados em MySQL
Tipos de dados em MySQL
 
Troubleshooting your Elasticsearch cluster like an Elastic Support Engineer
Troubleshooting your Elasticsearch cluster like an Elastic Support EngineerTroubleshooting your Elasticsearch cluster like an Elastic Support Engineer
Troubleshooting your Elasticsearch cluster like an Elastic Support Engineer
 

Destaque

Cisco Tetration Analytics
Cisco Tetration AnalyticsCisco Tetration Analytics
Cisco Tetration AnalyticsCisco do Brasil
 
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
 
Cистема сетевой аналитики для ЦОД Cisco Tetration Analytics
Cистема сетевой аналитики для ЦОД Cisco Tetration AnalyticsCистема сетевой аналитики для ЦОД Cisco Tetration Analytics
Cистема сетевой аналитики для ЦОД Cisco Tetration AnalyticsCisco Russia
 
TechWiseTV Workshop: Tetration Analytics
TechWiseTV Workshop: Tetration AnalyticsTechWiseTV Workshop: Tetration Analytics
TechWiseTV Workshop: Tetration AnalyticsRobb Boyd
 
AppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete GuideAppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete GuideTakipi
 
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
 
Business Transactions with AppDynamics
Business Transactions with AppDynamicsBusiness Transactions with AppDynamics
Business Transactions with AppDynamicsAppDynamics
 
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
 

Destaque (8)

Cisco Tetration Analytics
Cisco Tetration AnalyticsCisco Tetration Analytics
Cisco Tetration Analytics
 
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...
 
Cистема сетевой аналитики для ЦОД Cisco Tetration Analytics
Cистема сетевой аналитики для ЦОД Cisco Tetration AnalyticsCистема сетевой аналитики для ЦОД Cisco Tetration Analytics
Cистема сетевой аналитики для ЦОД Cisco Tetration Analytics
 
TechWiseTV Workshop: Tetration Analytics
TechWiseTV Workshop: Tetration AnalyticsTechWiseTV Workshop: Tetration Analytics
TechWiseTV Workshop: Tetration Analytics
 
AppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete GuideAppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete Guide
 
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 ...
 
Business Transactions with AppDynamics
Business Transactions with AppDynamicsBusiness Transactions with AppDynamics
Business Transactions with 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 Europe
 

Semelhante a Webinar - Building Custom Extensions With AppDynamics

Dev ops presentation
Dev ops presentationDev ops presentation
Dev ops presentationAhmed Kamel
 
Java springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology MeetupJava springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology MeetupAccenture Hungary
 
Putting Quality First through Continuous Testing
Putting Quality First through Continuous TestingPutting Quality First through Continuous Testing
Putting Quality First through Continuous TestingTechWell
 
Add Apache Web Server to your Unified Monitoring Toolkit
Add Apache Web Server to your Unified Monitoring ToolkitAdd Apache Web Server to your Unified Monitoring Toolkit
Add Apache Web Server to your Unified Monitoring ToolkitAppDynamics
 
Industry Keynote at Large Scale Testing Workshop 2015
Industry Keynote at Large Scale Testing Workshop 2015Industry Keynote at Large Scale Testing Workshop 2015
Industry Keynote at Large Scale Testing Workshop 2015Wolfgang Gottesheim
 
Feedback on building Production-Ready Microsoft Teams Apps
Feedback on building Production-Ready Microsoft Teams AppsFeedback on building Production-Ready Microsoft Teams Apps
Feedback on building Production-Ready Microsoft Teams AppsGuillaume Meyer
 
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
[QCon London 2020] The Future of Cloud Native API Gateways - Richard LiAmbassador Labs
 
Enabling .NET Apps with Monitoring and Management Using Steeltoe
Enabling .NET Apps with Monitoring and Management Using SteeltoeEnabling .NET Apps with Monitoring and Management Using Steeltoe
Enabling .NET Apps with Monitoring and Management Using SteeltoeVMware Tanzu
 
Integration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesIntegration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesJudy Breedlove
 
AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementAzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementSergii Kryshtop
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsWeaveworks
 
Ansible Automation Platform.pdf
Ansible Automation Platform.pdfAnsible Automation Platform.pdf
Ansible Automation Platform.pdfVuHoangAnh14
 
MuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHubMuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHubAlfonso Martino
 
Mulesoft Connections to different companies, and different services
Mulesoft Connections to different companies, and different servicesMulesoft Connections to different companies, and different services
Mulesoft Connections to different companies, and different servicesByreddy Sravan Kumar Reddy
 
Ship code like a keptn
Ship code like a keptnShip code like a keptn
Ship code like a keptnRob Jahn
 
Daimler’s Community Approach to TAS Platform Monitoring
Daimler’s Community Approach to TAS Platform MonitoringDaimler’s Community Approach to TAS Platform Monitoring
Daimler’s Community Approach to TAS Platform MonitoringVMware Tanzu
 
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...Jitendra Bafna
 
Collision 2018: CodeStar for CICD Pipelines
Collision 2018: CodeStar for CICD PipelinesCollision 2018: CodeStar for CICD Pipelines
Collision 2018: CodeStar for CICD PipelinesAmazon Web Services
 
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdfNET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdfTamir Dresher
 

Semelhante a Webinar - Building Custom Extensions With AppDynamics (20)

Dev ops presentation
Dev ops presentationDev ops presentation
Dev ops presentation
 
Java springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology MeetupJava springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology Meetup
 
Putting Quality First through Continuous Testing
Putting Quality First through Continuous TestingPutting Quality First through Continuous Testing
Putting Quality First through Continuous Testing
 
Add Apache Web Server to your Unified Monitoring Toolkit
Add Apache Web Server to your Unified Monitoring ToolkitAdd Apache Web Server to your Unified Monitoring Toolkit
Add Apache Web Server to your Unified Monitoring Toolkit
 
Industry Keynote at Large Scale Testing Workshop 2015
Industry Keynote at Large Scale Testing Workshop 2015Industry Keynote at Large Scale Testing Workshop 2015
Industry Keynote at Large Scale Testing Workshop 2015
 
Feedback on building Production-Ready Microsoft Teams Apps
Feedback on building Production-Ready Microsoft Teams AppsFeedback on building Production-Ready Microsoft Teams Apps
Feedback on building Production-Ready Microsoft Teams Apps
 
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
 
Enabling .NET Apps with Monitoring and Management Using Steeltoe
Enabling .NET Apps with Monitoring and Management Using SteeltoeEnabling .NET Apps with Monitoring and Management Using Steeltoe
Enabling .NET Apps with Monitoring and Management Using Steeltoe
 
Integration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesIntegration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob Davies
 
AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementAzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release Management
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOps
 
Ansible Automation Platform.pdf
Ansible Automation Platform.pdfAnsible Automation Platform.pdf
Ansible Automation Platform.pdf
 
MuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHubMuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHub
 
Mulesoft Connections to different companies, and different services
Mulesoft Connections to different companies, and different servicesMulesoft Connections to different companies, and different services
Mulesoft Connections to different companies, and different services
 
Ship code like a keptn
Ship code like a keptnShip code like a keptn
Ship code like a keptn
 
Daimler’s Community Approach to TAS Platform Monitoring
Daimler’s Community Approach to TAS Platform MonitoringDaimler’s Community Approach to TAS Platform Monitoring
Daimler’s Community Approach to TAS Platform Monitoring
 
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
 
Collision 2018: CodeStar for CICD Pipelines
Collision 2018: CodeStar for CICD PipelinesCollision 2018: CodeStar for CICD Pipelines
Collision 2018: CodeStar for CICD Pipelines
 
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdfNET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
 
Data Stack Summit 2023
Data Stack Summit 2023Data Stack Summit 2023
Data Stack Summit 2023
 

Último

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Último (20)

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

Webinar - Building Custom Extensions With AppDynamics

  • 1. AppDynamics Webinars: Building Custom Extensions Todd Radel, Senior Manager – Customer Advocacy
  • 2. Agenda • Introduction • Writing a script extension • Writing a Java extension • Using your custom metrics • Best practices • Office hours
  • 3. About Me Todd Radel SENIOR MANAGER CUSTOMER ADVOCACY TEAM • More than 20 years experience in the software industry • Java, .NET, Python, Perl • Author of the Python SDK for AppDynamics REST API • Author of six AppDynamics Extensions: F5, Tibco EMS, Redis, Keynote, SQL, URL Monitor Copyright © 2015 AppDynamics. All rights reserved. 3 tradel@appdynamics.com +1 (484) 857-2335 tradel todd.radel linkedin.com/in/tradel
  • 5. What is an Extension? • Plugs in to Machine Agent • Imports additional metrics to AppDynamics Copyright © 2015 AppDynamics. All rights reserved. 5
  • 6. Why Use Extensions? “I already have Graphite/Nagios/my own custom tools…” BUT: • Add more color to overall AppDynamics picture • Baseline and alert on custom metrics • Create custom dashboards • Work towards a “single pane of glass” Copyright © 2015 AppDynamics. All rights reserved. 6
  • 7. Example Extensions • Apache Server Monitor • F5 Monitor • ActiveMQ Monitor …or build your own! Copyright © 2015 AppDynamics. All rights reserved. 7
  • 8. Use Cases • Run a SQL query every few minutes to count sales/signups/etc. • Extract metrics from custom instrumentation • Eliminate redundant tools Copyright © 2015 AppDynamics. All rights reserved. 8
  • 10. Anatomy of a Simple Script Extension • Script file • monitor.xml – describes the extension Copyright © 2015 AppDynamics. All rights reserved. 10
  • 11. Example • Write an extension to count the number of files in /var/tmp and alert if there are too many Copyright © 2015 AppDynamics. All rights reserved. 11
  • 12. Simple Extension Script Copyright © 2015 AppDynamics. All rights reserved. 12
  • 13. Script Output name=Custom Metrics|File Count|count, value=29, aggregator=OBSERVATION, time-rollup=CURRENT, cluster-rollup=COLLECTIVE • name – path and name of your metric • value – metric value • aggregator – how to handle multiple values in one interval • time-rollup – how to aggregate values over time • cluster-rollup – how to aggregate values over nodes Copyright © 2015 AppDynamics. All rights reserved. 13
  • 14. Metric Aggregation Aggregation Time Rollup Cluster Rollup How should the controller handle multiple values in a single minute? How should values be aggregated over time? How should values be aggregated across nodes in a tier? AVERAGE Average of all reported values in that minute AVERAGE Average of all one-minute values INDIVIDUAL Average of metric values across each node in the tier SUM Sum of all reported values in the minute SUM Sum of all one-minute values COLLECTIVE Sum of metric values across each node in the tier OBSERVATION Last reported value in the minute CURRENT Last reported one-minute value Copyright © 2015 AppDynamics. All rights reserved. 14
  • 15. Simple monitor.xml for a Script Copyright © 2015 AppDynamics. All rights reserved. 15 ”periodic” or “continuous” script filename
  • 16. OS-Specific monitor.xml for a Script Copyright © 2015 AppDynamics. All rights reserved. 16
  • 18. Anatomy of a Java Extension • Class file or JAR file • Dependent libraries • Configuration file • monitor.xml Copyright © 2015 AppDynamics. All rights reserved. 18
  • 19. Structuring Your Java Code • Can be a single class • Extend from com.singularity.ee.agent.systemagent.api.AManagedMonitor • Override and implement execute() method • Call getMetricWriter().printMetric() to send data Copyright © 2015 AppDynamics. All rights reserved. 19
  • 20. Example • Write an extension to import metrics from the Linux collectd(8) daemon Copyright © 2015 AppDynamics. All rights reserved. 20
  • 21. Sample Execute() Method Copyright © 2015 AppDynamics. All rights reserved. 21
  • 22. Configuring Your Extension • Task arguments from monitor.xml are sent as first parameter to execute() method public TaskOutput execute(Map<String, String> args, TaskExecutionContext taskExecutionContext) throws TaskExecutionException { • Configure via external file (e.g. config.yml), read the file during execute() Copyright © 2015 AppDynamics. All rights reserved. 22
  • 23. Monitor.xml for Java Copyright © 2015 AppDynamics. All rights reserved. 23
  • 24. Installation Copyright © 2015 AppDynamics. All rights reserved. 24
  • 26. When to use the HTTP Listener • When you don’t have control over the code • When the data collector runs on another machine Copyright © 2015 AppDynamics. All rights reserved. 26
  • 27. Starting Machine Agent with HTTP Listener java -Dmetric.http.listener=true -Dmetric.http.listener.port=8000 -jar machineagent.jar Copyright © 2015 AppDynamics. All rights reserved. 27
  • 28. Sending Metric Data Copyright © 2015 AppDynamics. All rights reserved. 28
  • 29. Sending Metrics as JSON Copyright © 2015 AppDynamics. All rights reserved. 29
  • 31. Locating Your Custom Metrics Copyright © 2015 AppDynamics. All rights reserved. 31 Tier name Node name Metric path
  • 32. Create Custom Dashboards Copyright © 2015 AppDynamics. All rights reserved. 32
  • 33. Sample Custom Dashboard Copyright © 2015 AppDynamics. All rights reserved. 33
  • 34. Create Health Rules Copyright © 2015 AppDynamics. All rights reserved. 34
  • 36. Best Practices • Make it configurable via monitor.xml or config.yml • Allow a custom metric path • Write portable code • Send output to the machine agent log • Follow our “mavenized” project structure • Post the code on GitHub and encourage pull requests Copyright © 2015 AppDynamics. All rights reserved. 36
  • 37. Increasing the Agent Metric Limit • If you don’t see all metrics in the controller UI • Check machine agent logs for “metric limit reached” • Add command line options and restart machine agent • Without custom extensions: java -jar machineagent.jar • With extensions: java -Xmx256m -Dappdynamics.agent.maxMetrics=10000 -jar machineagent.jar Copyright © 2015 AppDynamics. All rights reserved. 37
  • 38. Publishing Your Extension • Remove any usernames/passwords/hostnames from configuration files • Add README.md and LICENSE files • Post the code on GitHub • Create new thread on AppDynamics Community to announce and publish! Copyright © 2015 AppDynamics. All rights reserved. 38
  • 39. Contents of Your README.md • Description • Requirements • Installation • Configuration • Metrics Produced • How to Contribute (optional) • History/Release Notes • Screenshots Copyright © 2015 AppDynamics. All rights reserved. 39
  • 41. Documentation • Extensions and Custom Metrics • Build a Monitoring Extension Using Java • Build a Monitoring Extension Using Scripts • Machine Agent HTTP Listener Copyright © 2015 AppDynamics. All rights reserved. 41
  • 42. Sample Java code • Apache Monitoring Extension • URL Monitoring Extension • Follow along as I finish these extensions! https://github.com/tradel/collectd-monitoring-extension https://github.com/tradel/file-count-monitoring-extension Copyright © 2015 AppDynamics. All rights reserved. 42

Notas do Editor

  1. This example is in bash, but you can use any language that is capable of writing to stdout: Python, Perl, Ruby, Bash, etc.