Giter VIP home page Giter VIP logo

kamon.io's Introduction

Kamon.io

Sources for the Kamon website.

Development

For installing requirements, read the Jekyll Docs.

To start the local server, run:

$ bundle install
$ bundle exec jekyll serve --livereload
  • by default, local server will be listening on port 4000.
  • bundle exec restricts the Ruby environment to only use gems set in the project's Gemfile.

For updating gem versions, run:

$ bundle update

kamon.io's People

Contributors

antonijakamon avatar bgrgicak avatar danischroeter avatar dpsoft avatar everpeace avatar ivantopo avatar jozic avatar jrudolph avatar jsw avatar jtjeferreira avatar kennethleider avatar kunalherkal avatar learezic avatar mladens avatar moznion avatar philippus avatar raboof avatar richardimaoka avatar rodrigovedovato avatar sebastienvermeille avatar simunkaracic avatar stephenking avatar tapaswenipathak avatar teekirol avatar the-overengineer avatar thefourtheye avatar tolsi avatar wesrog avatar whiter4bbit avatar yanana avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

kamon.io's Issues

kamon-core_2.13 (2.5.11) has problems with the eclipse compiler

There are a few classes in kamon-core that quite confuse the compiler:

kamon.metric.Metric - a toplevel interface
kamon.metric.Metric$ - a toplevel class
kamon.metric.Metric$Settings - an inner interface of the kamon.metric.Metric
kamon.metric.Metric$Settings$ - an inner class of the kamon.metric.Metric
kamon.metric.Metric$Settings$ForDistributionInstrument - inner class of kamon.metric.Metric$Settings$
kamon.metric.Metric$Settings$ForDistributionInstrument$ - inner class of kamon.metric.Metric$Settings$
According to Java rules, kamon.metric.Metric$Settings$ForDistributionInstrument should be inner class of kamon.metric.Metric$Settings (no trailing $), because the $ is needed as the separator of name segments. Apparently the scala compiler, which produced these .class files, didn't pay attention to such rules. Given that the InnerClasses is the only manifestation of inner classes at the bytecode level, it is possible for a non-Java compiler to produce such .class files.

What's more: kamon.metric.Metric$Settings$ does not have a source name as seen in this bytecode attribute:

InnerClasses:
public static #8= #2 of #7; // =class kamon/metric/Metric$Settings$ of class kamon/metric/Metric
The source name would be the value of #8, i.e., the part before the =. I.e., we regard this type as an anonymous class.

In the Java world this means the type is anonymous, and hence no external reference to this type is possible. The compiler only has provisions for the source variant of anonymous classes, not for their binary counter part, as they are never relevant for compilation.

From this, type.isLocalType() is a sufficient guard for a cast to LocalTypeBinding - for legal .class files, i.e.

Still we find Metric$Settings$ just by looking at public API:

public static interface kamon.metric.Metric$Timer implements Metric<kamon.metric.Timer,kamon.metric.Metric$Settings$ForDistributionInstrument>
type argument kamon.metric.Metric$Settings$ForDistributionInstrument is inner class of kamon.metric.Metric$Settings$
booom
To a java compiler this tells: here is a public interface that depends on an anonymous type. This is nonsense.

The scala compiler will have to make up its mind whether or not kamon.metric.Metric$Settings$ is anonymous.

In JDT we could further protect this one cast, but we have a total of 64 callers of isLocalType(). Each would need to be thoroughly checked, which IMHO is way too much effort just to support non-Java .class files.

Instructions for Play production mode only didn't work for me

When following the instructions, after sbt disting and then running Play (in production mode), there were no metrics reported via the Prometheus exporter web page.

Actually there were a few kamon metrics, but not the hundreds of akka metrics I got otherwise when using the SBT Kanela Runner Plugin, in both dev and production mode.

I noticed in the dist-generated start script, there was no -javaagent: JVM argument provided, which I'm guessing is the problem since I understand you're using the aspectj agent to do the instrumentation. Seems the instructions are thus missing the needed step of adding this to build.sbt: javaAgents += "org.aspectj" % "aspectjweaver" % "1.9.6" % "runtime".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.