SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Diagnose Your Microservices
Open Tracing / Oracle Application Performance Monitoring Cloud
Marcus Hirt / Consulting Member of Technical Staff
John Sullivan / Senior Director of Product Management
OMC
October, 2018
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Agenda
1. Microservices
2. OpenTracing
3. JDK Flight Recorder
4. Oracle Management Cloud (APM)
2
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Microservices
Confidential – Oracle
3
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Monolith vs Microserves
4
Illustrations from https://martinfowler.com/articles/microservices.html
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Microservices
• Decentralized
• Independent
• Black box
• Polyglot
• Do one thing, and do it well
• You build it, you run it
5
Characteristics
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Conway’s Law
6
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
The Robotshop
7
Customers
OrdersLoad Generator
Factory
Add/Remove
Verify
Build/Pickup
Submit/Pickup
Check available robot types and colors
https://github.com/thegreystone/problematic-microservices
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 8
Microservices in the Cloud
LoadBalancer
Incoming
Request
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
OpenTracing
9
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Distributed Tracing
• Dapper - Google’s paper on distributed tracing (2010)
• Inspired other distributed tracer implementations
– Zipkin
– Jaeger
– AppDash
– …
10
Dynatrace (2005)
AppDynamics (2008)
New Relic (2008)
DataDog (2010)
…
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Java Tracing
• All Tracers/APMs pretty much doing the same thing
– BCI for getting the data (value add - knowing what data to get)
– Presenting findings to the user (value add - knowing what to do with the data)
• Want to add additional contextual information?
– Work with vendor specific proprietary API
• Framework/library want to add more detailed trace information?
– Work with vendor specific proprietary API
11
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Open Tracing
• Vendor neutral distributed tracing API
– Library builders can interact with one API to support multiple vendors
– Customers can add contextual information without worrying about vendor lock-in
• Open Tracing is…
– Application level API for producing tracing and trace related information
– API for context propagation
– Mainly contributed by LightStep, Jaeger, Skywalking and Datadog
• Spec and language specific APIs on github:
https://github.com/opentracing
12
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
OpenTracing
• Trace
– A distributed operation, potentially spanning multiple processes
– Implicitly defined by the individual Spans in the trace (more soon)
– Can be thought of as a directed acyclic graph (DAG) of Spans
– The span in the root of the DAG is called the root Span
– The edges between the Spans are called References
13
Core API Concepts
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
OpenTracing
• Span
– Has an operation name
– Has a start timestamp
– Has a finish timestamp
– Has a SpanContext
• Has Baggage Items (key/value pairs which cross process boundaries)
• Implementation specific state (used to identify the span across process boundaries)
– Zero or more key/value Span Tags
– Zero or more Span Logs (key/value + timestamp)
14
Core API Concepts, cont’d
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
OpenTracing
• Reference
– Define a direct casual relationship between two spans
– ChildOf
• Parent depends on the child in some way
• Note that it is legal for a finish timestamp of a child to be after that of any parent
– FollowFrom
• Parent does not depend on the result of the child in any way
• Note that is legal for a FollowsFrom child to be started after the end of any ancestor
– ChildOf is by far the most common reference type
15
Core API Concepts, cont’d
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
createRobot
FactoryService
createRobot
FactoryService
Example Trace DAG
16
Robotshop
createCustomer
CustomerService
fullSystemTest
LoadGenerator
postOrder
OrderService
validateCustomer
CustomerService
createRobot
FactoryService
pickUpOrder
OrderService
pickUpRobot
FactoryService
deleteCustomer
CustomerService
pickUpRobot
FactoryService
pickUpRobot
FactoryService
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 17
Jaeger + Robotshop Demo
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
JDK Flight Recorder
And JDK Mission Control
Confidential – Oracle
18
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
JDK Flight Recorder (JFR)
• JVM technology for production time profiling and diagnostics
• Analogous to a Flight Data Recorder in a commercial aircraft
• Open sourced with JDK 11
• Features added by the Hotspot runtime team continuously
• Used at Oracle for years for sorting out problems in production systems
19
"In Fusion we create hundreds of thousands of Flight
Recordings, and we can figure out 95% of the issues
using nothing but the recordings."
- Joe Albowicz, Oracle (Fusion Application Development)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Simple JFR Event Example
20
For more examples, see the JFR part of: https://github.com/thegreystone/java-svc
public class HelloJfr {
@Label("Hello World!")
static class HelloWorldEvent extends Event {
@Label("Message")
String message;
}
public static void main(String ... args) throws IOException {
HelloWorldEvent event = new HelloWorldEvent();
event.message = "Hello World!";
event.commit();
}
}
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
JDK Mission Control
• An application for, among other things, analysing flight recordings
• Parser and analysis libraries for JDK Flight Recordings
– Statistical operations
– Compact code
– Reports
• Open sourced
• Early access builds of the application available (http://jdk.java.net/jmc/)
• Snapshot builds of the libraries available at Sonatype (org.openjdk.jmc.*)
21
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Example: Generating an Analysis Report (HTML)
22
public static void main(String[] args) throws Exception {
String report = JfrHtmlRulesReport.createReport(
JfrLoaderToolkit.loadEvents(new File(args[0])));
System.out.println(report);
}
For more examples, see the JMC part of: https://github.com/thegreystone/java-svc
- or just run the main method of JfrHtmlRulesReport
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Example: Calculating Statistics for Monitor Enter Events
23
For more examples, see the JMC part of: https://github.com/thegreystone/java-svc
public static void main(String[] args) throws IOException, CouldNotLoadRecordingException {
IItemCollection events = JfrLoaderToolkit.loadEvents(new File(args[0]));
IItemCollection monitorEnterEvents = events.apply(JdkFilters.MONITOR_ENTER);
IQuantity eventCount = monitorEnterEvents.getAggregate(Aggregators.count());
IQuantity avg = monitorEnterEvents.getAggregate(Aggregators.avg((JfrAttributes.DURATION));
IQuantity stddev = monitorEnterEvents.getAggregate(Aggregators.stddev(
JfrAttributes.DURATION));
System.out.println(String.format("# of events: %d, avg: %s, stdddev: %sn",
eventCount.longValue(),
avg.displayUsing(IDisplayable.AUTO),
stddev.displayUsing(IDisplayable.AUTO)));
}
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Idea: Marrying OpenTracing and JDK Flight Recorder
• Combine OpenTracing and Flight Recorder
– Distributed tracing with deep diagnostics capabilities
• Create a JFR OpenTracing Tracer
– Emit flight recording events for Spans and Scopes (thread local)
– Delegate to whichever Tracer is someone’s favourite tracer
– Since context is implementation specific, provide plug-in mechanism for custom
context extractors
– Have it support Oracle JDK 7+ and OpenJDK 11+ by building it as an mrjar
• Open sourced prototype (links towards the end)
24
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 25
jfr-tracer + Robotshop Demo
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
But…
• What if you have thousands of these Java processes?
• How do you trigger the recording dumps?
• Where do you store the recording data?
• What if you also want the logs, and the means to process the logs?
• What if you want some metrics already at the distributed tracing level?
26
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Oracle Management Cloud
Application Performance Management
27
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
APM Diagnostics Use Case Examples
28
Performance issues in the past
• Use APM to monitor and analyze server requests
• Use APM with deep dive thread samples to locate the slow code
• Very recent past - Dump JFR and analyze in APM and in JMC
The problem is happening right NOW!!
• Dump JFR
• Run the profiler
Problem is about to happen (i.e. memory leak)
• Take class histograms and compare/trend later
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
End-2-End Transaction Tracing, Code-level Visibility
• Measure all ingress/egress points
• Measure preformance across
service and tiers
• User defined custom tracing points
(OpenTracing, POJO, etc.) when
OOB are not sufficent
• Leverage diagnostics on
monitoring data anywhere/anytime
29
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Custom Calls Added OpenTrace in APM
30
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 31
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 32
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 33
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 34
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 35
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 36
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 37
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Continuous
Integration
Java Flight
Recorder
Build Better Applications with Oracle
Code
Repository
Telemetry
from test
Telemetry
from pre-
prod/prod
AVAILABILITY
APM
ALERTSSYS
PAGING
VIZ.FRAMEWORK
DBMONITORING
CUSTOM
MONITORING
LOGGING
BIGDATA
MONITORING
DISTRIBUTED
TRACING
CLOUD
MONITORING
Management At Cloud Scale
Monitoring Large-Scale Distributed Applications in
Oracle Cloud - Thursday, Oct 25, 10:00 a.m. - 10:45 a.m.
| Moscone West - Room 2009 - DEV6151
Diagnose Your Microservices: OpenTracing/Oracle
Application Performance Monitoring Cloud -
Wednesday, Oct 24, 4:00 p.m. - 4:45 p.m. | Moscone
West - Room 2011 - DEV5435
Microservices: Ten Steps to Build, Manage, and Monitor
Your Microservices - Wednesday, Oct 24, 9:00 a.m. -
9:45 a.m. | Moscone West - Room 2008 - DEV5564
Build
Diagnose
Run
38
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Summary
• OpenTracing is a vendor neutral initiative for a standard API for supporting
distributed tracing
• JDK Flight Recorder is a framework for production time profiling and
distnostics built into the JVM
• JDK Flight Recorder is open sourced, and included in OpenJDK, since JDK 11
• Oracle has a powerful APM in Oracle Management Cloud
– With support for OpenTracing as a Zipkin agent communication endpoint, and…
– …as a custom OpenTracing Tracer (metrics++ from the OMC APM agent)
– With JFR support
39
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Other JMC-/JFR-related Presentations
Day Time Title Location
Monday 10:30 Contributing to the Mission Control OpenJDK Project MW 2004
Tuesday 11:30 Three Productive Ways to Use Open Source Java Flight Recorder and
Java Mission Control
MW 2024
Tuesday 14:30 Fast and Furious: Java Flight Recorder and Flame Graphs MW 2020
Wednesday 10:30 Production-Time Profiling and Diagnostics on the JVM MW 2004
Wednesday 12:30 OpenJDK Mission Control: The Hands-on-Lab MW 2001A
Wednesday 16:30 Diagnose Your Microservices: OpenTracing/Oracle APM Cloud MW 2011
Thursday 11:00 Getting Started with the (Open Source) JDK Mission Control MW 2014
Thursday 12:30 Flight Recorder in OpenJDK MW 2018
40
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Safe Harbor Statement
The preceding is intended to outline our general product direction. It is intended for
information purposes only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon
in making purchasing decisions. The development, release, and timing of any features or
functionality described for Oracle’s products remains at the sole discretion of Oracle.
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
Resources
• OMC: http://cloud.oracle.com/OMC
• Marcus’ blog: http://hirt.se/blog
• Marcus’ GitHub: https://github.com/thegreystone
https://github.com/thegreystone/jfr-tracer
(Delegating JFR tracer for OpenTracing)
https://github.com/thegreystone/problematic-microservices
(Robotshop, use the jfr-tracer branch)
42

Contenu connexe

Tendances

Building Domain-specific PaaS with OpenShift Origin: The TRESOR Healthcare P...
 Building Domain-specific PaaS with OpenShift Origin: The TRESOR Healthcare P... Building Domain-specific PaaS with OpenShift Origin: The TRESOR Healthcare P...
Building Domain-specific PaaS with OpenShift Origin: The TRESOR Healthcare P...OpenShift Origin
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopWeaveworks
 
Neutron upgrades strategy
Neutron upgrades strategyNeutron upgrades strategy
Neutron upgrades strategyVictor Morales
 
OpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology OverviewOpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology OverviewJason Peng
 
OpenShift pour le developpement cloud native - 20171214
OpenShift pour le developpement cloud native - 20171214OpenShift pour le developpement cloud native - 20171214
OpenShift pour le developpement cloud native - 20171214Laurent Broudoux
 
OpenShift and next generation application development
OpenShift and next generation application developmentOpenShift and next generation application development
OpenShift and next generation application developmentSyed Shaaf
 
How we can do Multi-Tenancy on Kubernetes
How we can do Multi-Tenancy on KubernetesHow we can do Multi-Tenancy on Kubernetes
How we can do Multi-Tenancy on KubernetesOpsta
 
F5 OpenShift Workshop
F5 OpenShift WorkshopF5 OpenShift Workshop
F5 OpenShift WorkshopTyler Hatton
 
stackconf 2021 | Embracing change: Policy-as-code for Kubernetes with OPA and...
stackconf 2021 | Embracing change: Policy-as-code for Kubernetes with OPA and...stackconf 2021 | Embracing change: Policy-as-code for Kubernetes with OPA and...
stackconf 2021 | Embracing change: Policy-as-code for Kubernetes with OPA and...NETWAYS
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1Rubens Dos Santos Filho
 
Deploying & Scaling OpenShift on OpenStack using Heat - OpenStack Seattle Mee...
Deploying & Scaling OpenShift on OpenStack using Heat - OpenStack Seattle Mee...Deploying & Scaling OpenShift on OpenStack using Heat - OpenStack Seattle Mee...
Deploying & Scaling OpenShift on OpenStack using Heat - OpenStack Seattle Mee...Diane Mueller
 
Jfrog artifactory as private docker registry
Jfrog artifactory as private docker registryJfrog artifactory as private docker registry
Jfrog artifactory as private docker registryVipin Mandale
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020Emily Jiang
 
DEVNET-1148 Leveraging Cisco OpenStack Private Cloud for Developers
DEVNET-1148	Leveraging Cisco OpenStack Private Cloud for DevelopersDEVNET-1148	Leveraging Cisco OpenStack Private Cloud for Developers
DEVNET-1148 Leveraging Cisco OpenStack Private Cloud for DevelopersCisco DevNet
 
From shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesFrom shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesAnkush Chadha, MBA, MS
 
stackconf 2021 | GitOps: yea or nay?
stackconf 2021 | GitOps: yea or nay?stackconf 2021 | GitOps: yea or nay?
stackconf 2021 | GitOps: yea or nay?NETWAYS
 
Kubernetes and CNCF Landscape 101
Kubernetes and CNCF Landscape 101Kubernetes and CNCF Landscape 101
Kubernetes and CNCF Landscape 101Giulio Roggero
 
Pycon9 - Paas per tutti i gusti con Dokku and Kubernetes
Pycon9 - Paas per tutti i gusti con Dokku and KubernetesPycon9 - Paas per tutti i gusti con Dokku and Kubernetes
Pycon9 - Paas per tutti i gusti con Dokku and KubernetesClaudio Mignanti
 

Tendances (20)

Building Domain-specific PaaS with OpenShift Origin: The TRESOR Healthcare P...
 Building Domain-specific PaaS with OpenShift Origin: The TRESOR Healthcare P... Building Domain-specific PaaS with OpenShift Origin: The TRESOR Healthcare P...
Building Domain-specific PaaS with OpenShift Origin: The TRESOR Healthcare P...
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps Workshop
 
Neutron upgrades strategy
Neutron upgrades strategyNeutron upgrades strategy
Neutron upgrades strategy
 
OpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology OverviewOpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology Overview
 
OpenShift pour le developpement cloud native - 20171214
OpenShift pour le developpement cloud native - 20171214OpenShift pour le developpement cloud native - 20171214
OpenShift pour le developpement cloud native - 20171214
 
Git General
Git GeneralGit General
Git General
 
OpenShift and next generation application development
OpenShift and next generation application developmentOpenShift and next generation application development
OpenShift and next generation application development
 
How we can do Multi-Tenancy on Kubernetes
How we can do Multi-Tenancy on KubernetesHow we can do Multi-Tenancy on Kubernetes
How we can do Multi-Tenancy on Kubernetes
 
F5 OpenShift Workshop
F5 OpenShift WorkshopF5 OpenShift Workshop
F5 OpenShift Workshop
 
stackconf 2021 | Embracing change: Policy-as-code for Kubernetes with OPA and...
stackconf 2021 | Embracing change: Policy-as-code for Kubernetes with OPA and...stackconf 2021 | Embracing change: Policy-as-code for Kubernetes with OPA and...
stackconf 2021 | Embracing change: Policy-as-code for Kubernetes with OPA and...
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1
 
Deploying & Scaling OpenShift on OpenStack using Heat - OpenStack Seattle Mee...
Deploying & Scaling OpenShift on OpenStack using Heat - OpenStack Seattle Mee...Deploying & Scaling OpenShift on OpenStack using Heat - OpenStack Seattle Mee...
Deploying & Scaling OpenShift on OpenStack using Heat - OpenStack Seattle Mee...
 
Jfrog artifactory as private docker registry
Jfrog artifactory as private docker registryJfrog artifactory as private docker registry
Jfrog artifactory as private docker registry
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020
 
DEVNET-1148 Leveraging Cisco OpenStack Private Cloud for Developers
DEVNET-1148	Leveraging Cisco OpenStack Private Cloud for DevelopersDEVNET-1148	Leveraging Cisco OpenStack Private Cloud for Developers
DEVNET-1148 Leveraging Cisco OpenStack Private Cloud for Developers
 
From shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesFrom shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practices
 
What's Rio 〜Standalone〜
What's Rio 〜Standalone〜What's Rio 〜Standalone〜
What's Rio 〜Standalone〜
 
stackconf 2021 | GitOps: yea or nay?
stackconf 2021 | GitOps: yea or nay?stackconf 2021 | GitOps: yea or nay?
stackconf 2021 | GitOps: yea or nay?
 
Kubernetes and CNCF Landscape 101
Kubernetes and CNCF Landscape 101Kubernetes and CNCF Landscape 101
Kubernetes and CNCF Landscape 101
 
Pycon9 - Paas per tutti i gusti con Dokku and Kubernetes
Pycon9 - Paas per tutti i gusti con Dokku and KubernetesPycon9 - Paas per tutti i gusti con Dokku and Kubernetes
Pycon9 - Paas per tutti i gusti con Dokku and Kubernetes
 

Similaire à Diagnose Your Microservices

Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1Curity
 
Functions and DevOps
Functions and DevOpsFunctions and DevOps
Functions and DevOpsShaun Smith
 
Serverless patterns
Serverless patternsServerless patterns
Serverless patternsJesse Butler
 
Using Machine Learning to Debug complex Oracle RAC Issues
Using Machine Learning  to Debug complex Oracle RAC IssuesUsing Machine Learning  to Debug complex Oracle RAC Issues
Using Machine Learning to Debug complex Oracle RAC IssuesAnil Nair
 
How to add stuff to MySQL
How to add stuff to MySQLHow to add stuff to MySQL
How to add stuff to MySQLGeorgi Kodinov
 
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)Lucas Jellema
 
Shrinking the container_zurich_july_2018
Shrinking the container_zurich_july_2018Shrinking the container_zurich_july_2018
Shrinking the container_zurich_july_2018Ewan Slater
 
Is 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingIs 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingPhil Wilkins
 
Oracle Code One 2018 Feedback (Server Side / Japanese)
Oracle Code One 2018 Feedback (Server Side / Japanese)Oracle Code One 2018 Feedback (Server Side / Japanese)
Oracle Code One 2018 Feedback (Server Side / Japanese)Logico
 
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatengeKarin Patenge
 
Oracle Modern AppDev Approach to Cloud & Container Native App
Oracle Modern AppDev Approach to Cloud & Container Native AppOracle Modern AppDev Approach to Cloud & Container Native App
Oracle Modern AppDev Approach to Cloud & Container Native AppPaulo Alberto Simoes ∴
 
Advanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applicationsAdvanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applicationsRogue Wave Software
 
Hit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesHit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesBobby Curtis
 
Oracle goldegate microservice
Oracle goldegate microserviceOracle goldegate microservice
Oracle goldegate microserviceMojtaba Khandan
 
Hyderabad Mar 2019 - Autonomous Database
Hyderabad Mar 2019 - Autonomous DatabaseHyderabad Mar 2019 - Autonomous Database
Hyderabad Mar 2019 - Autonomous DatabaseConnor McDonald
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Shaun Smith
 

Similaire à Diagnose Your Microservices (20)

Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1Java and Serverless - A Match Made In Heaven, Part 1
Java and Serverless - A Match Made In Heaven, Part 1
 
Functions and DevOps
Functions and DevOpsFunctions and DevOps
Functions and DevOps
 
Serverless patterns
Serverless patternsServerless patterns
Serverless patterns
 
Serverless Kotlin
Serverless KotlinServerless Kotlin
Serverless Kotlin
 
Using Machine Learning to Debug complex Oracle RAC Issues
Using Machine Learning  to Debug complex Oracle RAC IssuesUsing Machine Learning  to Debug complex Oracle RAC Issues
Using Machine Learning to Debug complex Oracle RAC Issues
 
How to add stuff to MySQL
How to add stuff to MySQLHow to add stuff to MySQL
How to add stuff to MySQL
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: DataAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
 
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
 
Shrinking the container_zurich_july_2018
Shrinking the container_zurich_july_2018Shrinking the container_zurich_july_2018
Shrinking the container_zurich_july_2018
 
Is 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingIs 12 Factor App Right About Logging
Is 12 Factor App Right About Logging
 
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
Javantura v6 - JDK 11 & JDK 12 - Dalibor TopicJavantura v6 - JDK 11 & JDK 12 - Dalibor Topic
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
 
Oracle Code One 2018 Feedback (Server Side / Japanese)
Oracle Code One 2018 Feedback (Server Side / Japanese)Oracle Code One 2018 Feedback (Server Side / Japanese)
Oracle Code One 2018 Feedback (Server Side / Japanese)
 
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
20180921_DOAG_BigDataDays_OracleSpatialandPython_kpatenge
 
Oracle Modern AppDev Approach to Cloud & Container Native App
Oracle Modern AppDev Approach to Cloud & Container Native AppOracle Modern AppDev Approach to Cloud & Container Native App
Oracle Modern AppDev Approach to Cloud & Container Native App
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 
Advanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applicationsAdvanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applications
 
Hit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesHit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate Microservices
 
Oracle goldegate microservice
Oracle goldegate microserviceOracle goldegate microservice
Oracle goldegate microservice
 
Hyderabad Mar 2019 - Autonomous Database
Hyderabad Mar 2019 - Autonomous DatabaseHyderabad Mar 2019 - Autonomous Database
Hyderabad Mar 2019 - Autonomous Database
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019
 

Plus de Marcus Hirt

Getting Started with JDK Mission Control
Getting Started with JDK Mission ControlGetting Started with JDK Mission Control
Getting Started with JDK Mission ControlMarcus Hirt
 
Production Time Profiling and Diagnostics on the JVM
Production Time Profiling and Diagnostics on the JVMProduction Time Profiling and Diagnostics on the JVM
Production Time Profiling and Diagnostics on the JVMMarcus Hirt
 
Contributing to JDK Mission Control
Contributing to JDK Mission ControlContributing to JDK Mission Control
Contributing to JDK Mission ControlMarcus Hirt
 
Robotics on Java Simplified
Robotics on Java SimplifiedRobotics on Java Simplified
Robotics on Java SimplifiedMarcus Hirt
 
Using Java Flight Recorder
Using Java Flight RecorderUsing Java Flight Recorder
Using Java Flight RecorderMarcus Hirt
 
Java Mission Control: Java Flight Recorder Deep Dive
Java Mission Control: Java Flight Recorder Deep DiveJava Mission Control: Java Flight Recorder Deep Dive
Java Mission Control: Java Flight Recorder Deep DiveMarcus Hirt
 
Production Time Profiling Out of the Box
Production Time Profiling Out of the BoxProduction Time Profiling Out of the Box
Production Time Profiling Out of the BoxMarcus Hirt
 

Plus de Marcus Hirt (7)

Getting Started with JDK Mission Control
Getting Started with JDK Mission ControlGetting Started with JDK Mission Control
Getting Started with JDK Mission Control
 
Production Time Profiling and Diagnostics on the JVM
Production Time Profiling and Diagnostics on the JVMProduction Time Profiling and Diagnostics on the JVM
Production Time Profiling and Diagnostics on the JVM
 
Contributing to JDK Mission Control
Contributing to JDK Mission ControlContributing to JDK Mission Control
Contributing to JDK Mission Control
 
Robotics on Java Simplified
Robotics on Java SimplifiedRobotics on Java Simplified
Robotics on Java Simplified
 
Using Java Flight Recorder
Using Java Flight RecorderUsing Java Flight Recorder
Using Java Flight Recorder
 
Java Mission Control: Java Flight Recorder Deep Dive
Java Mission Control: Java Flight Recorder Deep DiveJava Mission Control: Java Flight Recorder Deep Dive
Java Mission Control: Java Flight Recorder Deep Dive
 
Production Time Profiling Out of the Box
Production Time Profiling Out of the BoxProduction Time Profiling Out of the Box
Production Time Profiling Out of the Box
 

Dernier

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
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
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
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
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
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
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
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
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
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
 
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.
 

Dernier (20)

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
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
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
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
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
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
 
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...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
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
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
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
 
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...
 

Diagnose Your Microservices

  • 1. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Diagnose Your Microservices Open Tracing / Oracle Application Performance Monitoring Cloud Marcus Hirt / Consulting Member of Technical Staff John Sullivan / Senior Director of Product Management OMC October, 2018
  • 2. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Agenda 1. Microservices 2. OpenTracing 3. JDK Flight Recorder 4. Oracle Management Cloud (APM) 2
  • 3. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Microservices Confidential – Oracle 3
  • 4. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Monolith vs Microserves 4 Illustrations from https://martinfowler.com/articles/microservices.html
  • 5. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Microservices • Decentralized • Independent • Black box • Polyglot • Do one thing, and do it well • You build it, you run it 5 Characteristics
  • 6. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Conway’s Law 6
  • 7. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. The Robotshop 7 Customers OrdersLoad Generator Factory Add/Remove Verify Build/Pickup Submit/Pickup Check available robot types and colors https://github.com/thegreystone/problematic-microservices
  • 8. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 8 Microservices in the Cloud LoadBalancer Incoming Request
  • 9. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. OpenTracing 9
  • 10. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Distributed Tracing • Dapper - Google’s paper on distributed tracing (2010) • Inspired other distributed tracer implementations – Zipkin – Jaeger – AppDash – … 10 Dynatrace (2005) AppDynamics (2008) New Relic (2008) DataDog (2010) …
  • 11. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Java Tracing • All Tracers/APMs pretty much doing the same thing – BCI for getting the data (value add - knowing what data to get) – Presenting findings to the user (value add - knowing what to do with the data) • Want to add additional contextual information? – Work with vendor specific proprietary API • Framework/library want to add more detailed trace information? – Work with vendor specific proprietary API 11
  • 12. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Open Tracing • Vendor neutral distributed tracing API – Library builders can interact with one API to support multiple vendors – Customers can add contextual information without worrying about vendor lock-in • Open Tracing is… – Application level API for producing tracing and trace related information – API for context propagation – Mainly contributed by LightStep, Jaeger, Skywalking and Datadog • Spec and language specific APIs on github: https://github.com/opentracing 12
  • 13. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. OpenTracing • Trace – A distributed operation, potentially spanning multiple processes – Implicitly defined by the individual Spans in the trace (more soon) – Can be thought of as a directed acyclic graph (DAG) of Spans – The span in the root of the DAG is called the root Span – The edges between the Spans are called References 13 Core API Concepts
  • 14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. OpenTracing • Span – Has an operation name – Has a start timestamp – Has a finish timestamp – Has a SpanContext • Has Baggage Items (key/value pairs which cross process boundaries) • Implementation specific state (used to identify the span across process boundaries) – Zero or more key/value Span Tags – Zero or more Span Logs (key/value + timestamp) 14 Core API Concepts, cont’d
  • 15. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. OpenTracing • Reference – Define a direct casual relationship between two spans – ChildOf • Parent depends on the child in some way • Note that it is legal for a finish timestamp of a child to be after that of any parent – FollowFrom • Parent does not depend on the result of the child in any way • Note that is legal for a FollowsFrom child to be started after the end of any ancestor – ChildOf is by far the most common reference type 15 Core API Concepts, cont’d
  • 16. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. createRobot FactoryService createRobot FactoryService Example Trace DAG 16 Robotshop createCustomer CustomerService fullSystemTest LoadGenerator postOrder OrderService validateCustomer CustomerService createRobot FactoryService pickUpOrder OrderService pickUpRobot FactoryService deleteCustomer CustomerService pickUpRobot FactoryService pickUpRobot FactoryService
  • 17. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 17 Jaeger + Robotshop Demo
  • 18. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. JDK Flight Recorder And JDK Mission Control Confidential – Oracle 18
  • 19. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. JDK Flight Recorder (JFR) • JVM technology for production time profiling and diagnostics • Analogous to a Flight Data Recorder in a commercial aircraft • Open sourced with JDK 11 • Features added by the Hotspot runtime team continuously • Used at Oracle for years for sorting out problems in production systems 19 "In Fusion we create hundreds of thousands of Flight Recordings, and we can figure out 95% of the issues using nothing but the recordings." - Joe Albowicz, Oracle (Fusion Application Development)
  • 20. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Simple JFR Event Example 20 For more examples, see the JFR part of: https://github.com/thegreystone/java-svc public class HelloJfr { @Label("Hello World!") static class HelloWorldEvent extends Event { @Label("Message") String message; } public static void main(String ... args) throws IOException { HelloWorldEvent event = new HelloWorldEvent(); event.message = "Hello World!"; event.commit(); } }
  • 21. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. JDK Mission Control • An application for, among other things, analysing flight recordings • Parser and analysis libraries for JDK Flight Recordings – Statistical operations – Compact code – Reports • Open sourced • Early access builds of the application available (http://jdk.java.net/jmc/) • Snapshot builds of the libraries available at Sonatype (org.openjdk.jmc.*) 21
  • 22. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Example: Generating an Analysis Report (HTML) 22 public static void main(String[] args) throws Exception { String report = JfrHtmlRulesReport.createReport( JfrLoaderToolkit.loadEvents(new File(args[0]))); System.out.println(report); } For more examples, see the JMC part of: https://github.com/thegreystone/java-svc - or just run the main method of JfrHtmlRulesReport
  • 23. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Example: Calculating Statistics for Monitor Enter Events 23 For more examples, see the JMC part of: https://github.com/thegreystone/java-svc public static void main(String[] args) throws IOException, CouldNotLoadRecordingException { IItemCollection events = JfrLoaderToolkit.loadEvents(new File(args[0])); IItemCollection monitorEnterEvents = events.apply(JdkFilters.MONITOR_ENTER); IQuantity eventCount = monitorEnterEvents.getAggregate(Aggregators.count()); IQuantity avg = monitorEnterEvents.getAggregate(Aggregators.avg((JfrAttributes.DURATION)); IQuantity stddev = monitorEnterEvents.getAggregate(Aggregators.stddev( JfrAttributes.DURATION)); System.out.println(String.format("# of events: %d, avg: %s, stdddev: %sn", eventCount.longValue(), avg.displayUsing(IDisplayable.AUTO), stddev.displayUsing(IDisplayable.AUTO))); }
  • 24. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Idea: Marrying OpenTracing and JDK Flight Recorder • Combine OpenTracing and Flight Recorder – Distributed tracing with deep diagnostics capabilities • Create a JFR OpenTracing Tracer – Emit flight recording events for Spans and Scopes (thread local) – Delegate to whichever Tracer is someone’s favourite tracer – Since context is implementation specific, provide plug-in mechanism for custom context extractors – Have it support Oracle JDK 7+ and OpenJDK 11+ by building it as an mrjar • Open sourced prototype (links towards the end) 24
  • 25. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 25 jfr-tracer + Robotshop Demo
  • 26. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. But… • What if you have thousands of these Java processes? • How do you trigger the recording dumps? • Where do you store the recording data? • What if you also want the logs, and the means to process the logs? • What if you want some metrics already at the distributed tracing level? 26
  • 27. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Oracle Management Cloud Application Performance Management 27
  • 28. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. APM Diagnostics Use Case Examples 28 Performance issues in the past • Use APM to monitor and analyze server requests • Use APM with deep dive thread samples to locate the slow code • Very recent past - Dump JFR and analyze in APM and in JMC The problem is happening right NOW!! • Dump JFR • Run the profiler Problem is about to happen (i.e. memory leak) • Take class histograms and compare/trend later
  • 29. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. End-2-End Transaction Tracing, Code-level Visibility • Measure all ingress/egress points • Measure preformance across service and tiers • User defined custom tracing points (OpenTracing, POJO, etc.) when OOB are not sufficent • Leverage diagnostics on monitoring data anywhere/anytime 29
  • 30. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Custom Calls Added OpenTrace in APM 30
  • 31. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 31
  • 32. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 32
  • 33. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 33
  • 34. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 34
  • 35. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 35
  • 36. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 36
  • 37. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. 37
  • 38. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Continuous Integration Java Flight Recorder Build Better Applications with Oracle Code Repository Telemetry from test Telemetry from pre- prod/prod AVAILABILITY APM ALERTSSYS PAGING VIZ.FRAMEWORK DBMONITORING CUSTOM MONITORING LOGGING BIGDATA MONITORING DISTRIBUTED TRACING CLOUD MONITORING Management At Cloud Scale Monitoring Large-Scale Distributed Applications in Oracle Cloud - Thursday, Oct 25, 10:00 a.m. - 10:45 a.m. | Moscone West - Room 2009 - DEV6151 Diagnose Your Microservices: OpenTracing/Oracle Application Performance Monitoring Cloud - Wednesday, Oct 24, 4:00 p.m. - 4:45 p.m. | Moscone West - Room 2011 - DEV5435 Microservices: Ten Steps to Build, Manage, and Monitor Your Microservices - Wednesday, Oct 24, 9:00 a.m. - 9:45 a.m. | Moscone West - Room 2008 - DEV5564 Build Diagnose Run 38
  • 39. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Summary • OpenTracing is a vendor neutral initiative for a standard API for supporting distributed tracing • JDK Flight Recorder is a framework for production time profiling and distnostics built into the JVM • JDK Flight Recorder is open sourced, and included in OpenJDK, since JDK 11 • Oracle has a powerful APM in Oracle Management Cloud – With support for OpenTracing as a Zipkin agent communication endpoint, and… – …as a custom OpenTracing Tracer (metrics++ from the OMC APM agent) – With JFR support 39
  • 40. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Other JMC-/JFR-related Presentations Day Time Title Location Monday 10:30 Contributing to the Mission Control OpenJDK Project MW 2004 Tuesday 11:30 Three Productive Ways to Use Open Source Java Flight Recorder and Java Mission Control MW 2024 Tuesday 14:30 Fast and Furious: Java Flight Recorder and Flame Graphs MW 2020 Wednesday 10:30 Production-Time Profiling and Diagnostics on the JVM MW 2004 Wednesday 12:30 OpenJDK Mission Control: The Hands-on-Lab MW 2001A Wednesday 16:30 Diagnose Your Microservices: OpenTracing/Oracle APM Cloud MW 2011 Thursday 11:00 Getting Started with the (Open Source) JDK Mission Control MW 2014 Thursday 12:30 Flight Recorder in OpenJDK MW 2018 40
  • 41. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Safe Harbor Statement The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
  • 42. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Resources • OMC: http://cloud.oracle.com/OMC • Marcus’ blog: http://hirt.se/blog • Marcus’ GitHub: https://github.com/thegreystone https://github.com/thegreystone/jfr-tracer (Delegating JFR tracer for OpenTracing) https://github.com/thegreystone/problematic-microservices (Robotshop, use the jfr-tracer branch) 42