by shigemk2

当面は技術的なことしか書かない

memo JVM metrics #ScalaMatsuri

メトリクス

  • 収集
  • 形式
  • JVM Web application メトリクス

  • プロメテウス

  • サバ
  • new relic

取得

  • 取る
    • アプリケーション内部
    • JVMが提供しているもの
  • 出す
    • httpでメトリクス提供
    • 指定のツール JVM経由
    • JMX経由で取る
  • 集める
    • server/process
    • pull/push
  • 描画する
    • グラフ
    • ダッシュボード
    • 監視(閾値)設定

pull push

  • push 収集先へデータを投げる
    • mackerel
  • pull 収集側がデータを取りに来る
    • プロメテウス

mackerel

prometheus

  • grafanaで描画
  • prometheusで監視

telegraf

メトリクスの形式

最低限見てほしいもの

  • heap usage
    • メモリリーク
    • Xmxなどをしたうえで適切なgcが行われているか
  • gc lifecycle
    • メモリリーク
    • 大きなサーバーに移行したときに無駄なメモリを割り当ててしまう
  • thread pool
    • 枯渇
    • implicit global スレッドが無限に増え続けく
  • connection pool
    • asyncなアプリケーションを書く
    • スレッドプール コネクションプール
    • ブロッキング処理を書くときは独自のスレッド処理を書くことがある
  • cpu
    • JVM関係ない
  • application metrics
    • 非同期applicationを書いたらcpuがネック
    • networkは設定に応じて上限
  • request count/response time/queue
    • 泥臭く取っていき

micrometer

  • Java界隈のデファクトスタンダード
  • HikariCPのメトリクスも出せる

glowroot

framegraph https://glowroot.org/

e.g.

  • camon
  • micrometer