Skip to content
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
project upgrade to kamon-core 2.0.0-M5 Jun 5, 2019
src avoid loading the AsyncExecutor class when loading the instrumentation Jun 19, 2019
.travis.yml upgrade build to core 2.0.0-RC1 Jun 18, 2019 move jdbc Nov 30, 2016
LICENSE move jdbc Nov 30, 2016 release experimental-1.0.0-RC1 Jun 5, 2019
build.sbt upgrade build to core 2.0.0-RC1 Jun 18, 2019
version.sbt set version to 2.0.0-SNAPSHOT Jun 21, 2019

JDBC Integration Build Status

Gitter Maven Central

The kamon-jdbc module brings bytecode instrumentation to trace jdbc-compatible database requests

The kamon-jdbc module requires you to start your application using the Kamon Agent. Kamon will warn you at startup if you failed to do so.

The bytecode instrumentation provided by the kamon-jdbc module hooks into the JDBC API to automatically start and finish segments for requests that are issued within a trace. This translates into you having metrics about how the requests you are doing are behaving.

Getting Started

Kamon scala module is currently available for Scala 2.10, 2.11 and 2.12.

Supported releases and dependencies are shown below.

kamon-jdbc status jdk scala
1.0.0-RC1 experimental 1.8+ 2.10, 2.11, 2.12

To get started with SBT, simply add the following to your build.sbt file:

libraryDependencies += "io.kamon" %% "kamon-jdbc" % "experimental-1.0.0-RC1"


The following metrics will be recorded:

  • reads: a histogram that tracks the reads requests latency (SELECT statement).
  • writes: a histogram that tracks the writes requests latency (INSERT, UPDATE, and DELETE statements).
  • slows: a simple counter with the number of measured slow requests.
  • errors: a simple counter with the number of failures.

Naming Segments

By default, the name generator bundled with the kamon-jdbc module will use the statement name as tge name to the automatically generated segment (i.e SELECT, INSERT, etc). Currently, the only way to override that name would be to provide your own implementation of kamon.jdbc.JdbcNameGenerator which is used to assign the segment name

Slow Requests

Requests that take longer to execute than the configured kamon.jdbc.slow-query-threshold can be processed by user-defined kamon.jdbc.DefaultSlowQueryProcessor. The default processor logs a warning message

Error Processor

Requests that error can be processed by user-defined kamon.jdbc.SqlErrorProcessor. The default processor logs an error message


kamon {
  jdbc {
    slow-query-threshold = 2 seconds

    # Fully qualified name of the implementation of kamon.jdbc.SlowQueryProcessor.
    slow-query-processor = kamon.jdbc.DefaultSlowQueryProcessor

    # Fully qualified name of the implementation of kamon.jdbc.SqlErrorProcessor.
    sql-error-processor = kamon.jdbc.DefaultSqlErrorProcessor

    # Fully qualified name of the implementation of kamon.jdbc.JdbcNameGenerator that will be used for assigning names to segments.
    name-generator = kamon.jdbc.DefaultJdbcNameGenerator
You can’t perform that action at this time.