Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Using apex + apexbeat for Java application moni...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

Using apex + apexbeat for Java application monitoring

Slide deck for the elasticsearch meetup in Zürich March 2017

Avatar for Jens Saade

Jens Saade

March 01, 2017

Other Decks in Programming

Transcript

  1. § quick intro on apex § how apex links to

    ELK with apexbeats § short demo with SAP Hybris
  2. about me § working as an Java Engineer for GK

    Software, building POS Systems § domains: Retail, E-Commerce, Product Information Mgmt (PIM) § formerly Pironet, unic, NSM § founded NauticNetworks (B2B2C Marketplace) in 2008 *RIP § (nearly) founded Verticle in 2016 § creator of APEX and apexbeat
  3. What‘s APEX? APEX extracts process runtime data and metrics from

    Java applications to accelerate application analytics, debugging and monitoring.
  4. Quick facts on APEX § started mid 2015 as a

    pet project called APM (Application Process Monitoring) Focus: Monitoring for SAP Hybris (E-Commerce Platform) § lauched as an MVP, abandoned § transformed APM into a do-it-yourself toolkit, making it generic § open sourced on Github in Oct16 § created apexbeats recently to link ELK
  5. ◦ user behaviour via webanalytics ◦ CPU, mem, disk, net

    ◦ uptime ◦ threads, mem ◦ process execution via logs, jmx, dynatrace ◦ process execution via logs, jmx, dynatrace " insufficent flexibility
  6. goals § target processes executions § extract  their  runtime  data

    § visualize  &  analyze  it § also  target  closed/compiled   src restrictions § no rebuilds or redeployments § infrequent  restarts  OK § easy  to  apply  and  extend
  7. technical approach § deployed as a java agent § instruments

    target classes in the JVM (same approach as new relic‘s agent) § weaves hooks into methods to plug handlers upon classloading benefits § clear separation, no cluttering § scaleable, reuse on any number of nodes § shareable configuration
  8. Scripts Injected groovy script running on selected method entry/exit: def

    execute(){ // the instrumented instance def instance = context.getInstance(); def someData = instance.runSomeInternalCode(); // message object to be sent to APEX message.addField(“data",someData); println “current data is “ + someData; } target configurations + instrumentation instructions
  9. purpose § listens for APEX messages and transform to beat

    format § offloading harvested data from the JVM § transporting harvested data reliable to Elasticsearch § index/type mapping apexbeat § links APEX to Elasticsearch § built on libbeats in GO in roughly a day‘s work
  10. demo § SAP Hybris demo shop § APEX, with configuration

    + log entries in Hybris § apexbeat, forwarding metrics § Kibana dashboard
  11. More on apex and apexbeat § Code repositories on Github

    § dockerized demo on Dockerhub visit http://toolkits.verticle.io for details and docs. [email protected] @jenssaade