Check out the New Service Map! Check out the all-new Kamon APM Service Map!
Kamon Telemetry
Kamon Telemetry Icon


Collect Metrics and Traces with minimal code

Battle-tested, free and open-source instrumentation for distributed systems.

Start Monitoring Free
No credit card required
Join hundreds of developers monitoring microservices with Kamon
liveintent emnify
Electrical Plug Icon

Automatic Instrumentation

Setup with a few lines of code and Kamon will do the rest for you!

Kamon automatically collects metrics and traces from Akka, Play Framework and other JVM frameworks.

See available instrumentations
Telemetry Illustration
Chart Icon

Instrument Once, Report Anywhere

Send metrics and traces wherever you want. Switch between Kamon APM, Prometheus, Zipkin and more at any time, without code changes.

See available reporters
Telemetry Illustration
Code Icon

Code Your Own Instrumentation

Collect your own metrics, define custom traces and propagate context with Kamon core APIs.


Track latency, errors and any business metric with high-definition histograms.

Arrow down icon Arrow up icon
Distributed Tracing

Trace operations through any service and application component.

Arrow down icon Arrow up icon
Context Propagation

Propagate userID, requestID and any correlation data between threads and services.

Arrow down icon Arrow up icon
                // One-Liner metric and increment

                // Fully define a metric
                val DataSent = Kamon.counter(
                  name = "",
                  description = "Counts data sent out",
                  unit = bytes

                // Tag and use an instrument
                val sentOnInterface = DataSent
                  .withTag("interface", "eth0")

                // Adding tags to the SpanBuilder
                val span = Kamon.spanBuilder("find-users")
                  .tag("string-tag", "hello")
                  .tag("number-tag", 42)
                  .tag("boolean-tag", true)

                // Adding tags to the Span.
                  .tag("other-string-tag", "bye")
                  .tag("other-number-tag", 24)
                  .tag("other-boolean-tag", false)

                // After this point no tags can be added.

                  // Creating a Context with two keys
                  val context = Context()
                    .withKey(UserID, "1234")
                    .withKey(SessionID, Some(42))

                  // Reading values from a Context
                  val userID: String = context.get(UserID)
                  val sessionID: Option[Int] = context.get(SessionID)

                  // The default value is returned for non-existent keys
                  val requestID: Option[String] = context.get(RequestID)
Free icon

Is Kamon Telemetry free?

Yes. Kamon Telemetry is and will always be Free and Open Source.

View on Github Github Icon
Free icon

Have questions?

Head over to our Github discussions if you need help with your setup, have a feature request or want to share your experience.

Start a Discussion Github Icon

Want to learn more?

Learn how to create your own metrics, configure reporters and understand everything about Kamon in our Docs section.

Read the Docs Deployment unit icon