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

Micrometer入門 #javaq / introduce-to-micrometer

Micrometer入門 #javaq / introduce-to-micrometer

Javaコミュ@福岡 勉強会1910 での発表資料です
https://javaq.connpass.com/event/147444/

Manabu Matsuzaki

October 08, 2019
Tweet

More Decks by Manabu Matsuzaki

Other Decks in Programming

Transcript

  1. Micrometerೖ໳
    Javaίϛϡˏ෱Ԭ ษڧձ1910
    2019/10/08 @matsumana

    View Slide

  2. Self Introduction
    • Nameɿ Manabu Matsuzaki
    • Work atɿ LINE Fukuoka Corporation
    • Roleɿ SRE
    • Twitterɿ @matsumana

    View Slide

  3. Agenda
    • Micrometerೖ໳
    • MicrometerͷओཁͳMeterͱTag
    • MicrometerΛ࢖͏
    • Micrometerͷ֤छMeterΛ࢖ͬͯࣗ෼ͰϝτϦΫεΛه࿥͢Δ
    • Spring BootΞϓϦͰ࢖͏
    • Binder
    • Demo

    View Slide

  4. ͜ͷࢿྉ͸ҎԼͷόʔδϣϯΛݩʹ࡞੒͍ͯ͠·͢
    • Micrometer: 1.3.0 (LTS)
    • https://github.com/micrometer-metrics/micrometer/releases
    • Spring Boot: 2.2.0 RC1
    • https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.2-
    Release-Notes
    • Armeria: 0.94.0 (Micrometerͷ࢖͍ํͷαϯϓϧͱͯ͠঺հ͠·͢)
    • https://github.com/line/armeria/releases

    View Slide

  5. Micrometerͱ͸ʁ

    View Slide

  6. https://micrometer.io/

    View Slide

  7. Micrometer͕αϙʔτ͍ͯ͠Δ
    ϞχλϦϯάγεςϜ
    • Datadog
    • Prometheus
    • Elasticsearch
    • etc…

    View Slide

  8. MicrometerͷओཁͳMeterͱTag

    View Slide

  9. ओཁͳMeter આ໌
    Counter
    ୯७૿Ճ͢ΔϝτϦΫε
    ྫʣग़ྗͨ͠logͷճ਺
    Gauge
    ஋্͕Լ͢ΔϝτϦΫε
    ྫʣin-flight(ݱࡏॲཧத)ͷϦΫΤετ਺
    Timer ϝιουͷॲཧ࣌ؒܭଌͳͲ
    LongTaskTimer ͕͔͔࣌ؒΔॲཧͷ࣌ؒܭଌ
    DistributionSummary
    Πϕϯτͷαϯϓϧ෼෍
    ྫʣhttpͷrequest/responseαΠζ

    View Slide

  10. TagͰϝτϦΫεʹ৘ใΛ෇Ճ͢Δ
    • Tag͸key-valueͷϖΞ
    • 1ͭͷϝτϦΫεʹରͯ͠ෳ਺ͷTagΛ෇ՃͰ͖Δ
    • Tag͕࣮ࡍͷϝτϦΫεͰͲ͏ѻΘΕΔ͔͸ɺ

    ࣗ෼͕࢖͏ϞχλϦϯάγεςϜ࣍ୈ

    View Slide

  11. TagͰϝτϦΫεʹ৘ใΛ෇Ճ͢Δ
    • Πϝʔδɿ
    TagΛαϙʔτ͢ΔϞχλϦϯάγεςϜ TagΛαϙʔτ͠ͳ͍ϞχλϦϯάγεςϜ
    http_server_requests{uri=“/foo”, status=“200"} 10 http_server_requests_foo_200 10
    http_server_requests{uri=“/foo”, status=“500"} 2 http_server_requests_foo_500 20
    http_server_requests{uri=“/bar”, status=“200"} 21 http_server_requests_bar_200 21
    http_server_requests{uri=“/bar”, status=“500"} 4 http_server_requests_bar_500 4

    View Slide

  12. Tag͕࢖͑Δ Tag͕࢖͑ͳ͍
    AppOptics, Atlas, Azure Monitor,
    Cloudwatch, Datadog, Datadog StatsD,
    Dynatrace, Elastic, Humio, Influx,
    KairosDB, New Relic, Prometheus,
    SignalFx, Sysdig StatsD, Telegraf StatsD,
    Wavefront
    Graphite, Ganglia, JMX, Etsy StatsD
    ֤ϞχλϦϯάγεςϜͷTagαϙʔτ
    https://micrometer.io/docs/concepts#_supported_monitoring_systems

    View Slide

  13. ϝτϦΫεͱTagͷ໋໊نଇ
    • ϝτϦΫεͱLabelͷ໊લ͸େࣄͰ͢
    • MicrometerͷυΩϡϝϯτ
    • Naming meters:

    https://micrometer.io/docs/concepts#_naming_meters
    • PrometheusͷυΩϡϝϯτ
    • Metric and label naming:

    https://prometheus.io/docs/practices/naming/

    View Slide

  14. MicrometerΛ࢖͏

    View Slide

  15. Micrometerͷ֤छMeterΛ࢖ͬͯ
    ࣗ෼ͰϝτϦΫεΛه࿥͢Δ

    View Slide

  16. αϯϓϧϓϩάϥϜ
    • Micrometerιʔεrepoʹ͋ΔαϯϓϧϓϩάϥϜ
    • https://github.com/micrometer-metrics/micrometer/tree/v1.3.0/
    samples/micrometer-samples-core/src/main/java/io/micrometer/
    core/samples
    • CounterSample.java
    • GaugeSample.java
    • TimerSample.java

    View Slide

  17. αϯϓϧϓϩάϥϜ
    • Micrometerͷ࢖͍ํ͸Armeria΋ࢀߟʹͳΓ·͢
    • ྫʣϦΫΤετ/ϨεϙϯεͷϝτϦΫε
    • https://github.com/line/armeria/blob/armeria-0.94.0/core/src/main/java/com/linecorp/
    armeria/internal/metric/RequestMetricSupport.java#L241-L247
    • https://github.com/line/armeria/blob/armeria-0.94.0/core/src/main/java/com/linecorp/
    armeria/common/logging/DefaultRequestLog.java
    • ϦΫΤετ੒ޭ਺ɺϦΫΤετΤϥʔ਺ (Counter)
    • ϦΫΤετॲཧ࣌ؒ (Timer)
    • ϦΫΤεταΠζɺϨεϙϯεαΠζ (DistributionSummary)

    View Slide

  18. Spring BootΞϓϦͰ࢖͏

    View Slide

  19. ΞϓϦέʔγϣϯઃఆ (Must)
    • ActuatorΛґଘϥΠϒϥϦʹ௥Ճ

    org.springframework.boot:spring-boot-starter-actuator
    • ࣗ෼͕࢖͏ϞχλϦϯάγεςϜ༻ͷґଘϥΠϒϥϦ΋௥Ճ
    • Prometheusͷ৔߹: io.micrometer:micrometer-registry-prometheus
    • Datadogͷ৔߹: io.micrometer:micrometer-registry-datadog

    View Slide

  20. ΞϓϦέʔγϣϯઃఆ (Optional)
    • Prometheusͷ৔߹ɺΞϓϦέʔγϣϯଆʹPrometheusαʔό͕
    Scrape͢ΔEndpoint͕ඞཁɻ
    • application.yml(or application.properties)ʹઃఆΛߦ͏
    • management.endpoints.web.exposure.includeʹprometheusΛ௥Ճ

    ྫʣ

    management.endpoints.web.exposure.include=info, health, prometheus

    View Slide

  21. ΞϓϦέʔγϣϯઃఆʢ͓͢͢Ίʣ
    • ݸਓతʹɺҎԼ΋ઃఆ͢ΔࣄΛ͓͢͢Ί
    • URIຖͷϨΠςϯγͷϝτϦΫε

    management.metrics.distribution.percentiles.http.server.requests

    View Slide

  22. ؔ࿈υΩϡϝϯτͱࢀߟϒϩά
    • Spring Boot Actuator: Production-ready Features

    https://docs.spring.io/spring-boot/docs/2.2.0.RC1/reference/html/
    production-ready-features.html
    • Spring BootΞϓϦͷϝτϦΫεΛMicrometerͰऩू͢Δ

    https://matsumana.info/blog/2018/05/23/collect-spring-boot-app-
    metrics-with-micrometer/
    • ϨΠςϯγʔΛܭࢉ͢Δٕज़ͷ࿩

    https://engineering.linecorp.com/ja/blog/latency-calculation-techniques/

    View Slide

  23. Binder

    View Slide

  24. Binderͱ͸ʁ
    • ϞχλϦϯάର৅(JVM/APαʔό/ϥΠϒϥϦͳͲ)ͱMicrometerͱͷͭͳ͗໾
    • ϞχλϦϯάର৅ࣗ਎͕͍࣋ͬͯΔϝτϦΫεΛMicrometerܦ༝ͰϞχλϦ
    ϯάγεςϜʹૹΔࣄ͕Ͱ͖Δ

    • Micrometerͷඪ४Binder

    https://github.com/micrometer-metrics/micrometer/tree/v1.3.0/micrometer-
    core/src/main/java/io/micrometer/core/instrument/binder
    • JVMɺTomcatɺJettyɺLogbackɺCaffeineɺetc…

    View Slide

  25. Binderͱ͸ʁ
    • ྫ͑͹ɺJVMؔ࿈ͷϝτϦΫε͸ҎԼ
    • https://github.com/micrometer-metrics/micrometer/tree/v1.3.0/
    micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm
    • JvmGcMetrics.java
    • JvmMemoryMetrics.java
    • JvmThreadMetrics.java
    • ClassLoaderMetrics.java

    View Slide

  26. DEMO
    • αϯϓϧΞϓϦ
    • https://github.com/matsumana/micrometer-example
    • DatadogʹϝτϦΫεΛอଘ͢Δ
    • PrometheusʹϝτϦΫεΛอଘͯ͠GrafanaͰՄࢹԽ͢Δ
    • JVMϝτϦΫεͷμογϡϘʔυ
    • HikariCPϝτϦΫεͷμογϡϘʔυ

    View Slide

  27. ·ͱΊ
    • MicrometerͷओཁͳMeterͱTagʹ͍ͭͯઆ໌͠·ͨ͠
    • MeterΛ࢖ͬͯϝτϦΫεΛه࿥͢Δํ๏ʹ͍ͭͯઆ໌͠·ͨ͠
    • Binderʹ͍ͭͯઆ໌͠·ͨ͠
    • DatadogɺPrometheusͷσϞΛ͓ݟͤ͠·ͨ͠
    • JVMͱHikariCPͷϝτϦΫεΛGrafanaͰՄࢹԽͯ͠Έ·ͨ͠

    View Slide

  28. Thank you :)

    View Slide