Dropwizard metrics を用いたメトリクスの収集

Estimated reading time: 1 minute

Metrics feature を用いると Metrics を構成してサーバとリクエストに関する 情報を取得できます。

This feature is defined in the class io.ktor.metrics.DropwizardMetrics in the artifact io.ktor:ktor-metrics:$ktor_version.
dependencies { implementation "io.ktor:ktor-metrics:$ktor_version" }
dependencies { implementation("io.ktor:ktor-metrics:$ktor_version") }
<project> ... <dependencies> <dependency> <groupId>io.ktor</groupId> <artifactId>ktor-metrics</artifactId> <version>${ktor.version}</version> <scope>compile</scope> </dependency> </dependencies> </project>

インストール

Metrics feature はメトリクスレポーターの構築と送出のための registry プロパティを生成します。

JMX Reporter

JMX Reporter はすべてのメトリクスを JMX に公開し、 jconsole や MBeans plugin を適用した jvisualvm で メトリクスの閲覧ができるようになります。

install(DropwizardMetrics) {
    JmxReporter.forRegistry(registry)
        .convertRatesTo(TimeUnit.SECONDS)
        .convertDurationsTo(TimeUnit.MILLISECONDS)
        .build()
        .start()
}

Ktor Metrics: JMX

SLF4J Reporter

SLF4J Reporter を使用すると、 SLF4J でサポートしている形式のレポートを定期的に送出できるようになります。 例えば、10秒ごとにメトリクスを出力したい場合は下記のように設定します。

install(DropwizardMetrics) {
    Slf4jReporter.forRegistry(registry)
        .outputTo(log)
        .convertRatesTo(TimeUnit.SECONDS)
        .convertDurationsTo(TimeUnit.MILLISECONDS)
        .build()
        .start(10, TimeUnit.SECONDS)
}

Ktor Metrics: SLF4J

その他のレポーター

メトリクスレポーターの一覧は Metric reporters に記載されています。

Exposed reports

この feature はメモリの使用量やスレッドの動作等、多くの JVM のメトリクスを送出します。

全体:

Ktor 全体として、下記のものを送出します。

  • ktor.calls.active:Count - 処理中のリクエスト数
  • ktor.calls.duration - レスポンスタイム
  • ktor.calls.exceptions - 例外の発生件数
  • ktor.calls.status.NNN - 各 HTTP ステータスコードごとの件数

Per endpoint:

  • "/uri(method:VERB).NNN" - 各リクエストパス、HTTP メソッド、HTTP ステータスコードごとの件数
  • "/uri(method:VERB).meter" - 各リクエストパス、HTTP メソッドごとの件数
  • "/uri(method:VERB).timer" - 各エンドポイントごとの処理時間

レポートごとの情報

期間

"/uri(method:VERB).timer"ktor.calls.duration は下記の情報を持ちます。

  • 50thPercentile
  • 75thPercentile
  • 95thPercentile
  • 98thPercentile
  • 99thPercentile
  • 999thPercentile
  • Count
  • DurationUnit
  • OneMinuteRate
  • FifteenMinuteRate
  • FiveMinuteRate
  • Max
  • Mean
  • MeanRate
  • Min
  • RateUnit
  • StdDev

件数

他のプロパティは件数を集計します。

  • Count
  • FifteenMinuteRate
  • FiveMinuteRate
  • OneMinuteRate
  • MeanRate
  • RateUnit