Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Mar 23 12:54
    ivantopo commented #1094
  • Mar 23 09:34
    ivantopo commented #1094
  • Mar 23 08:43
    ivantopo commented #1094
  • Mar 23 08:42
    ivantopo commented #1144
  • Mar 23 08:36
    ivantopo opened #1147
  • Mar 23 02:34
    mofei100 commented #1144
  • Mar 23 02:33
    mofei100 closed #1144
  • Mar 21 15:36
    seglo edited #1145
  • Mar 21 15:33
    seglo synchronize #1145
  • Mar 21 08:25
    sebarys opened #1146
  • Mar 20 18:16
    sebarys commented #793
  • Mar 20 18:14
    sebarys commented #793
  • Mar 19 23:41
    seglo opened #1145
  • Mar 18 14:33
    cmcmteixeira commented #1127
  • Mar 18 02:42
    mofei100 edited #1144
  • Mar 18 02:22
    mofei100 opened #1144
  • Mar 17 19:48
    hughsimpson commented #1127
  • Mar 17 19:10
    hughsimpson commented #1127
  • Mar 17 11:55
    ivantopo closed #1046
  • Mar 17 11:55
    ivantopo commented #1046
Jakub Kozłowski
@kubukoz
any idea about what might be wrong in the setup? The agent is on the classpath too, saw the kanela logo on startup
Ivan Topolnjak
@ivantopo
hey @kubukoz, probably @jkwatson can help you with that :)
2 replies
kr
@xtrntr
hi, i am running the kamon bundle with kanela running successfully, but i only see the host metrics modules on the status page, i don't see the akka http modules. the docs say that it should be turned on by default
29 replies
Christopher Mead
@testlabauto
hi, i have kamon working in my app but I have a question about initializing a custom metric. I call Kamon.init() at the very beginning of my App and call Kamon.counter("xx.yy.zz").withoutTags().increment() in a Future. If I want to initialize xx.yy.zz to 0 in my App, do I need to use a Gauge instead? If so, is it necessary to use kamon-scala-future to pass this gauge to the Future? In the docs, the context entries seem more simple than a gauge so I had some doubts about whether that would work or whether I was even looking at the problem correctly.
1 reply
Bastien Semene
@Sabbasth

Hi all,

I'm using kamon-prometheus and I get issues getting labels applied. This configuration does not return labels:

kamon {
  reporters = ["kamon.prometheus.PrometheusReporter"]
  prometheus {
    include-environment-tags = yes
    environment{
      service = "matcher"
      env = "dev"
    }
  }
}

Curl on the exporter:

$ curl localhost:9095
# TYPE doc_count_total counter
doc_count_total 19901.0
# TYPE batch_count_total counter
batch_count_total 778.0
# TYPE assigned_partitions gauge
assigned_partitions 11.0
# TYPE handle_batch_seconds histogram
handle_batch_seconds_bucket{le="0.005"} 0.0
handle_batch_seconds_bucket{le="0.01"} 0.0
handle_batch_seconds_bucket{le="0.025"} 0.0
handle_batch_seconds_bucket{le="0.05"} 0.0
handle_batch_seconds_bucket{le="0.075"} 0.0
handle_batch_seconds_bucket{le="0.1"} 0.0
handle_batch_seconds_bucket{le="0.25"} 24.0
handle_batch_seconds_bucket{le="0.5"} 659.0
handle_batch_seconds_bucket{le="0.75"} 742.0
handle_batch_seconds_bucket{le="1.0"} 754.0
4 replies
Christopher Mead
@testlabauto
Hi, there no longer seems to be a refine() method. How can I add multiple tags to a Counter()?
2 replies
Peter Nerg
@pnerg
Since the upgrade to Kamon 2.x I've struggled to find a way to echo a custom HTTP header. I can receive and propagate custom headers but what if I want to add a header to the response?
7 replies
Yannic Klem
@Yannic92
Hi, we're migrating to Kamon 2.x and it seems like the metric "jvm_class_loading" is no longer available. I'm aware that you've changed some naming schemes but I couldn't find it with some similar name. Was it removed completely?
6 replies
moriyasror
@moriyasror
Hi I see that support for jmx was in version 1.x what about the current version 2.x?
1 reply
Isak Rabin
@sgirabin

Hi All,

I am using kamon-prometheus (version 2.1.3) to send metrics to prometheus pushgateway.
I got issue that the message always empty. Here is my configuration

prometheus {
    start-embedded-http-server = no

    include-environment-tags = yes

    pushgateway {
      api-url = "http://stg-xxxx"

      connect-timeout = 5 seconds
      read-timeout = 5 seconds
      write-timeout = 5 seconds
    }

    metric {
      tick-interval = 1 seconds
    }

  }

This is the error message:

[2020-09-23 16:41:00,128] ERROR Failed to send metrics to Prometheus Pushgateway (kamon.prometheus.PrometheusPushgatewayReporter:44)
java.lang.Exception: Failed to POST metrics to Prometheus Pushgateway with status code [405], Body: [Method Not Allowed
]
    at kamon.prometheus.HttpClient.doMethodWithBody(HttpClient.scala:40)
    at kamon.prometheus.HttpClient.doPost(HttpClient.scala:25)
    at kamon.prometheus.PrometheusPushgatewayReporter.reportPeriodSnapshot(PrometheusPushgatewayReporter.scala:43)
    at kamon.module.ModuleRegistry$$anon$1.$anonfun$run$2(ModuleRegistry.scala:176)
    at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:654)
    at scala.util.Success.$anonfun$map$1(Try.scala:251)
    at scala.util.Success.map(Try.scala:209)
    at scala.concurrent.Future.$anonfun$map$1(Future.scala:288)
    at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
    at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
    at scala.concurrent.impl.CallbackRunnable.run$$$capture(Promise.scala:60)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
2 replies
Declan
@d-g-n
hello all, we're currently using the span.processing-time metric with the tags associated with the path, port, method etc to report on how long a given endpoint is taking, is that the correct metric to be targetting as the values coming through for it seem quite low. in the info page under 5266 we can see the unit is noted as "nanoseconds" for it, however, for an average response we're getting values like 7241728.0 which, if it's nanoseconds, is only 7 milliseconds, is this correct? should i be looking at a different metric for reporting on how long a given akka-http path is taking? we are currently using kamon-bundle 2.1.6 and a custom reporter, but the stat value is unchanged
5 replies
Declan
@d-g-n
that said, the maximum value available for the ranges are fairly reasonable so maybe i'm just overthinking it
Declan
@d-g-n
Hello again, I was just wondering if there's any strong push back against extending the statsd reporter to also have the ability to represent kamon tags as tags in this format: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-statsd.html, the cloudwatch agent processes them into dimensions, would this be something that's accepted as a pr?
13 replies
Nikhil Arora
@nikhilaroratgo_gitlab
Hello everyone, We are successfully using Kamon for metrics reporting. Now, we want to setup distributed tracing. Is there any step by step guideline how to do that ?
6 replies
Peter Nerg
@pnerg
Added a PR a week ago, any comments would be appreciated...even better if it would be accepted/merged...:)
kamon-io/Kamon#858
1 reply
TjarkoG
@TjarkoG
Hi There
We are currently trying to write some Metrics and aren't realy satisfied with our sollution.
We have some Kafka-Consumers which themselves have a "metrics" map which is mutable and returns the current value when called.
to write those values to Kamon we currently have an actor that periodicaly takes the value and writes into a Kamon Gauge.
Is there a way to "register" a Gauge whose value is defined by a function?
Nikhil Arora
@nikhilaroratgo_gitlab
Hello Guys, How do I disable the span at global level? I am trying to disable this individually like this . Is there an easy way ?
instrumentation.akka.http {
    server {
      propagation {
        enabled = false
      }
      tracing {
        enabled = false
      }
    }
  }

  instrumentation.play.http {
    server {
      propagation {
        enabled = false
      }
      tracing {
        enabled = false
      }
    }
    client {
      propagation {
        enabled = false
      }
      tracing {
        enabled = false
      }
    }
  }

  instrumentation.http-server.default {
    propagation {
      enabled = false
    }
    tracing {
      enabled = false
    }
  }

  instrumentation.http-client.default {
    propagation {
      enabled = false
    }
    tracing {
      enabled = false
    }
  }
Nikhil Arora
@nikhilaroratgo_gitlab
and how can I disable JDBC spans as mentioned here https://kamon.io/docs/latest/instrumentation/jdbc/statement-tracing/ ? There is no property to disable the spans.
kr
@xtrntr
how can i ignore akka http for specific endpoints?
4 replies
Marian Diaconu
@neboduus

Hi all, i am trying out this technology, but the Zipkin Server does not receive any data from my Scala Play App.

I have done the configuration for the Scala Play Framework:

// build.sbt
lazy val root = (project in file("."))
  .enablePlugins(PlayScala, JavaAgent)

libraryDependencies ++= "io.kamon"                     %% "kamon-bundle"                  % "2.1.0",

// plugins.sbt
 addSbtPlugin("io.kamon" % "sbt-kanela-runner-play-2.7" % "2.0.6")

// app.conf
kamon.zipkin {
  # Hostname and port where the Zipkin Server is running
  #
  host = "localhost"
  port = 9411

  # Decides whether to use HTTP or HTTPS when connecting to Zipkin
  protocol = "http"
}

And run a local zipkin server:

docker run -d -p 9411:9411 openzipkin/zipkin

But whenever I go on localhost:9411 i do not see any trace

Marian Diaconu
@neboduus

Hi all, i am trying out this technology, but the Zipkin Server does not receive any data from my Scala Play App.

I have done the configuration for the Scala Play Framework:

// build.sbt
lazy val root = (project in file("."))
  .enablePlugins(PlayScala, JavaAgent)

libraryDependencies ++= "io.kamon"                     %% "kamon-bundle"                  % "2.1.0",

// plugins.sbt
 addSbtPlugin("io.kamon" % "sbt-kanela-runner-play-2.7" % "2.0.6")

// app.conf
kamon.zipkin {
  # Hostname and port where the Zipkin Server is running
  #
  host = "localhost"
  port = 9411

  # Decides whether to use HTTP or HTTPS when connecting to Zipkin
  protocol = "http"
}

And run a local zipkin server:

docker run -d -p 9411:9411 openzipkin/zipkin

But whenever I go on localhost:9411 i do not see any trace

I solved this by implementing Manual instrumentation. The automatic does not work... At least not for a simple Controller#action which does not do nothing

kr
@xtrntr
i have akka instrumentation enabled, but spans are not showing up even with this config setup:
kamon.instrumentation.akka.filters {
   actors.trace {
     includes = [
...
     ]
   }
 }

 kamon.instrumentation.akka.filters {
   actors.start-trace {
     includes = [
...
     ]
   }
 }

 kamon.trace.sampler="always"
3 replies
i do see spans from akka.http and jdbc though
Subroto Sanyal
@subrotosanyal
hi
Is there a way to use Kamon in tomcat environment ?
My web-application which uses AKKA and is deployed within tomcat. Since tomcat doesn't do the Kamon.init at startup, my application is not getting instrumented.
Is there a solution to this without patching Tomcat?
Sergio
@sergio_noviello_twitter

Hi, I'm trying to use kamon bundle (v2.1.4) in a akka project (akka v2.6.9) I'm using
javaAgents += "io.kamon" % "kanela-agent" % "1.0.6" in build.sbt
addSbtPlugin("io.kamon" % "sbt-kanela-runner" % "2.0.6") in plugin.sbt
and Kamon.init() at the beginning of the main method, but I get this error

java.lang.ClassCastException: scala.util.Success cannot be cast to kamon.instrumentation.context.HasContext

I appreciate your help. Thank you

kr
@xtrntr
@sergio_noviello_twitter i've fixed that issue by making sure Kamon.Init() is the first line of code in your Main class, might be good to check if you have any traits that get initialized first
Sergio
@sergio_noviello_twitter
@xtrntr thanks for your reply, Kamon.init() is at the very beginning of the main method of the object Main that is extending Logging. This is the content of Logging
trait Logging {
  protected lazy val logger = {
    LoggerFactory.getLogger(this.getClass.getName)
  }
}
kr
@xtrntr

@sergio_noviello_twitter this is another possible solution: https://github.com/kamon-io/Kamon/issues/601#issuecomment-518596157

you could start the app with the -javaagent:kanela.jar option

Oliver Schrenk
@oschrenk

I'm trying to setup Kamon 2.1.4 following Get Started

but I am getting

[error] Exception in thread "Host Metrics" java.lang.UnsatisfiedLinkError: Unable to load library 'DiskArbitration':
[error] dlopen(libDiskArbitration.dylib, 9): image not found
[error] dlopen(libDiskArbitration.dylib, 9): image not found
[error] Native library (darwin/libDiskArbitration.dylib) not found

My best guess is that this is because of macOS 11 (work laptop is in repair, and I have to use my private machine) and now I am hitting oshi/oshi#1289.

Is there a workaround? Where should post an issue to upgrade to the latest oshi version?

2 replies
Sergio
@sergio_noviello_twitter
I removed any traits that get initialized before Kamon.init() but now I'm getting a new error. Anybody seen this before?
java.lang.IllegalStateException: Error during attachment using: kamon.lib.net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$Compound@1d81e101
1 reply
Sergio
@sergio_noviello_twitter
thanks @ivantopo so the solution is to start the app with the arg -javaagent:path-to-kanela.jar ?
Ivan Topolnjak
@ivantopo
yeap, that should work
Sergio
@sergio_noviello_twitter
I'm using sbt-native-packager and the issue I had before is gone, but no matter what I try I still get the error: scala.util.Success cannot be cast to kamon.instrumentation.context.HasContext The only thing initialized at the start is RollbarAppender, would this cause this problem? Also if I'm using sbt-native-packager do I still need Kamon.init() ?
danischroeter
@danischroeter
hi guys
are there any hints if it's worth to upgrade kanela?
the release notes are empty... thx
https://github.com/kamon-io/kanela/releases
Marian Diaconu
@neboduus

Hi everyone, is it possible to use ScalaPlay+Kamon+Zipkin+Manual Instrumentation? I am able to make work the auto-instrumentation, but I can't figure out how to implement the manual one, which honestly is the most interesting. I followed this guide here, but with no success

https://kamon.io/docs/latest/guides/installation/manual-instrumentation/

3 replies
Marian Diaconu
@neboduus
cmon people, is there anyone which managed to manually instrument a Scala Play 2.6 app?
JR Utily
@JR-Utily
Hello !
I'm wondering is there is a way to "switch" the instrumentation of Kamon on/off
We are considering using it in my team to have better logging through Futures etc
But in our mind, it would be like a DebugMode, that would do nothing if not activated.
So is there a live parameter somewhere to switch off the monitoring ?
Or is the fact not to add the agent a safe way to switch ?
Or should it be always on as soon as we include a Kamon.init() in our code ?
JR Utily
@JR-Utily
@ivantopo any insight for me ? ;)
João Ferreira
@jtjeferreira
@JR-Utily "Or is the fact not to add the agent a safe way to switch" this works for us
Sergio
@sergio_noviello_twitter

I'm still confused if I add the kanela-agent do I still need Kamon.init() ? This is what I have in my build.sbt

    javaAgents += "io.kamon" % "kanela-agent" % "1.0.6"
  )

I'm having a very weird issue, I deployed my app on 7 k8s pods and the kamon traceID is missing on requests sent to some pods

JR Utily
@JR-Utily
@jtjeferreira I've just found that: kamon-io/kanela#105 so I fear it is not the case
To recompile with different code or sbt is really not possible for us, it would lost the benefit of instrumenting through an agent
Marian Diaconu
@neboduus
sorry guys, in Scala 2.6 eager singletons are needed but I was implementing them wrong in dev mode. need to start the app with sbt compile run instead of just sbt run and it flew
JR Utily
@JR-Utily
is there a way to get metrics from Span without reporter ?
to log the span duration in my regular logger
Ivan Topolnjak
@ivantopo

@/all Hey folks! We (the few folks behind Kamon) are going to stop using Gitter in favor of Github Discussions. If you have any ideas, comments and questions please create a new discussion here: https://github.com/kamon-io/Kamon/discussions

Thanks a lot to everyone who has been hanging out here for years and helping other folks. I really hope to see you around Githubs Discussions as well :pray:

In case you are interested in why, just look at the little mess in the history of this channel :smile:.. We would like to keep all comments related to the same topic in the same context, and Gitter threads really fall short on helping us keep track of what has been answered or not. Have a nice day!

Jakub Kozłowski
@kubukoz
so 1 Gitter thread <-> 1 Discussion? I haven't used that yet
SimunKaracic
@SimunKaracic
Yeah, something like that. Just use that to ask questions that are not something that you would open an issue for.
It's still a new feature, but don't be afraid to just open a new discussion, if it's a duplicate or something, we'll redirect you
Jakub Kozłowski
@kubukoz
Can we have a #random discussion too? :D