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

Using apex + apexbeat for Java application moni...

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
Tweet

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