Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jan 31 2019 07:19
    paascloud starred kamon-io/Kamon
  • Jan 30 2019 20:59
    eugenemiretsky opened #568
  • Jan 30 2019 17:59
    eabizeid starred kamon-io/Kamon
  • Jan 30 2019 06:39
    PDimitryuk starred kamon-io/Kamon
  • Jan 25 2019 15:52
    sjoerdmulder opened #567
  • Jan 23 2019 20:05

    dpsoft on 1.1.5

    (compare)

  • Jan 23 2019 19:56

    dpsoft on v1.1.5

    (compare)

  • Jan 23 2019 19:48

    dpsoft on 1.1.5

    * Update Hdr * lazy vals in Kam… (compare)

  • Jan 22 2019 12:17
    andreas-schroeder opened #566
  • Jan 16 2019 18:34
    nodox starred kamon-io/Kamon
  • Jan 06 2019 14:21
    kencyke starred kamon-io/Kamon
  • Jan 06 2019 12:47
    ivantopo edited #565
  • Jan 06 2019 12:46
    ivantopo synchronize #565
  • Jan 06 2019 12:45
    ivantopo review_requested #565
  • Jan 06 2019 12:45
    ivantopo opened #565
  • Jan 06 2019 11:38

    ivantopo on master

    clean references to scheduled r… (compare)

  • Jan 05 2019 15:20
  • Jan 02 2019 17:02
    l15k4 starred kamon-io/Kamon
  • Dec 29 2018 08:03
    zbd0518 starred kamon-io/Kamon
  • Dec 27 2018 09:17
    ivantopo commented #563
Ivan Topolnjak
@ivantopo
yeap, look at the kamon.metric.tick-interval setting
Vasily Kirichenko
@vasily-kirichenko
@ivantopo it works! :) thank you.
Ivan Topolnjak
@ivantopo
:+1:
Sebastien Vermeille
@sebastienvermeille
Hi guys, I migrated to kamon 2.13 (java 13) and now it looks like gauge.set(value) no longer exists ? how should I migrate this please ?
Ivan Topolnjak
@ivantopo
hey @sebastienvermeille, that method is now called "update"
Sebastien Vermeille
@sebastienvermeille
@ivantopo thank you for your response but It looks like it do not exists
give me a few sec to check again
Ivan Topolnjak
@ivantopo
maybe you were using a Gauge without any tags
Sebastien Vermeille
@sebastienvermeille
GaugeMetric
Ivan Topolnjak
@ivantopo
in 1.x you could just do that, but from 2.x you need to call .withoutTags
so that you go from the GaugeMetric to an actual Gauge instrument
Sebastien Vermeille
@sebastienvermeille
I yes I did this:
Kamon.gauge("myname")
probably outdated way of doing
Ivan Topolnjak
@ivantopo
yeap
the equivalent of that is Kamon.gauge("myname").withoutTags()
there was an "implicit" withoutTags on the gauge metrics
Sebastien Vermeille
@sebastienvermeille
ah okay and then I return a Gauge directly?
Ivan Topolnjak
@ivantopo
I think so! the type returned from withoutTags is a Gauge
Sebastien Vermeille
@sebastienvermeille
final Inst item = Kamon.gauge(name).withoutTags();
I should work on the Inst object or on the gauge to update the value ? (sorry I am completely lost :/ )
because Metric.Gauge object .withoutTags().update(value) do not exists
  void setSystemCpuCoresAmount(final int amountOfLogicalCore) {
    getKamonGauge(SYSTEM_CPU_CORE_AMOUNTS_GAUGE).update(amountOfLogicalCore);
  }

  Gauge getKamonGauge(final String gaugeName) {
    return (Gauge) Kamon.gauge(gaugeName);
  }
ok solved it that way
Sebastien Vermeille
@sebastienvermeille
thank you very much @ivantopo
Sebastien Vermeille
@sebastienvermeille
erf ok wrong, this worked because of kamon system metrics was still in 2.12 :D
solved anyway :) now its a matter of using kamon-system-metrics 2.12 with kamon 2.13 :/
Ivan Topolnjak
@ivantopo
actually, we did publish the system metrics module for Scala 2.13
Sebastien Vermeille
@sebastienvermeille
@ivantopo yes its available but I was not sure as the readme looks not really saying it and SystemMetrics is not found
maybe its a good time for me to write a few mini PR for the doc :)
Ivan Topolnjak
@ivantopo
that would be awesome!
also
there is no need anymore for calling "SystemMetrics.startCollecting()"
Sebastien Vermeille
@sebastienvermeille
mmm okay
Ivan Topolnjak
@ivantopo
when you call Kamon.init() it will scan the classpath and start all modules
Sebastien Vermeille
@sebastienvermeille
but I think something has been dropped..
Kamon.addReporter(reporter);
Ivan Topolnjak
@ivantopo
Kamon.registerModule(...)
reporters are just a specialized type of module
Sebastien Vermeille
@sebastienvermeille
great :)
Sebastien Vermeille
@sebastienvermeille
and I guess stopCollecting() equivalent is stopModules() ? :)
Ivan Topolnjak
@ivantopo
yes, although before stopCollecting was specific to the system metrics module, Kamon.stopModules() stops all modules
Cheng Wei
@weicheng113

@ivantopo I have a simple experimenting custom reporter and with the following configuration.

    actors.track  {
      includes = ["*/user/myActor1"]
      excludes = ["*/system/**", "*/user/IO-**", "*kamon*"]
}

With the above configuration, I expected to receive the metrics for myActor1 only, but I received metrics for myActor2, myActor3 also, as you could see the attached sample metric message at the bottom. I then tried another configuration.

    actors.track  {
      includes = ["*/user/myActor1"]
      excludes = ["**"]
}

With the above configuration, I received no metrics for all actors, including myActor1. So I don't know what the rule of includes and excludes is.

Sample metric message for the first configuration.

{
  "startTime": "2019-09-12T05:53:58.004049901Z",
  "endTime": "2019-09-12T05:54:00.003782976Z",
  "agent": "kamon-2.x",
  "node": {
    "service": "cluster1",
    "instance": "cluster1@myMachine",
    "host": "myMachine"
  },
  "metrics": [
    {
      "name": "akka.actor.time-in-mailbox",
      "tags": {
        "system": "cluster1",
        "path": "cluster1/user/myActor1",
        "class": "package_name1.application.MyActor1",
        "dispatcher": "akka.actor.default-dispatcher"
      },
      "metricType": {
        "_class": "Histogram"
      },
      "value": {
        "min": 0,
        "max": 0,
        "count": 0,
        "unit": {
          "dimension": {
            "name": "time"
          },
          "magnitude": {
            "name": "nanoseconds",
            "scaleFactor": 1e-9
          }
        },
        "_class": "Distribution"
      }
    },
    {
      "name": "akka.actor.time-in-mailbox",
      "tags": {
        "system": "cluster1",
        "path": "cluster1/user/myActor2",
        "class": "package_name1.application.myActor2",
        "dispatcher": "akka.actor.default-dispatcher"
      },
      "metricType": {
        "_class": "Histogram"
      },
      "value": {
        "min": 0,
        "max": 0,
        "count": 0,
        "unit": {
          "dimension": {
            "name": "time"
          },
          "magnitude": {
            "name": "nanoseconds",
            "scaleFactor": 1e-9
          }
        },
        "_class": "Distribution"
      }
    },
    {
      "name": "akka.actor.time-in-mailbox",
      "tags": {
        "system": "cluster1",
        "path": "cluster1/user/myActor3",
        "class": "package_name1.application.myActor3",
        "dispatcher": "akka.actor.default-dispatcher"
      },
      "metricType": {
        "_class": "Histogram"
      },
      "value": {
        "min": 11072,
        "max": 11072,
        "count": 1,
        "unit": {
          "dimension": {
            "name": "time"
          },
          "magnitude": {
            "name": "nanoseconds",
            "scaleFactor": 1e-9
          }
        },
        "_class": "Distribution"
      }
    },
    {
      "name": "akka.group.processing-time",
      "tags": {
        "system": "cluster1",
        "group": "cluster1/user/ClusterSingletonManager/ClusterSingletonManager$Internal$OldestChangedBuffer"
      },
      "metricType": {
        "_class": "Histogram"
      },
      "value": {
        "min": 11136,
        "max": 111616,
        "count": 3,
        "unit": {
          "dimension": {
            "name": "time"
          },
          "magnitude": {
            "name": "nanoseconds",
            "scaleFactor": 1e-9
          }
        },
        "_class": "Distribution"
      }
    },
    {
      "name": "akka.group.processing-time",
      "tags": {
        "system": "cluster1",
        "group": "cluster1/user/ClusterSingletonManager"
      },
      "metricType": {
        "_class": "Histogram"
      },
      "value": {
        "min": 888832,
        "max": 974848,
        "count": 2,
        "unit": {
          "dimension": {
            "name": "time"
          },
          "magnitude": {
            "name": "nanoseconds",
            "scaleFactor": 1e-9
          }
        },
        "_class": "Distribution"
      }
    }
Dinesh Narayanan
@ndchandar

Hello,
I see this WARN in our logs (zipkin integration)

timestamp=15:29:17.842, level=WARN , logger=kamon.metric.Timer,  message=Failed to record value 
[1735721419412792] on [span.wait-time,{operation=my-processor,error=false}] because the value is 
outside of the configured range. The recorded value was adjusted to the highest trackable value 
[3600000000000]. You might need to change your dynamic range configuration for this metric,

What do you think i need to tune ? I am currently testing my kamon setup with sampler as always. This seems to happen i trace a future call

Ivan Topolnjak
@ivantopo
@weicheng113 regarding both of your examples above: I tried to reproduce the first example where you are supposed to be getting myActor1 only and it worked as expected.. have you checked whether maybe there is some configuration setting somewhere else in the configuration file that is including all actors? regarding the second example, it is expected that no actor will be matched because adding ** on the excludes will basically prevent everything from being monitored. The logic behind the filters is that for an input to be accepted it has to match at least one of the includes patters and none of the excludes patterns and that second part will not hold true for any input if the excludes has **
@ndchandar by default Kamon is tracking latency in histograms that can accept values of up to 1 hour in nanoseconds and that value that you are trying to store is a duration of 20+ days.. was it your real intent to store a latency that high?
Dinesh Narayanan
@ndchandar

@ivantopo I got that. The code under test is very simple

val sb = Kamon.spanBuilder("kinesis-processor").tag("partition-key", pkey)
trace(sb) {
    // my biz logic
}

What do you think i am missing

Ivan Topolnjak
@ivantopo
is it possible for you to shar ethe code of that trace function?
the metric mentioned in the warning is span.wait-time which is only generated when doing delayed Spans
that's a sort of "hidden" part of Kamon (not on purpose, just lack of documentation) so maybe there is some code doing something unexpected inside that trace function