Automon combines the power of AOP (AspectJ) with monitoring or logging tools you already use to declaratively monitor your Java code, the JDK, and 3rd party libraries.

Overview

Automon

Automon combines the power of AOP (AspectJ) with monitoring tools or logging tools that you already use to declaratively monitor the following:

  • Your Java code,
  • The JDK,
  • Any jars used by your application.

Some monitoring tools Automon currently works with are: JAMon, JavaSimon, Yammer Metrics, StatsD, Micrometer. Here are the current implementations. If automon doesn't support your tool of intrest it can usually be supported by adding a simple class.

Note: Micrometer serves as a proxy for other monitoring/metering APIs and so through it automon does too. As of 5/2019 the list of tools Micrometer can proxy includes: AppOptics, Atlas, Datadog, Dynatrace, Elastic, Ganglia, Graphite, Humio, Influx, JMX, KairosDB, New Relic, Prometheus, SignalFx, StatsD, Wavefront.

Automon is typically used to track method invocation time, and exception counts. It is very easy to set-up and you should be able to start monitoring your code within minutes. The data will be stored and displayed using the monitoring tool of your choice. The following image shows the type of data Automon collects (The example below displays the data in JAMon, however the data can be displayed in whatever monitoring tool/api you choose. For example here is same data displayed in grahphite/StatsD).

Automon method and exception metrics displayed in JAMon

The following is a sample command that will monitor your program with Automon (in this case using JAMon):

  • java -Dorg.aspectj.weaver.loadtime.configuration=file:aop.xml -javaagent:aspectjweaver.jar -classpath automon-{version}.jar:myapplication.jar:jamon-2.81.jar com.mypackage.MyClass
  • Running with Micrometer, Yammer Metrics, StatsD, JavaSimon etc. you would simply use their respective jars instead of the JAMon jar
  • aop.xml (AspectJ file) is where you define what parts of your program you want monitored (through 'pointcuts'). It is often quite simple.
  • aspectjweaver.jar is required for AspectJ to monitor the code.

See 'Getting Started' below and examples for instructions on how to run Automon with CodaHale/Yammer Metrics, JavaSimon, NewRelic, StatsD, Tomcat and Jetty.

It is important to note that Automon is complimentary to monitoring and logging tools. Automon performs no monitoring on its own. It serves as a bridge between AspectJ (AspectJ defines 'what to monitor') and monitoring and logging tools (which define 'how to monitor'). You can also easily provide your own monitoring tool by implementing the simple OpenMon interface.

The following diagram shows an AspectJ pointcut that will monitor all methods (any return type, any number of arguments) in the 'com.mycompany' package as well as its subpackages (..) using your monitoring tool of choice. Automon

Automon requires jdk 1.5 or higher.

And finally, Automon can be dynamically enabled/disabled via the Automon MXBean (JMX).

AspectJ Weaving

AspectJ 'weaves' Automon monitoring code into your classes. This can be done...

  • at runtime with the Load Time Weaver (LTW)
  • at build time with the Build Time Weaver (BTW).

Both approaches replace the original class files with ones that have monitoring added to them. Regardless of whether LTW, or BTW is used the generated class files are identical. LTW is more flexible as it lets you use the powerful AspectJ pointcut language at runtime to specify what classes you want to monitor. It also lets you monitor jdk classes and 3rd party library classes that you don't own such as java.net, jdbc, hadoop, spark etc. BTW only let's you monitor your own source code.

Here is a short video that shows how to monitor your code using Automon with LTW: Automon demo

Getting Started

The quickest way to get started with Automon is to download this distribution, and go to the examples directory and run the sample programs (*.sh). There are more directions on running the examples in the 'examples' directories README file.

If you are using Spring the following maven module shows how to monitor Spring beans with Automon. In particular look at the Spring applicationContext.xml file to see how to specify which Spring beans to monitor.

Automon does not require Spring though. Running a non-Spring program with Automon is easy too. You simply...

  • Put automon-{version}.jar in your classpath,
  • And make either aspectjweaver.jar (LTW), or aspectjrt.jar (BTW) available.

The examples directory shows how to invoke your programs using both LTW, and BTW.

Load Time Weaving (LTW) also involves providing an ajc-aop.xml config file. Review the config files for more information on them. The following maven projects generate plain (unwoven) java jars. Each of them has a *.sh script in the examples directory that lets you run the the java code with LTW.

  • helloworld_unwoven_jamon - A simple program monitored with Jamon. If you pass a command line argument to run the program in a loop the program will run long enough that you can look at the Jamon metrics MBeans in the Jconsole.
  • unwoven_jdk - A simple program that when used with LTW will monitor Java IO, Http requests, and JDBC calls.
  • webapp_unwoven - A web application (war) that can be installed in a web container like Tomcat or Jetty. It monitors calls to the jdk (jdbc, io, and http requests) and custom classes. See README.md for more information.

Build Time Weaving (BTW) - And finally if you want to use Build Time Weaving in your maven build process refer to these BTW sample projects (In the examples I use 'woven' and BTW synonymously):

  • helloworld_woven - A simple project that has a dependency on Automon and a simple jar that contains a HelloWorld application. The output of this project is a jar that contains AspectJ BTW woven code.
  • spring_woven - This project shows how you can weave a Spring project at build time.
  • Another example using Spring woven and Apache Camel. See more details in the comments section for camel_experiment6_soap. This example let's you instrument/monitor any class that you own and not just Spring beans.

The examples directory has scripts (*.sh) to run these programs.

An interview that covers Automon can be found here.

Maven

Incorporate Automon into your maven project by adding the following dependency (using the most current version).

      <dependency>
          <groupId>org.automon</groupId>
          <artifactId>automon</artifactId>
          <version>1.0.3</version>
      </dependency>

Automon Source Code

The code that generates the automon-{version}.jar file is contained in this directory.

Support

And finally, if you need support contact us at Issues or email us at [email protected].

Thanks, and happy monitoring!

Steve

Comments
  • BeanCreationException: Error creating bean

    BeanCreationException: Error creating bean

    Hi,

    I'm having an issue with starting my service with automon. I'm not that into aspectj, so I hope you could give me a hint whether my setup is just wrong or something could be improved in automon project. I get:

    org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'serviceApplicationConfiguration': 
    BeanPostProcessor before instantiation of bean failed; nested exception is java.lang.IllegalStateException: 
    Expecting to find 2 arguments to bind by name in advice, but actually found 1 arguments.
    

    in

    org.springframework.aop.aspectj.AbstractAspectJAdvice#calculateArgumentBindings
    

    AbstractAspectJAdvice has only one String in argumentNames when trying to bind Object around() throws Throwable : _monitor() from AutomonAspect.aj. He recognizes only the first argument in runtime (_monitor). I'm using spring 3.2.4.RELEASE (which I tested with your spring-woven example - works fine). Instead of using xml based bean definition, I use org.springframework.context.annotation.Beans and pointcuts and aspects.

    My ServiceApplicationConfiguration which is annotated with org.springframework.context.annotation.Configuration and EnableAspectJAutoProxy(proxyTargetClass = true) should load my Aspect which extends your SpringBase and defines pointcuts same as you do in spring-woven example. If you have any idea what I'm doing wrong, I'd appreciate the hints.

    Cheers, Nikola

    P.S. Perhaps it's unclear. I'd see to get some example in my fork with minimal code representing the issue soon.

    opened by maricn 6
  • Bump spring-core from 5.1.6.RELEASE to 5.3.19 in /spring_woven

    Bump spring-core from 5.1.6.RELEASE to 5.3.19 in /spring_woven

    Bumps spring-core from 5.1.6.RELEASE to 5.3.19.

    Release notes

    Sourced from spring-core's releases.

    v5.3.19

    :star: New Features

    • Remove DNS lookups during websocket connection initiation #28280
    • Add application/graphql+json Media type and MIME type constants #28271
    • Fix debug log for no matching acceptableTypes #28116
    • Provide support for post-processing a LocalValidatorFactoryBean's validator Configuration without requiring sub-classing #27956

    :lady_beetle: Bug Fixes

    • Improve documentation and matching algorithm in data binders #28333
    • NotWritablePropertyException when attempting to declaratively configure ClassLoader properties #28269
    • BeanPropertyRowMapper's support for direct column name matches is missing in DataClassRowMapper #28243
    • AbstractListenerReadPublisher does not call ServletOutputStream::isReady() when reading chunked data across network packets #28241
    • ResponseEntity objects are accumulated in ConcurrentReferenceHashMap #28232
    • Lambda proxy generation fix causes BeanNotOfRequiredTypeException #28209
    • CodeGenerationException thrown when using AnnotationMBeanExporter on JDK 17 #28138

    :hammer: Dependency Upgrades

    • Upgrade to Reactor 2020.0.18 #28329

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    v5.3.18

    :star: New Features

    • Restrict access to property paths on Class references #28261
    • Introduce cancel(boolean mayInterruptIfRunning) in ScheduledTask #28233

    :lady_beetle: Bug Fixes

    • Move off deprecated API in SessionTransactionData #28234

    :notebook_with_decorative_cover: Documentation

    • Introduce warnings in documentation of SerializationUtils #28246
    • Update copyright date in reference manual #28237
    • @Transactional test does not execute all JPA lifecycle callback methods #28228

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    ... (truncated)

    Commits
    • cedb587 Release v5.3.19
    • a7cf19c Improve documentation and matching algorithm in data binders
    • 0cf7f7b Polishing
    • 949c3d4 Align plain accessor check
    • 3b4ae7b TomcatHttpHandlerAdapter continues after 0 bytes
    • 8b39698 Upgrade to Reactor 2020.0.18
    • 6fad00e Ensure dynamic proxy with AOP introduction includes lambda interfaces
    • 5f6d8df Introduce isLambdaClass() as a public utility in ClassUtils
    • 35de7e1 Introduce initializer callback for Bean Validation Configuration
    • 10e979e Polishing
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 3
  • Bump spring-core from 5.1.6.RELEASE to 5.3.18 in /spring_woven

    Bump spring-core from 5.1.6.RELEASE to 5.3.18 in /spring_woven

    Bumps spring-core from 5.1.6.RELEASE to 5.3.18.

    Release notes

    Sourced from spring-core's releases.

    v5.3.18

    :star: New Features

    • Restrict access to property paths on Class references #28261
    • Introduce cancel(boolean mayInterruptIfRunning) in ScheduledTask #28233

    :lady_beetle: Bug Fixes

    • Move off deprecated API in SessionTransactionData #28234

    :notebook_with_decorative_cover: Documentation

    • Introduce warnings in documentation of SerializationUtils #28246
    • Update copyright date in reference manual #28237
    • @Transactional test does not execute all JPA lifecycle callback methods #28228

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    v5.3.17

    :star: New Features

    • Using DataClassRowMapper causes "No property found for column" debug messages in logs #28179
    • Improve diagnostics in SpEL for large array creation #28145
    • Support custom HTTP status in client-side REST testing support #28105
    • AsyncRestTemplate logging too verbose #28049

    :lady_beetle: Bug Fixes

    • java.lang.NoClassDefFoundError: org/springframework/cglib/beans/BeanMapEmitter #28110
    • CronExpression fails to calculate properly next execution when running on the day of winter daylight saving time #28095
    • Private init/destroy method may be invoked twice #28083
    • MappingJacksonValue and Jackson2CodecSupport#registerObjectMappersForType do not work together #28045
    • SpEL fails to recover from error during MIXED mode compilation #28043
    • When returning a ResponseEntity with a Flux while the function is suspended, it fails to encode the body #27809

    :notebook_with_decorative_cover: Documentation

    • Improve documentation for @EnabledIf and @DisabledIf test support #28157
    • Links to Spring Security are broken in the reference guide #28135
    • Document that transaction rollback rules may result in unintentional matches #28125
    • Improve documentation for TestContext events #27757
    • Clarify behavior for generics support in BeanUtils.copyProperties #27259

    :hammer: Dependency Upgrades

    ... (truncated)

    Commits
    • 707a24c Release v5.3.18
    • 002546b Refine PropertyDescriptor filtering
    • 1627f57 Disable flaky integration tests for now
    • 3811cd4 Introduce warnings in documentation of SerializationUtils
    • d927e37 Add "Testing ORM entity lifecycle callbacks" note to Testing chapter
    • 1d302bf Introduce tests for gh-28228
    • 4b150fd Update copyright date in reference manual
    • 3a6016d Merge pull request #28238 from izeye
    • 135506f Update copyright year of EvaluationTests
    • cb36ca3 Upgrade to ASM master
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump spring-beans from 5.1.6.RELEASE to 5.3.18 in /spring_woven

    Bump spring-beans from 5.1.6.RELEASE to 5.3.18 in /spring_woven

    Bumps spring-beans from 5.1.6.RELEASE to 5.3.18.

    Release notes

    Sourced from spring-beans's releases.

    v5.3.18

    :star: New Features

    • Restrict access to property paths on Class references #28261
    • Introduce cancel(boolean mayInterruptIfRunning) in ScheduledTask #28233

    :lady_beetle: Bug Fixes

    • Move off deprecated API in SessionTransactionData #28234

    :notebook_with_decorative_cover: Documentation

    • Introduce warnings in documentation of SerializationUtils #28246
    • Update copyright date in reference manual #28237
    • @Transactional test does not execute all JPA lifecycle callback methods #28228

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    v5.3.17

    :star: New Features

    • Using DataClassRowMapper causes "No property found for column" debug messages in logs #28179
    • Improve diagnostics in SpEL for large array creation #28145
    • Support custom HTTP status in client-side REST testing support #28105
    • AsyncRestTemplate logging too verbose #28049

    :lady_beetle: Bug Fixes

    • java.lang.NoClassDefFoundError: org/springframework/cglib/beans/BeanMapEmitter #28110
    • CronExpression fails to calculate properly next execution when running on the day of winter daylight saving time #28095
    • Private init/destroy method may be invoked twice #28083
    • MappingJacksonValue and Jackson2CodecSupport#registerObjectMappersForType do not work together #28045
    • SpEL fails to recover from error during MIXED mode compilation #28043
    • When returning a ResponseEntity with a Flux while the function is suspended, it fails to encode the body #27809

    :notebook_with_decorative_cover: Documentation

    • Improve documentation for @EnabledIf and @DisabledIf test support #28157
    • Links to Spring Security are broken in the reference guide #28135
    • Document that transaction rollback rules may result in unintentional matches #28125
    • Improve documentation for TestContext events #27757
    • Clarify behavior for generics support in BeanUtils.copyProperties #27259

    :hammer: Dependency Upgrades

    ... (truncated)

    Commits
    • 707a24c Release v5.3.18
    • 002546b Refine PropertyDescriptor filtering
    • 1627f57 Disable flaky integration tests for now
    • 3811cd4 Introduce warnings in documentation of SerializationUtils
    • d927e37 Add "Testing ORM entity lifecycle callbacks" note to Testing chapter
    • 1d302bf Introduce tests for gh-28228
    • 4b150fd Update copyright date in reference manual
    • 3a6016d Merge pull request #28238 from izeye
    • 135506f Update copyright year of EvaluationTests
    • cb36ca3 Upgrade to ASM master
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump junit from 4.12 to 4.13.1 in /automon

    Bump junit from 4.12 to 4.13.1 in /automon

    Bumps junit from 4.12 to 4.13.1.

    Release notes

    Sourced from junit's releases.

    JUnit 4.13.1

    Please refer to the release notes for details.

    JUnit 4.13

    Please refer to the release notes for details.

    JUnit 4.13 RC 2

    Please refer to the release notes for details.

    JUnit 4.13 RC 1

    Please refer to the release notes for details.

    JUnit 4.13 Beta 3

    Please refer to the release notes for details.

    JUnit 4.13 Beta 2

    Please refer to the release notes for details.

    JUnit 4.13 Beta 1

    Please refer to the release notes for details.

    Commits
    • 1b683f4 [maven-release-plugin] prepare release r4.13.1
    • ce6ce3a Draft 4.13.1 release notes
    • c29dd82 Change version to 4.13.1-SNAPSHOT
    • 1d17486 Add a link to assertThrows in exception testing
    • 543905d Use separate line for annotation in Javadoc
    • 510e906 Add sub headlines to class Javadoc
    • 610155b Merge pull request from GHSA-269g-pwp5-87pp
    • b6cfd1e Explicitly wrap float parameter for consistency (#1671)
    • a5d205c Fix GitHub link in FAQ (#1672)
    • 3a5c6b4 Deprecated since jdk9 replacing constructor instance of Double and Float (#1660)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump spring-core from 5.3.19 to 5.3.20 in /spring_woven

    Bump spring-core from 5.3.19 to 5.3.20 in /spring_woven

    Bumps spring-core from 5.3.19 to 5.3.20.

    Release notes

    Sourced from spring-core's releases.

    v5.3.20

    :star: New Features

    • Refine CachedIntrospectionResults property introspection #28445
    • Improve tests and Javadoc on binding to a property of type javax.servlet.Part #27830
    • WritableResource doesn't have parity with Resource in @Value etc. [SPR-10656] #15284

    :lady_beetle: Bug Fixes

    • Ignore invalid STOMP frame #28443
    • @ModelAttribute name attribute is not supported in WebFlux #28423
    • Fix BindingResult error when ModelAttribute has custom name in WebFlux #28422
    • Request body deserialization failures are not captured by exception handlers in WebFlux #28155

    :notebook_with_decorative_cover: Documentation

    • Remove Log4J initialization from package-info.java in spring-web #28420
    • Remove Log4J configurer from package-info.java in spring-core #28411
    • Fix github issue reference in RequestMappingHandlerMapping #28372
    • Add Javadoc since tags for GraphQL constants #28369
    • Fix method reference in Kotlin documentation #28340

    :hammer: Dependency Upgrades

    • Upgrade to ASM 9.3 #28390
    • Upgrade to Reactor 2020.0.19 #28437

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    Commits
    • e0f56e7 Release v5.3.20
    • 83186b6 Refine CachedIntrospectionResults property introspection
    • dc2947c Ignore invalid connect frame
    • e4ec376 Disabling Undertow server in CoroutinesIntegrationTests
    • c81e11d Polishing
    • de6180b Upgrade to Reactor 2020.0.19
    • 1c10cdd Update copyright dates
    • 941b92c Make inner classes static when feasible
    • e26d883 Stop referring to features as Java 6/7 features where unnecessary
    • a1c7380 Add test for value attribute in @​ModelAttribute in WebFlux
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v1.0.3)
  • v1.0.3(Apr 26, 2019)

    And through micrometer, you can now monitor AppOptics, Atlas, Datadog, Dynatrace, Elastic, Ganglia, Graphite, Humio, Influx, JMX, KairosDB, New Relic, Prometheus, SignalFx, StatsD, Wavefront.

    Spring uses Micrometer as its monitoring tool.

    https://micrometer.io/docs

    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Jul 9, 2016)

  • v1.0.0(Jul 9, 2016)

    aspectj pointcuts and swappable monitoring implementations for monitoring java classes, methods and exceptions. You can monitor your own classes, 3rd party classes, and jdk classes.

    Source code(tar.gz)
    Source code(zip)
Owner
Steve Souza
Steve Souza
A lightweight platform monitoring tool for Java VMs

Sysmon - lightweight platform monitoring for Java VMs Sysmon is a lightweight platform monitoring tool. It's designed to gather performance data (CPU,

Palantir Technologies 152 Jan 26, 2022
JavaMelody : monitoring of JavaEE applications

JavaMelody The goal of JavaMelody is to monitor Java or Java EE applications in QA and production environments. See the Project Home, Screenshots, Use

null 2.7k Dec 28, 2022
Sematext Monitoring Agent

Sematext App Agent This repository contains the source code for Sematext App Agent. Sematext App Agent can be used to collect application metrics from

Sematext Group, Inc. 20 Sep 3, 2022
Sentry is cross-platform application monitoring, with a focus on error reporting.

Users and logs provide clues. Sentry provides answers. What's Sentry? Sentry is a developer-first error tracking and performance monitoring platform t

Sentry 33k Jan 9, 2023
:chart_with_upwards_trend: Capturing JVM- and application-level metrics. So you know what's going on.

Metrics ?? Capturing JVM- and application-level metrics. So you know what's going on. For more information, please see the documentation Versions Vers

Dropwizard 7.7k Jan 1, 2023
inspectIT is the leading Open Source APM (Application Performance Management) tool for analyzing your Java (EE) applications.

?? inspectIT OpenCensus Edition has been released ?? The inspectIT OCE project provides an improved Java agent newly developed from scratch focusing o

inspectIT 531 Dec 13, 2022
Get inside your JVM

nudge4j · nudge4j is a tiny piece of code to help great developers understand code better, debug less, have more fun. Overview With nudge4j you can: c

lorenzo puccetti 151 Nov 4, 2022
Distributed Tracing, Metrics and Context Propagation for application running on the JVM

Kamon Kamon is a set of tools for instrumenting applications running on the JVM. The best way to get started is to go to our official Get Started Page

Kamon Open Source Project 1.4k Dec 25, 2022
Jaeger Bindings for Java OpenTracing API

Jaeger's Tracing Instrumentation Library for Java Intended to be used with Jaeger backend, but can also be configured to send traces to Zipkin. Implem

Jaeger - Distributed Tracing Platform 485 Dec 5, 2022
Netflix, Inc. 23.1k Jan 5, 2023
Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Gabriele Rizzo 865 Jan 2, 2023
Echopraxia - Java Logging API with clean and simple structured logging and conditional & contextual features. Logback implementation based on logstash-logback-encoder.

Echopraxia Echopraxia is a Java logging API that and is designed around structured logging, rich context, and conditional logging. There is a Logback-

Terse Systems 43 Nov 30, 2022
cglib - Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access.

cglib Byte Code Generation Library is high level API to generate and transform JAVA byte code. It is used by AOP, testing, data access frameworks to g

Code Generation Library 4.5k Jan 8, 2023
A program that presses a key when you move your mouse to another monitor.

FollowMouse A program that presses a key when you move your mouse to another monitor. (useful for automatically changing scenes while livestreaming) F

Brime Live 7 Jul 31, 2022
Eclipse Foundation 3k Dec 31, 2022
The ByteSkript development kit, including resources for third-party libraries that are not contained within the standard runtime.

ByteSkript Development Kit Todo. The development kit is a set of advanced resources available for library creators. These are not available within the

null 1 Jan 8, 2022