jvm web application metrics monitoring
play

JVM Web Application Metrics & Monitoring FOLIO @krrrr38 2 3 - PowerPoint PPT Presentation

JVM Web Application Metrics & Monitoring FOLIO @krrrr38 2 3 1. 2. 3. JVM Web Application 4 5 Metrics 6 Metrics JVM http JMX jcmd, jstat, ... 7 Metrics server/process pull /push 8 pull /push push server -(process)->


  1. JVM Web Application Metrics & Monitoring FOLIO @krrrr38 2

  2. 3

  3. 1. 2. 3. JVM Web Application 4

  4. 5

  5. Metrics 6

  6. Metrics JVM http JMX jcmd, jstat, ... 7

  7. Metrics server/process pull /push 8

  8. pull /push push server -(process)-> metrics storage gateway e.g. mackerel agent pull server <- metrics e.g. prometheus 9

  9. Example 1 mackerel-agent (mackerel-jvm-plugin) mackerel https://mackerel.io/ process 10

  10. jvm app (jmx, perf,...) ↓ jstat, jcmd ↓ mackerel-agent ↓ mackerel ↓ mackerel 11

  11. Example 2 prometheus, grafana 12

  12. jvm app: /metrics prom metrics ↓ prometheus ↓ grafana prometheus 13

  13. Example 3 telegraf metrics interface gateway telegraf https://github.com/in�uxdata/telegraf 14

  14. 15

  15. key value JMX dropwizard metrics 16

  16. key+labels value 17

  17. key+labels value prometheus kamon micrometer http://micrometer.io/ 18

  18. response_time_GET_foo = 123ms response_time_GET_bar = 250ms response_time_POST_bar = 210ms response_time_POST_foo_bar = 512ms 19

  19. average/max/95%tile response_time_GET_foo_average = 123ms response_time_GET_foo_max = 123ms response_time_GET_foo_95% = 123ms response_time_GET_bar_average = 250ms response_time_GET_bar_max = 250ms response_time_GET_bar_95% = 250ms response_time_POST_bar_average = 210ms response_time_POST_bar_max = 210ms response_time_POST_bar_95% = 210ms response_time_POST_foo_bar_average = 512ms response_time_POST_foo_bar_max = 512ms response_time_POST_foo_bar_95% = 512ms 95%tile / ...? 20

  20. SELECT * FROM metrics WHERE key IN ( response_time_GET_foo_95%, response_time_GET_bar_95%, response_time_POST_bar_95%, response_time_POST_foo_bar_95% ) index SELECT * FROM metrics WHERE key LIKE 'response_time_%_95\%' 21

  21. response_time{"method"=GET, path=foo, percent=50} = 123ms response_time{"method"=GET, path=foo, percent=95} = 123ms response_time{"method"=GET, path=foo, percent=100} = 123ms template percent method=POST 22

  22. 23

  23. 24

  24. JVM Web Application Metrics 25

  25. heap usage gc lifecycle thread pool connection pool cpu request count / response time queue ... 26

  26. heap usage / gc lifecycle memory leak Xmx gc ( ) in-memory cache 512M~2G FullGC STW gc lifecycle 27

  27. thread / connection pool blocking thread pool active e.g. servlet not nio api jedis/jdbc/... thread pool in application blocking thread pool thread pool implicit global default ForkjoinPool 28

  28. server cpu / network / etc application cpu network 29

  29. request count / response time / queue / ... 30

  30. 31

  31. micrometer 32

  32. micrometer Java key+labels value plugin JVM System metrics, GC, logback, tomcat, jetty, hikaricp jmx, prom, in�ux, datadog agent,... 33

  33. jmx, java agent, -XX:+FlightRecorder , ... 34

  34. agent java -jar e.g. NewRelic 35

  35. 36

  36. framegraph: http://www.brendangregg.com/blog/2015-11- 06/java-mixed-mode-�ame-graphs.html https://github.com/jvm-pro�ling-tools/perf- map-agent https://glowroot.org/ 37

Recommend


More recommend