jHiccup is a non-intrusive instrumentation tool that logs and records platform "hiccups" - including the JVM stalls that often happen when Java applications are executed and/or any OS or hardware platform noise that may cause the running application to not be continuously runnable.

Overview

jHiccup

Build Status Java CI Gitter


Written by Gil Tene of Azul Systems, and released to the public domain as explained at http://creativecommons.org/publicdomain/zero/1.0


Version: 2.0.10

jHiccup is a non-intrusive instrumentation tool that logs and records platform "hiccups" - including the JVM stalls that often happen when Java applications are executed and/or any OS or hardware platform noise that may cause the running application to not be continuously runnable.

jHiccup can be executed in one of three main ways:

  1. It can be run as a Java agent (using: java -javaagent:jHiccup.jar)

  2. It can be injected into a running application (using: jHiccup -p <pid>)

  3. It can also be run using a convenient wrapper command for your existing Java application (using: jHiccup java myProg ...)


Example jHiccup plot

example plot


Using jHiccup as a Java agent:

jHiccup is most often used as a Java agent. This is useful for platforms and environments where a Java agent is simpler to integrate into launch scripts, or in environments where using the bash jHiccup wrapper script is not practical (e.g. Windows, and environments where java is not directly launched from the command line).

jHiccup.jar can be used as a Java agent using the following launch syntax:

% java -javaagent:jHiccup.jar MyProgram

or

% java -javaagent:jHiccup.jar="<options>" MyProgram.jar -a -b -c

You can find the available options for the Java agent mode by running:

% java -javaagent:jHiccup.jar="-h"

Here is a Java agent usage example with explicit parameters:

% java -javaagent:jHiccup.jar="-d 2000 -i 1000 -l hiccuplog -c" MyProgram.jar -a -b -c

This example will record hiccups experienced during the running of MyProgram.jar in log file hiccuplog, while at the same time recording the hiccups experienced by a control process running in a separate JVM in the log file c.hiccuplog. Measurement will start 2 seconds after startup (rather than immediately), and interval data will be recorded every 1 second (rather than the default 5 seconds).

Useful Java agent related notes:

Note 1: When used as a java agent, jHiccup will treat spaces, commas, and semicolons as delimiting characters ([ ,;]+). For example, the option string -d 0 -i 1000 is equivalent to the option string -d,0,-i,1000. This is useful for environments where placing space delimiters into quoted strings is difficult or confusing.

Note 2: I find that a common way people add jHiccup as a Java agent is by using the _JAVA_OPTIONS environment variable. This often allows one to add the jHiccup Java agent without significant launch script surgery. For example:

export _JAVA_OPTIONS='-javaagent:/path/to/jHiccup/target/jHiccup.jar="-d 20000 -i 1000"'

Reading and processing the jHiccup log with jHiccupLogProcessor:

jHiccup logs hiccup information in a histogram log (see HdrHistogram.org). This histogram log contains a full, high fidelity histogram of all collected results in each interval, in a highly compressed form (typically using only ~200-400 bytes per interval). However, other than the timestamp and maximum hiccup magnitude found in the given interval, the rest of the log line for each interval is not human readable (it is a base64 encoding of a compressed HdrHistogram).

To translate the jHiccup log file to a more human-readable form, the jHiccupLogProcessor utility is provided. In it's simplest form, this utility can be used as such

% jHiccupLogProcessor -i mylog.hlog -o mylog

Which will produce log files mylog and mylog.hgrm containing a human readable interval log (with selected percentiles in each interval), as well as a human readable histogram percentile distribution log.

jHiccupLogProcessor can also be used to produce log files for an arbitrary section of the jHiccup log, by using the optional -start and -end parameters.

See jHiccupLogProcessor -h for more details.


Hiccup Charts: Plotting jHiccup results

Since jHiccup uses HdrHistogram and produces HdrHistogram logs, various tools that plot and view histogram logs can be used to analyze jhiccup data. Some common tools include HistggramLogAnalyzer , HdrHistogramVisualizer
, and a javascript-based in-browser histogram log parser


Launching jHiccup by attaching it to existing, running application:

The jHiccup agent can be injected into a live, running Java application if the environment supports the java attach API (which is typically available in java environments running Java SE 6 or later).

$ jHiccup -p

NOTE: In order to attach to a running java application, the running application needs to have ${JAVA_HOME}/lib/tools.jar in it's classpath. While this is commonly the case already for many IDE and desktop environments, and for environments that involve or enable other attachable agents (such as profilers), you may find that it is not included in your application's classpath, and that it needs to be added if attaching jHiccup at runtime is needed (launching jHiccup as a Java agent per the below may be a good alternative).


Running jHiccup using the Wrapper Script form:

In the wrapper script form, all it takes is adding the word "jHiccup" in front of whatever the java invocation command line is.

For example, if your program were normally executed as:

java <Java args> MyProgram -a -b -c

The launch line would become:

jHiccup java <Java args> MyProgram -a -b -c

or, for a program launched with:

/usr/bin/java <Java args> -jar MyProgram.jar -a -b -c

The launch line would become:

jHiccup /usr/bin/java <Java args> -jar MyProgram.jar -a -b -c

or, to override the defaults by making the recording start delay 60 seconds and log to hlog, it would become:

jHiccup -d 60000 -l hlog /usr/bin/java <Java args> -jar MyProgram.jar -a -b -c

The jar file also includes a simple "Idle" class to facilitate sanity checks without an external program. Here is a simple sanity test example: jHiccup with a 4 sec delay on recording start, wrapping an Idle run that does nothing for 30 seconds and exits:

% jHiccup -d 4000 /usr/bin/java org.jhiccup.Idle -t 30000

[Run jHiccup -h, or see comment in jHiccup script for more details.]


Supported/Tested platforms:

The jHiccup command is expected to work and has been tested on the following platforms:

  • Various Linux flavors (Tested on RHEL/CentOS 5.x and 6.x)
  • Mac OS X (tested on Lion, 10.7)
  • Windows with a Cygwin environment installed (tested on Windows 7)
  • Solaris (tested on both SPARC and x86)

jHiccup.jar is expected to work as a java agent and has been tested on the following platforms:

  • Various Linux flavors (Tested on RHEL/CentOS 5.x and 6.x)
  • Mac OS X (tested on Lion, 10.7)
  • Windows standard command shell (tested on Windows 7)
  • Solaris (tested on both SPARC and x86)

If you use jHiccup on other operating systems and setups, please report back on your experience so that we can expand the list.


Using a control process to concurrently record baseline idle load hiccups:

It is often useful to compare the hiccup behavior experienced by a running application with a "control" hiccup level of an idle workload, running on the same system and at the same time as the observed application. To make such control measurement convenient, jHiccup supports a -c option that will launch a concurrently executing "control process" and will separately log hiccup information of an idle workload running on a separate jvm for the duration of the instrumented application run. When selected, the control process log file name will match those used for the launching application, followed with a .c.

For example:

% jHiccup -l mylog -c /usr/bin/java <Java args> -jar MyProgram.jar -a -b -c

Will produce log file mylog detailing the hiccup behavior during the execution of MyProgram.jar, as well as a log file c.mylog detailing the hiccup behavior of an idle workload running on a separate jvm at the same time.


Log file name recognizes and fills in %pid , %date , and %host terms

When a log file name is specified with the -l option, the terms %pid, %date, and %host will be filled in with the appropriate information. The default log file name setting is simply hiccup.%date.%pid.


Using jHiccup to process latency log files:

jHiccup's main HiccupMeter class supports a mode -f that will take latency input from a file instead of recording it. This is useful for producing jHiccup-style text and graphical output for recorded latency data collected by some other means.

When provided to the -f option, an input file is expected to contain two white-space delimited values per line (in either integer or real number format), representing a time stamp and a measured latency, both in millisecond units.

It's important to note that the default "expected interval between samples" resolution in jHiccup and HiccupMeter is 1 millisecond. When processing input files, it is imperative that an appropriate value be supplied to the -r option, and that this value correctly represent the expected interval between samples in the provided input file. HiccupMeter will use this parameter to determine whether additional, artificial values should be added to the histogram recording, between input samples that are farther apart in time than the expected interval specified to the -r option. This behavior corrects for "coordinated omission" situations (where long response times lead to "skipped" requests that would have typically correlated with "bad" response times). A "large" value (e.g. -r 100000) can easily be specified to avoid any correction of this situation.

Example:

% java -jar jHiccup.jar -i 1000 -f inputLatenies -l latencies.hlog

Using jHiccup to process pause logs from e.g. gc log files:

When run in the file injection mode (-f), jHiccup's main HiccupMeter class supports an optional "fill zeros" (-fz) mode. This mode is useful for processing input that represent pause events rather than latencies.

A common use case for this feature is producing hiccup logs from GC logs. GC logs will generally include pause information, which can be parsed out to a "pauses log". jHiccup can takes a "pauses logs" as input

When provided to the -f option, in conjunction with a -fz option, an input file is expected to contain two white-space delimited values per line (in either integer or real number format), representing a time stamp and a measured length of a pause, both in millisecond units.

Example (parsing gc log with +PrintGCTimeStamps):

% java ... -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCTimeStamps -Xloggc:gc.log ...

% awk -F": " '/Total time for which application threads were stopped/ {printf "%4.0f %4.3f\n", $1*1000.0, $3*1000.0;}' gc.log > gcPauses.log

% java -jar jHiccup.jar -i 1000 -f gcPauses.log -fz -l pauses.hlog

Example (with both +PrintGCTimeStamps and +PrintGCDateStamps):

% java ... -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:gc.log ...
 
% awk -F": " '/Total time for which application threads were stopped/ {printf "%4.0f %4.3f\n", $2*1000.0, $4*1000.0;}' gc.log > gcPauses.log

% java -jar jHiccup.jar -i 1000 -f gcPauses.log -fz -l pauses.hlog

Example: adding jHiccup to Tomcat runs:

In Tomcat's catalina.sh script, replace the following line:

exec "$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS

with:

exec "$JHICCUP_HOME/jHiccup" "$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS

Note: Use of HdrHistogram.

jHiccup depends on and makes systemic use of HdrHistogram to collected and report on the statistical distribution of hiccups. HdrHistogram sources and documentation can be found on GitHub, at http://hdrhistogram.github.io/HdrHistogram/


Building jHiccup:

jHiccup can be (re)built from source files using Maven:

% mvn package
Comments
  • Visualization/log processing tools outdated

    Visualization/log processing tools outdated

    Not any of the mentioned log processing tools were able to process my logs

    jHiccupLogProcessor, failed to parse logs produced with jhiccup 2.0.10:

    ./jHiccupLogProcessor -i ~/jhiccup.log -o jhiccup_processed.log
    Log file parsing error at line number 0: line appears to be malformed.
    

    Using this file (only gzipped to make attachment smaller):

    jhiccup.log.gz

    I also tried some other tools linked in the README, none of them worked either:

    https://github.com/ennerf/HdrHistogramVisualizer

    https://hdrhistogram.github.io/HdrHistogramJSDemo/logparser.html

    http://hdrhistogram.github.io/HdrHistogram/plotFiles.html

    Please provide an up-to-date list of tools that support the log format of 2.0.10 or instructions on how to convert logs to other formats.

    opened by rrva 4
  • Add option to create log in CSV

    Add option to create log in CSV

    This would lower the barrier of entry in parsing the data with scripts (i.e. plotting the series in R would be trivial). I'll look at implementing this myself if I can get some time - if so, you can expect a pull request coming your way.

    opened by scotte 3
  • Graphs from something other than a proprietary spreadsheet

    Graphs from something other than a proprietary spreadsheet

    This looks interesting, but graphs need to be created in something other than excel. How about adding a script using R (or some other open/platform-independent language/graphing library) to create the graphs?

    opened by scotte 3
  • The control process running in a separate JVM is not generated with JDK 9.0.4 and JDK 10

    The control process running in a separate JVM is not generated with JDK 9.0.4 and JDK 10

    Hi,

    We used the following parameters on Linux Centos 3.10.0-514.6.1.el7.x86_64:

    -javaagent:/opt/jHiccup-2.0.8/jHiccup.jar=-c,-d,60000,-i,1000,-l,../var/log/program-name.%date

    This example should record hiccups experienced during the running of MyProgram.jar in log file hiccuplog, while at the same time recording the hiccups experienced by a control process running in a separate JVM in the log file c.hiccuplog.

    The control process running in a separate JVM is not generated with JDK 9.0.4 and JDK 10.0.1.

    One single file is generated:

    #[Logged with jHiccup version 2.0.8] #[Histogram log format version 1.3] #[StartTime: 1524526871.595 (seconds since epoch), Mon Apr 23 23:41:11 UTC 2018] "StartTimestamp","Interval_Length","Interval_Max","Interval_Compressed_Histogram" 60.007,1.000,0.033,HISTFAAAACV42pNpmSzMwMDAzAABTBDKTwEo5GawYwGD/QeIyDM+JgBnDAWw 61.007,1.000,0.049,HISTFAAAACh42pNpmSzMwMDAygABTBDKT4GBgdnNYMcCBvsPEJF7PEwdTABzmgYy

    No issue with JDK 1.8_0_144: two files are generated.

    Thanks for your help.

    Regards,

    Annabelle

    opened by annabelleFougerolle 2
  • quick question about Interval_Max

    quick question about Interval_Max

    What is the unit or measure for Interval_Max in hiccup.*.hlog file ? "StartTimestamp","Interval_Length","Interval_Max","Interval_Compressed_Histogram"

    Sure looks like milliseconds, but can't find it documented anywhere.

    Thanks, --Erik

    opened by eostermueller 2
  • failing to connect to remote process

    failing to connect to remote process

    Trying to use jHiccup to monitor a Cassandra process but getting an error. Is there a way to attach? Or what are my alternative ways to monitor using jHiccup?

    $ locate tools.jar
    /usr/java/jdk1.7.0_76/lib/tools.jar $ ps jfax | egrep java 1 20400 20337 20337 ? -1 SLl 397 36362:24 /usr/java/jdk1.7.0_76/jre/bin/java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.3.0.jar ... $ sudo ./jHiccup -p 20400
    com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded

    opened by simonhf 2
  • Wrapper doesn't work as documented

    Wrapper doesn't work as documented

    The wrapper script example of:

    jHiccup /usr/bin/java -jar MyProgram.jar -a -b -c

    Doesn't work. The only way this works is if options are given to jHiccup.

    For example:

    $ jHiccup java -version Error: launched with the following args:

    Which was parsed as an error, indicated by the following exception: java.lang.Exception: Invalid args: [...]

    But this works:

    $ jHiccup -d 0 java -version

    Looks like a bug in the option parsing where options are not, in fact, optional.

    opened by scotte 2
  • correct jHiccup.jar lookup

    correct jHiccup.jar lookup

    When installed on macOS using Homebrew (brew install jhiccup), the path to jHiccup.jar couldn't be correctly resolved while using jHiccupLogProcessor. There're two reasons:

    1. the readlink_f function doesn't work because /usr/local/bin/jHiccupLogProcessor is a symbol link
    2. the file jHiccup.jar isn't in the same dir as that of jHiccupLogProcessor

    FYI, here's the gist for the source of the improved readlink_f: https://gist.github.com/ryenus/88bc355515ce657b2da1d8ce1c16e4f9

    opened by ryenus 1
  • Version matching in readme.md

    Version matching in readme.md

    Hello,

    it's not a big deal but the Readme.md mentions version 2.0.5 evnev in the 2.0.6 zip archive.

    So we don't know if there are big changes between 2.0.5 and 2.0.6.

    Kind regards, Thomas

    opened by tpeyrard 1
  • [Snyk] Upgrade org.hdrhistogram:HdrHistogram from 2.1.11 to 2.1.12

    [Snyk] Upgrade org.hdrhistogram:HdrHistogram from 2.1.11 to 2.1.12

    Snyk has created this PR to upgrade org.hdrhistogram:HdrHistogram from 2.1.11 to 2.1.12.

    :sparkles: Snyk has automatically assigned this pull request, [set who gets assigned](https://app.snyk.io/org/giltene/project/5177acf7-6ca3-48c3-9fe4-842788670055/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;upgrade-pr/settings/integration).
    

    :information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.


    • The recommended version is 1 version ahead of your current version.
    • The recommended version was released a year ago, on 2019-12-10.

    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.

    For more information:

    🧐 View latest project report

    👩‍💻 Set who automatically gets assigned

    🛠 Adjust upgrade PR settings

    🔕 Ignore this dependency or unsubscribe from future upgrade PRs

    opened by snyk-bot 0
  • Remove unused dependency

    Remove unused dependency

    Hello, I noticed that dependency org.heaputils:HeapUseWatcher was added to the pom in commit https://github.com/giltene/jHiccup/commit/3a6da976a9457dc61e34613f4f18c091a4b07360. However, I don't think this dependency is used in jHiccup.

    opened by cesarsotovalero 0
  • The control process running in a separate JVM is not generated if the folder name contains space

    The control process running in a separate JVM is not generated if the folder name contains space

    example : folder name : "new folder" files inside:

    • jHiccup.jar
    • orkTerminal2021.jar
    • run.bat file that contain the line : java -javaagent:jHiccup.jar="-c" -XX:+UseZGC -jar orkTerminal2021.jar

    tested on win 10 with jdk 15,16,17

    changing folder name to Newfolder solved. thanks, Or.

    opened by orkiman 0
  • Bump junit from 4.10 to 4.13.1

    Bump junit from 4.10 to 4.13.1

    Bumps junit from 4.10 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.

    JUnit 4.12

    Please refer to the release notes for details.

    JUnit 4.12 Beta 3

    Please refer to the release notes for details.

    JUnit 4.12 Beta 2

    No release notes provided.

    JUnit 4.12 Beta 1

    No release notes provided.

    JUnit 4.11

    No release notes provided.

    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
  • Help requested on how to achieve log file rotation with jHiccup logs?

    Help requested on how to achieve log file rotation with jHiccup logs?

    Hi Gil, Could you please guide me on the following

    • How can I achieve log file rotation after the log has reached a specific size limit. I understand we can add %pid_%host_%date to the log file name. But that I assume will not get rolled over, until the application restarts?
    • The intention is to run jHiccup on a application under load (high volume) running on a pod, that might have disk capacity restrictions. Could you please help me on what extra disk capacity is required assuming jHiccup runs inside such a high volume application.
    • Also , if you have a rough guideline on the size of the generated log, based on duration of run, it would be great. Thanks in Advance, Divya
    opened by DivyaVarmab 0
  • Migrate LGTM.com installation from OAuth to GitHub App

    Migrate LGTM.com installation from OAuth to GitHub App

    Hi There,

    This project is still using an old implementation of LGTM's automated code review, which has now been disabled. To continue using automated code review, and receive checks on your Pull Requests, please install the GitHub App on this repository.

    Thanks, The LGTM Team

    opened by LGTM-badger 0
  • How to use Jhiccup to measure total hiccups occurred during a period of time?

    How to use Jhiccup to measure total hiccups occurred during a period of time?

    I have a use case where I'd like to track how much time is spent in "hiccup" compared to a total time taken to serve a request. What's the recommended setup?

    opened by Tony-X 0
  • Improvement of sleep in loop

    Improvement of sleep in loop

    Hi, I found an interesting case in this project. It has “Thread.sleep()” in a “while(true)” loop. I found some discussion in Stackoverflow and other website. It can be refactored by using a executor service. https://ejrh.wordpress.com/2012/07/13/sleeping-in-loops-considered-harmful/ https://stackoverflow.com/questions/3535754/netbeans-java-new-hint-thread-sleep-called-in-loop or Maybe use CountDownLatch.await to automatically awake and shutdown.

    Detailed websites and lines:

    620 | https://github.com/giltene/jHiccup/blob/master/src/main/java/org/jhiccup/HiccupMeter.java

    Best regards

    opened by o0lwj0o 0
Owner
Gil Tene
I spend time in front of computer screens, and some behind them
Gil Tene
: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 Dec 30, 2022
APM, (Application Performance Management) tool for large-scale distributed systems.

Visit our official web site for more information and Latest updates on Pinpoint. Latest Release (2020/01/21) We're happy to announce the release of Pi

null 12.6k Jan 6, 2023
Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.

JITWatch Log analyser and visualiser for the HotSpot JIT compiler. Video introduction to JITWatch video Slides from my LJC lightning talk on JITWatch

AdoptOpenJDK 2.8k Jan 3, 2023
Utilities for latency measurement and reporting

LatencyUtils A latency stats tracking package The LatencyUtils package includes useful utilities for tracking latencies. Especially in common in-proce

null 440 Nov 14, 2022
By this package we can get sim info, call logs and sms logs.Also we can find for specific sim info and call logs as well.

sim_sms_call_info A new flutter plugin project. Getting Started This project is a starting point for a Flutter plug-in package, a specialized package

 Hasib Akon 3 Sep 17, 2022
Non intrusive log4j2 RCE vulnerability patch.

Log4j Patch Resolve the RCE vulnerability caused by JNDI lookup in log4j 2.0~2.14.1. It is licensed under the WTFPL 2.0 license, you can do anything w

Glavo 67 Dec 2, 2022
This mod gives the option to server admins to disable chat reporting, in a non-intrusive way

Simply No Report This mod gives the option to server admins to disable chat reporting, in a non-intrusive way. It is disabled by default to let everyo

Amber Bertucci 17 Aug 20, 2022
Prometheus instrumentation library for JVM applications

Prometheus JVM Client It supports Java, Clojure, Scala, JRuby, and anything else that runs on the JVM. Table of Contents Using Assets Javadocs Instrum

Prometheus 1.9k Jan 5, 2023
A project to cause (controlled) destruction on your jvm application

Perses Cause (controlled) destruction to your jvm application Perses (Ancient Greek: Πέρσης) was the Titan god of destruction. His name is derived fro

Nikolaos Kanakis 62 Dec 27, 2022
A command-line tool to generate different types of noise as images.

noisegen A command-line tool to generate different types of noise as images. Usage Run one of the releases, either the JAR using java -jar noisegen-0.

Tommy Ettinger 6 Jul 21, 2022
LINE 4.1k Jan 2, 2023
LINE 4.1k Dec 31, 2022
vʌvr (formerly called Javaslang) is a non-commercial, non-profit object-functional library that runs with Java 8+. It aims to reduce the lines of code and increase code quality.

Vavr is an object-functional language extension to Java 8, which aims to reduce the lines of code and increase code quality. It provides persistent co

vavr 5.1k Jan 3, 2023
Bootique is a minimally opinionated platform for modern runnable Java apps.

Bootique is a minimally opinionated java launcher and integration technology. It is intended for building container-less runnable Java applications. W

Bootique Project 1.4k Dec 29, 2022
ThirdEye is an integrated tool for realtime monitoring of time series and interactive root-cause analysis.

ThirdEye is an integrated tool for realtime monitoring of time series and interactive root-cause analysis. It enables anyone inside an organization to collaborate on effective identification and analysis of deviations in business and system metrics. ThirdEye supports the entire workflow from anomaly detection, over root-cause analysis, to issue resolution and post-mortem reporting.

null 87 Oct 17, 2022
esProc SPL is a scripting language for data processing, with well-designed rich library functions and powerful syntax, which can be executed in a Java program through JDBC interface and computing independently.

esProc esProc is the unique name for esProc SPL package. esProc SPL is an open-source programming language for data processing, which can perform comp

null 990 Dec 27, 2022
🎉Ultimate test automation for testing any application on any platform

boyka-java Ultimate test automation for testing any application on any platform boyka-java Setup Write conventional commits 1.

Wasiq Bhamla 52 Dec 30, 2022