メトリクス
- 収集
- 形式
JVM Web application メトリクス
プロメテウス
- サバ
- new relic
取得
- 取る
- アプリケーション内部
- JVMが提供しているもの
- 出す
- httpでメトリクス提供
- 指定のツール JVM経由
- JMX経由で取る
- 集める
- server/process
- pull/push
- 描画する
- グラフ
- ダッシュボード
- 監視(閾値)設定
pull push
- push 収集先へデータを投げる
- mackerel
- pull 収集側がデータを取りに来る
- プロメテウス
mackerel
- mackerel-jvm-plugin
- jmx jstat jcmd
- https://docs.oracle.com/javase/jp/8/docs/technotes/guides/troubleshoot/tooldescr025.html
prometheus
- grafanaで描画
- prometheusで監視
telegraf
- metrics interface gateway
- https://github.com/influxdata/telegraf
メトリクスの形式
- key value形式は古い
- JMX
- dropwizard metrics
- key+labels value形式
- https://github.com/kubernetes/kubernetes/issues/1297
- 数が増えると全列挙だるい
- ラベルを付けてインデックス化する
最低限見てほしいもの
- 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