GitHunt
DA

daniel-beck/monitoring-plugin

Jenkins monitoring plugin

Logo Monitoring plugin

Jenkins Plugin
Jenkins Plugin Installs
Build Status
JIRA

Monitoring plugin: Monitoring of the performance of Jenkins itself with JavaMelody.

Open the report (or http://yourhost/monitoring) after installation.

Author : Emeric Vernat (evernat at free.fr)

License ASL

Features summarized

  • Charts of memory, cpu, system load average, http response times by day, week, month, year or custom period
  • Statistics of http requests with mean response times, mean cpu times, mean response size by request and by day, week, month, year or custom period
  • Errors and logs
  • Current http requests
  • Threads
  • Heap histogram (instances and sizes by class)
  • Http sessions
  • Process list of OS
  • MBeans
  • Actions for GC, heap dump and invalidate session(s)
  • Report in html or pdf
  • In English, German, French, Portuguese, Italian, Czech, Ukrainian or Chinese
  • Jenkins security
  • For Jenkins slaves:
    • The report for the
      nodes is available at http://yourhost/monitoring/nodes
    • Charts aggregated for all nodes of memory, cpu, system load
      average, number of running builds, build queue length, build
      times by period
    • Detailed statistics of the build times and of the build steps by period
    • Threads, process list and MBeans for each nodes
    • Heap histogram aggregated for all nodes
  • For each individual node (each node in http://yourhost/computer),
    reports and actions are available from the "Monitoring" page in the
    contextual menu or in the detail of the node:
    • Threads, process list, MBeans of that node only
    • Heap histogram of that node
    • Actions for GC, heap dump
  • And more...

Graphics
Statistics
System infos and threads

Online help of JavaMelody

Some Monitoring scripts can be executed using the Jenkins Script Console.
The "Monitoring" plugin can be installed by point and click in the plugin manager of a Jenkins server, or it can be downloaded from http://mirrors.jenkins-ci.org/plugins/monitoring/.

You can contribute translations on this website.

Release notes

Since 1.85.0

See Releases

1.84.0

Canceled

1.83.0 (May 5, 2020)

  • improved: The javamelody parameter http-transform-pattern is already used in the plugin, in order to limit disk IO and disk space usage for the statistics and RRD graphs of http requests. If that's not enough, some RRD files of graphs for http requests will now be automatically deleted everyday at midnight to limit the disk space used by RRD files under 20 MB. You may configure that limit with the javamelody parameter max-rrd-disk-usage-mb (20 by default). And old statistics and graphs are automatically deleted like before. (553b323)
  • added: As an external API, dump of graphs values as XML or as TXT, for the choosen period or for all periods (d11e6a8). See doc.
  • added: Links to Last value, Dump XML, Dump TXT below the zoomed graphics (3967ea2).
  • added: if using Tomcat, display sources of Tomcat's classes from stack-traces like for the webapp's dependencies (9907e93).

1.82.0 (Mar 1, 2020)

  • improved: in the http sessions, identify the new MS Edge browser as Edg instead of Chrome (304819f).
  • optimized: when displaying the report, lazy load images in "Other charts" (cb18db5).
  • clarify that statistics in reports starts at midnight (in the server's time zone), for example "1 day since midnight" (#897).

1.81.0 (Dec 29, 2019)

  • fix JENKINS-60433: JEP-200 error on HsErrPid.
  • fix #871, thanks to Vicente Rossello Jaume: In the optional collect server, each current request already displayed once is not displayed anymore after refresh.
  • Look further to display the remote user in the current requests. And add sessionId attribute in the current requests for the External API. (PR 873, thanks to Eugene Kortov)
  • fix #884, CircularReferenceException in External API with JSON for current requests.
  • added: graph of Usable disk space next to Free disk space in "Other charts" (the usable disk space may be lower than the free disk space, #875).
  • added: if the monitoring of a Jenkins server is added in the optional collect server, the monitoring of Jenkins nodes including builds are automatically added at the same time (ee06c01).

1.80.0 (Nov 3, 2019)

  • After the JavaMelody real case 1, the real case 2 is an the investigation of a Java application with some very slow screens, with detailed explanation on monitoring metrics, statistics and found issues. And the real case 3 on the investigation of why dozen of users are working extra-hours and of other issues. #JavaMelodyRealCase
  • added a graph in /monitoring/nodes of the sum of waiting durations in seconds of the builds in the build queue, next to the graph of the build queue length
    (efa4d03)
  • moved documentation from wiki to github
  • added new Prometheus metrics in .../monitoring?format=prometheus: used non-heap memory, used buffered memory, used physical memory, used swap space, loaded classes count (a704562).

1.79.0 (Jul 26, 2019)

  • fix JENKINS-58419:
    No redirect after login in the CAS plugin since 1.78.0.
  • fix JENKINS-58388,
    broken 'report' link in Available and Updated tabs of plugin manager.
  • fix #843:
    when using Tomcat, Tomcat info is not available anymore since Tomcat 8.5.35 and Tomcat 9.0.13.
  • fix #847:
    When downloading more than 2GB, assertionError may occur.

1.78.0 (Jul 2, 2019)

  • Improved the rendering of the management links in the Administer page
    (JENKINS-57373).
    Note that the link on "Monitoring of memory, cpu, http requests and
    more in Jenkins master." goes to the "/monitoring" page.
    And the link on "You can also view the monitoring of builds, build
    queue and Jenkins nodes." goes to the "/monitoring/nodes" page.
  • added: display an alert at the top of the monitoring page when there
    is an exception while collecting data, in order to make easier to
    fix basic technical issues in javamelody
    (a7a8b26).
    For example, IOException: No space left on device.
  • fix to still flush the response when no content in
    FilterServletResponseWrapper.flushBuffer()
    (#836)
  • added: Czech translations
    (2d85a88,
    thanks to Lukáš Karabec)
  • improved: missing German translations
    (c19539b,
    thanks to Michael Dobrovnik)
  • To contribute in your own language, join the translation project at
    https://poeditor.com/join/project/QIaCp4bThS.

1.77.0 (Apr 21, 2019)

  • improved: better aggregation of http requests. The javamelody parameter used by default in this plugin is now
    -Djavamelody.http-transform-pattern=/\d+/|(?<=/static/|/adjuncts/|/bound/)[\w\-]+|(?<=/ws/|/user/|/testReport/|/javadoc/|/site/|/violations/file/|/cobertura/).+|(?<=/job/).+(?=/descriptorByName/).
  • added: Italian translations
    (ffc028f,
    thanks to Gianluca Maiorino)
  • added: Ukrainian translations
    (073bc6d,
    thanks to Yevgen Lasman)
  • To contribute in your own language, join the translation project at
    https://poeditor.com/join/project/QIaCp4bThS.
  • added: ability to upload heap dump files to AWS
    S3
    (PR
    810
    , thanks to
    Salah Qasem).
    To enable the upload of heap dump files to AWS
    S3
    :
    1. add a parameter heap-dump-s3-bucketname with the S3 bucket
      name, in system properties. For example
      -Djavamelody.heap-dump-s3-bucketname=mybucket in your
      jenkins.xml file. And restart.
    2. Download this aws-s3-library
      plugin

      and install it with the Advanced tab of the Plugin manager in
      Jenkins.
    3. You also need to provide AWS credentials and AWS region as AWS
      as environnement variables or system properties or credentials
      or config files or Amazon services, see
      doc
      (scroll down if the target page does not scroll to the right
      chapter).

1.76.0 (Jan 27, 2019)

  • You can now contribute translations for javamelody by using a
    dedicated website at POEditor. You may contribute some
    "untranslated" labels for German and Portuguese or you may
    contribute new translations for Spanish, Italian or your own
    language. Join the translation project at
    https://poeditor.com/join/project/QIaCp4bThS
  • fix for Prometheus integration: exclude metrics which have no sense
    (javamelody_log_duration_millis, javamelody_log_errors_count,
    javamelody_error_errors_count) and metrics for statistics which
    are not displayed in the reports
    (e1db7c5,
    c0f34a2)
  • fix #806 for
    Prometheus integration again: it was printed '<?>' instead of NaN,
    for 'lastValue' on Java 8 and before.

1.75.0 (Dec 9, 2018)

  • Fix #794 Compatibility with Google App Engine using Java 8.
  • Fix #779 When using JSVC to launch Tomcat, InternalError: errno: 13 error: Unable to open directory /proc/self/fd
  • Enhanced: added X-Frame-Options: SAMEORIGIN in the reports.
  • CSRF protection is automatically enabled in the plugin, if CSRF protection is enabled in Jenkins. (Note that a restart is needed if changed in Jenkins.)

Added the Offline viewer tool for some degraded cases:

  • If ever you don't have access to the online reports of javamelody on the running server,
  • or if you want to view the reports but the server is no longer running,
  • then the offline viewer may be for you. See doc

1.74.0 (Sep 4, 2018)

  • It is a recommended upgrade for security to fix a XML External Entity (XXE) processing vulnerability. CVE-ID is
    CVE-2018-15531.
    Thanks to mounsurf & huanying for reporting the vulnerability. But note that Jenkins uses the Woodstox parser so it is currently safe from this XXE vulnerability.
  • Fix warning logs about serializing anonymous classes (issue 768).
  • fix: do not require Log4J when sending metrics to InfluxDB
    or Datadog.
  • added: native calendar widget to choose dates for a custom period
    (84a1d63,
    with help from my colleague Fabien at KleeGroup)

1.73.1 (Jun 27, 2018)

  • Compatibility with JDK 9: -Djdk.attach.allowAttachSelf=true is no
    longer required to have heap histogram and fix the display of source
    for a JDK class.

1.73.0 (Jun 20, 2018)

  • Compatibility with JDK 9: fix heap dump and heap histogram, display
    again the graphs of cpu, opened files and physical memory. Note:
    to have the memory histogram in JDK 9 or later, add
    -Djdk.attach.allowAttachSelf=true in the java command line.

  • Fix "no token found" with Prometheus integration for a Windows
    server
    (e47b11b)

  • Enhancement: After generating a heap dump, zip it to reduce its size
    (98cb8bc)

  • Added: The mean number of allocated Kilobytes per request is now
    displayed in the stats, next to the mean cpu per request. It is the
    memory used in the heap per request and which will have to be
    cleaned by the Garbage Collector later. And when more memory is used
    per request, more cpu will be used by the GC. As an example, 1 Gb
    allocated in a request, without a good reason, is probably a
    problem.
    (33fe61d)

  • Added: when crash logs (hs_err_pid*.log files) are found, display
    them in the system actions
    (5ebb28e)

  • Added: in the zoomed charts, display of the 95th
    percentile
    line.
    It shows what would be the maximum on the period if 5% of the
    highest values (short peaks) were excluded
    (9f7acba)

  • Fix rare issue: ArithmeticException: / by zero in JRobin RRD files
    (JENKINS-51590).

  • Removed the prometheus-include-last-value javamelody parameter and
    replaced it by the includeLastValue http parameter
    (08aacb2,
    see
    doc).
    So, in the improbable case that you used
    prometheus-include-last-value for Prometheus integration, change
    your scrape_config to:

      params:
        format: ['prometheus']
        includeLastValue: ['true']
    

1.72.0 (Apr 4, 2018)

  • Fix #735: NPE when there are no executors.
  • Fix #737 for StatsD integration.
  • Fix #731:
    When using CloudWatch,
    Cloudwatch metric upload can't handle more then 20 items (with help from marcrelation).
  • Fix #668:
    RrdException: Invalid timestamps specified in some particular case when using custom period.

1.71.0 (Feb 5, 2018)

  • Added JEP-200 exclusions when using monitoring with slaves (PR
    #6 thanks to Jesse Glick)
  • Note that Jenkins core includes the monitoring classes in its
    whitelist for the monitoring plugin 1.68.0 or later, but Jenkins
    servers using the monitoring plugin 1.67 or older need to upgrade
    the plugin
    (JENKINS-50280).
  • Fix #700 for
    Prometheus integration (with help from Stefan Penndorf).
  • Fix #701 for
    Datadog integration (PR
    #702, thanks
    to bluegaspode).
  • Fix #718:
    NPE when displaying the webapp dependencies in some particular case.
  • improved: Warn in the reports if multiple instances use the same
    storage directory
    (#692)
  • improved: If the application-name parameter is defined, use it
    when publishing metrics to InfluxDB, Graphite, StatsD, CloudWatch or
    Datadog instead of the context path
    (#694)
  • added: When using the reports by
    mail
    ,
    a new javamelody parameter mail-subject-prefix can be used to
    configure the subject of the mail notification. For example, in a
    Tomcat context file:
    <Parameter name='javamelody.mail-subject-prefix' value='Production environment JavaMelody reports for {0}' override='false'/>
    (PR #710,
    thanks to vkpandey82)
  • added: In the External
    API
    , the
    url monitoring?part=lastValue&format=json now returns all the last
    values by names. (The url
    monitoring?part=lastValue&graph=usedMemory already returns the
    last value of a single graph by name.)

1.70.0 (Oct 29, 2017)

  • added: integration with Prometheus: Metrics are already
    displayed in the monitoring reports. You can also scrape the same
    metrics from Prometheus at the frequency
    you wish for advanced visualizations, if you have a Prometheus
    server installed (PR
    #682 & PR
    #684, thanks
    to slynn1324). See
    doc.
    Note : If Jenkins security is enabled, the system property
    -Djavamelody.plugin-authentication-disabled=true can be added to
    the Jenkins server in order to disable authentication of the
    monitoring page in the Monitoring plugin and to allow Prometheus to
    scrape metrics.
  • added integration with StatsD: Metrics are already displayed in
    the charts of the monitoring reports. As an extra, you can also
    publish the same metrics to
    StatsD, if you have a StatsD
    daemon installed. To enable sending the metrics, add a parameter
    statsd-address with hostname:port of the StatsD daemon, in system
    properties. For example
    -Djavamelody.statsd-address=11.22.33.44:8125 in your jenkins.xml
    file, see
    doc.
    (92aeffe)
  • fix #681:
    upgrade prototype.js, effects.js and slider.js

1.69.1 (Sep 20, 2017)

  • remove the slf4j-api dependency from the plugin to avoid potential
    conflicts with the same dependency in jenkins core.

1.69.0 (Aug 27, 2017)

  • In the Jenkins
    plugin
    , fix
    NPE when using
    CloudWatch
    or
    Graphite
    (3e2b872).
  • In the Jenkins
    plugin
    with
    FreeBSD, fix
    JENKINS-45963:
    if the collect fails for one slave, continue with the others
  • added integration with InfluxDB: Metrics are already displayed
    in the charts of the monitoring reports. Like integrations with
    Graphite
    and AWS
    CloudWatch
    ,
    you can also publish the same metrics to
    InfluxDB for
    advanced visualizations, if you have an InfluxDB server installed.
    The parameter is influxdb-url, see
    doc.
    (f7c8503)
  • added integration with Datadog: Like for InfluxDB, you can also
    publish the same metrics to Datadog
    for advanced visualizations. The parameter is datadog-api-key, see
    doc.
    (239aa4e)

1.68.0 (Jul 1, 2017)

  • improved (Brazilian) Portuguese translation (PR
    #642, thanks
    to Sandro Giacomozzi).
  • added a monitoring script to display stats of builds and build
    steps having a mean time greater than the severe threshold. See the
    script
    .
  • fix #638:
    When using scripts and
    alerts

    to monitor an application, ClassNotFoundException in Jenkins if the
    monitored webapp is using Ehcache or Quartz jobs.
  • Internal classes moved: Many internal classes, which were not public
    and all in the net.bull.javamelody package, are now moved to
    net.bull.javamelody.internal.* packages.
  • added: In the list of threads, add an action to send an interrupt
    signal to a thread. The thread can test
    Thread.currentThread().isInterrupted() to stop itself.
    (7977f2b)
  • added: PDF link in the threads page
    (b356132)
  • added integration with Graphite: Metrics are already displayed
    in the charts of the monitoring reports. As an extra, you can also
    publish the same metrics to Graphite for
    advanced visualizations, if you have a Graphite server installed.
    Metrics will be sent once per minute (default value of the
    resolution-seconds parameter) and Graphite will allow custom
    visualizations in itself or in Grafana. The
    names of metrics in Graphite are like
    javamelody.appContext.hostName.metricName, so you will be able to
    aggregate a metric using wildcards.
    To enable sending the metrics, add a parameter graphite-address
    with hostname:port of the Graphite server, in system properties. For
    example -Djavamelody.graphite-address=11.22.33.44:2003 in your
    jenkins.xml file.
    (ce94787)
  • added integration with AWS CloudWatch: Like for Graphite, you
    can also publish the same metrics to AWS
    CloudWatch
    for custom
    visualizations and mail or autoscaling alarms, if you have AWS EC2
    server instance(s) with detailed
    monitoring

    in AWS CloudWatch. Metrics will be sent once per minute (default
    value of the resolution-seconds parameter) and CloudWatch will allow
    custom visualizations and mail or auto-scaling
    alarms
    .
    The names of metrics in CloudWatch are like javamelody.metricName.
    Metrics also include application and hostname as dimensions, so
    you will be able to filter metrics based on those dimensions. Note
    that there is a
    pricing for CloudWatch
    metrics (it is supposed that about 25 custom metrics should mean
    about $10 per month per EC2 instance).
    (e65d605)
    To enable sending the metrics:
    1. add a parameter cloudwatch-namespace with the CloudWatch
      namespace, in system properties. For example
      -Djavamelody.cloudwatch-namespace=MyCompany/MyAppDomain in
      your jenkins.xml file (the namespaces starting with AWS/ are
      reserved for AWS products). And restart.
    2. Ensure that the latest version of the official aws-java-sdk-cloudwatch
      plugin

      is installed.
    3. You also need to provide AWS credentials and AWS region as AWS
      as environnement variables or system properties or credentials
      or config files or Amazon services, see
      doc.

1.67.0 (May 12, 2017)

1.66.0 (May 12, 2017)

  • fix #617:
    Charts of http/sql stats can not be viewed after restarting the
    application (with help from goldyliang).
  • added: Display the number of http sessions and sessions mean size
    before the list of sessions, when there are more than 20 (PR
    #629, thanks
    to Aleksandr Mashchenko).
  • improved: When displaying Java sources from stack-traces, locate
    more sources by reading Maven pom.xml of Jenkins and of the other
    dependencies.
  • added: Display webapp dependencies in a new page, accessed by a
    link in the System informations details, and include detailed name,
    website url, Maven
    groupId:artifactId:version and
    license of each dependency, based on Maven pom.xml files.
    (e7607c1)
  • added: The version of Jenkins is displayed at the top of the report
    and a drop-down list of versions next to "Customized" period allows
    to display the report for the period of each version deployed, to
    compare between them for example.
    (d61e65f,
    based on an idea by dhartford).
  • added: Real User Monitoring
    (RUM)
    . It
    allows to measure the experience from the end user perspective, by
    monitoring times in the browser for each html page until it is
    displayed and ready to be used
    (b85652a).
  • The Real User Monitoring works by injecting on the fly a
    Boomerang javascript at
    the end of html pages, just before the </body> end tag, which
    sends data back to the monitoring in your server. Then in the
    detailed monitoring report of http requests for html pages, times
    and percentages are displayed for Network, Server execution, DOM
    processing and Page rendering, to compare which ones contribute to a
    good or bad end user experience. The Real User Monitoring does not
    add a noticeable overhead on the server, but the javascript adds a
    simple http(s) call for each html page, which may add a small
    overhead on the client browser.
  • This Real User Monitoring is not enabled by default. To enable
    it, add the system property "-Djavamelody.rum-enabled=true" in your
    jenkins.xml file.

1.65.1 (Mar 13, 2017)

  • added: configuration to list Jenkins maven public repository next to
    ~/.m2/repository and Maven central, to be able to display Jenkins
    and plugins sources from stack-traces.

1.65.0 (Mar 12, 2017)

  • fix
    JENKINS-42112,
    HTTP user session is reported as "anonymous" when using anything but
    AbstractPasswordBasedSecurityRealm (like Google login plugin or
    Cloudbees Operations Center).
  • fix compatibility with Java 9. (PR
    #609 for issue
    #556, thanks
    to James Pether Sörling)
  • improved: make easier the selection of the stack-trace text in the
    tooltips of the threads list
    (736cf0e)
  • added: pdf report in the detail page of a request.
    (28e2474)
  • added: links to view java source from errors and threads
    stack-traces.
    (e5263bf)

 

  • Source from the JDK and source from artifacts built by Maven and
    available in Maven central can be viewed. So if your server uses a
    JRE and not a JDK, source from the JDK are not available. And note
    that many artifacts available in Maven central were not built by
    Maven, for example Tomcat libraries, so sources of those artifacts
    can't be located.
  • added: if the javamelody parameter
    -Djavamelody.jmx-expose-enabled=true is set (in the jenkins.xml
    file), then javamelody mbeans are available with aggregated
    statistics data about requests. The javamelody mbeans can be read
    with the MBeans screen in 'System actions' of the monitoring report
    (http://jenkinsserver:8080/monitoring?part=mbeans) or using JMX
    with the JConsole of the JDK. (PR
    #591 thanks to
    Alexey Pushkin)

 

1.64.0

1.63.0 (Jan 16, 2017)

  • added: check for updated version of javamelody. If a new version is
    available, a message is now displayed at the top of the report to
    notify about the new version. For that, javamelody pings the server
    javamelody.org. And to better understand javamelody users, anonymous
    data such as java version and OS is sent to that server at the same
    time. An example of the data sent is:
    uniqueId="3d117c04b914c78ddbaf14818c404c8e88c6e56f", serverInfo="jetty/9.2.z-SNAPSHOT", javamelodyVersion="1.63.0", applicationType="Jenkins", javaVersion="Java(TM) SE Runtime Environment, 1.8.0_111-b14", jvmVersion="Java HotSpot(TM) 64-Bit Server VM, 25.111-b14, mixed mode", maxMemory="1024", availableProcessors="4", os="Windows 7, Service Pack 1, amd64/64", databases="", countersUsed="http|error|log", parametersUsed="log", featuresUsed="pdf", locale="fr_FR", usersMean=1, collectorApplications=-1.
  • Usage stats based on the anonymous data will be publicly available
    at http://javamelody.org/usage/stats for applications using
    JavaMelody v1.63 or later (including Jenkins using the Monitoring
    plugin) and able to contact the server.
  • You may disable the update check with the javamelody parameter
    "update-check-disabled=true" in system properties. If you want to,
    add the system property "-Djavamelody.update-check-disabled=true" in
    the jenkins.xml file.
  • The online demo of javamelody is finally back. To see it, you can
    play a bit with this app (written by
    Benjamin Durand some years ago) to be sure to have some data in http
    and sql statistics, then open the monitoring
    page
    to explore the reports.

1.62.0 (Oct 1, 2016)

  • fix XSS (reported by Omar El Mandour)

1.61.0 (Sep 12, 2016)

  • fix XSS (reported by Dallas Kaman, Praetorian Group)

1.60.0 (Jun 14, 2016)

  • Fix XSS in graph page (PR
    555
    , thanks to
    Tim Helmstedt)
  • fix
    JENKINS-34794
    Jenkins sometimes doesn't start because of transient NPE (thanks to
    Félix Belzunce Arcos)
  • improved:
    JENKINS-34736
    Migrate to 2.9 parent pom (thanks to Armando Fernández)
  • added system property "csrf-protection-enabled" to enable protection
    against
    CSRF
    on actions such as run GC, invalidate sessions, kill thread by id
    ... (Not enabled by default since an attacker would need to know
    about javamelody in Jenkins and about its URLs and would need to
    force an administrator to access the monitoring and even in this
    case, the attacker certainly can't make Jenkins unvailable and can't
    steal data or anything.) To enable this protection, add the system
    property "-Djavamelody.csrf-protection-enabled=true" in the
    jenkins.xml file.
  • Limit error messages to 1000 characters and error stack-traces to
    50000 characters, to avoid high memory consumption when log messages
    are very long (PR
    550
    , thanks to
    Zdenek Henek)

1.59.0 (Feb 25, 2016)

  • fix username in the list of http sessions
    (d111126)
  • fix issue
    533
    :
    IllegalArgumentException during metrics update
    (JENKINS-33050)
  • fix issue
    532
    : do not
    flush a closed output stream.
  • improved: wrap very long http queries without whitespace, in order
    to fit into the screen and to avoid horizontal scrollbar
    (3a88a75)
  • added: display the client's browser and OS in the list of http
    sessions
    (6d89f42)
  • added: Support Log4J 2 since v2.4.1 like Log4J
    (068139d)
  • added: Show used memory in dialog after manual GC (issue
    522
    )

1.58.0 (Nov 26, 2015)

  • fix
    JENKINS-23442,
    ClassCircularityError: java/util/logging/LogRecord
    (0ad60da)
  • Upgraded mininum Jenkins version to 1.580.1
  • replace use of deprecated Jenkins api
  • fix from PR 505
    and PR 507:
    German translations (thanks to mawulf)
  • fix issue
    492
    :
    incompatibility of the release v1.57.0 (isAsyncStarted) with servlet
    api 2.5 (when using mvn hpi:run in development).
  • added: 2 new graphs are displayed in "Other charts", below the main
    charts: "% System CPU" and "Used buffered memory"
    (5029404).
    • % System CPU is the CPU usage for the whole system (not just
      the JVM), between 0 and 100%.
    • Used buffered memory is the memory used, either by direct
      buffers
      allocated outside of the garbage-collected heap, using
      ByteBuffer.allocateDirect,
      or by mapped buffers created by mapping a region of a file
      into memory, using
      FileChannel.map.

1.57.0 (Aug 31, 2015)

  • fix: check if async before flushing the response
    (ee87b4b
    thanks to Mark Thomas)
  • fix: used/max file descriptor counts are not displayed in oracle
    java 8
    (c04ef79
    thanks to Colin Ingarfield)
  • Jenkins plugin: scripts examples updated to get data from slaves in
    Jenkins Monitoring Scripts, below the scripts for Jenkins master.
  • improved: An api
    page

    is now available in the monitoring with links to the
    ExternalAPI.
    The path of the page in your Jenkins is
    "monitoring?resource=help/api.html".
  • added: it's now easy to write scripts to get monitoring data from a
    monitored webapp and to send alerts based on thresholds, using
    Jenkins for Continuous Monitoring. See the
    documentation.

JavaMelody migration to Github

1.56.0 (May 2, 2015)

  • fix issue
    477
    : In the
    processes list, CPU and Command are sometimes in the wrong column
  • added: MULTILINE & DOTALL flags for transform-patterns regexps
    (issue 474,
    thanks to Michal Bergmann).

1.55.0 (Jan 30, 2015)

  • fix issue
    453
    : Chinese
    translation for heap dump (thanks to chuxuebao)
  • fix issue
    436
    : implement
    Servlet 3.1 new methods (JavaEE 7), in FilterServletOutputStream and
    others
  • fix issue
    455
    : HTTP-401
    / WWW-Authenticate wrongly reported as HTTP error

1.54.0 (Now 30, 2014)

  • fix: Monitoring reports of a slave didn't work if its name contains
    a space.
  • fix issue
    440
    : Not able
    to start Desktop version.

1.53.1 (Oct 3, 2014)

  • fix: in v1.52.0 with Tomcat, graphs of bytes received/sent and of
    Tomcat active threads were not displayed anymore in "Other charts"
    (revision
    3908
    ).
  • fix issue
    439
    : Display
    Linux version in "System informations", and not "Linux unknown"
  • improved: Portuguese translation (revision
    3885
    ,
    thanks to Fernando Boaglio)
  • added: new system property "javamelody.sampling-included-packages"
    for a white list in cpu
    hotspots
    ,
    instead of using the "javamelody.sampling-excluded-packages" system
    property (issue
    424
    , thanks to
    alf.hogemark)

1.53.0 (Oct 1, 2014)

1.52.1 (Aug 6, 2014)

  • fix: for Maven type jobs on recent Jenkins versions, builds of Maven
    modules are displayed as always running in the /monitoring/nodes
    page
  • fix: the logout action in the menu did not work in the
    /monitoring/nodes page

1.52.0 (Aug 3, 2014)

  • Upgraded mininum Jenkins version to 1.509.3
  • added: display of build steps and their durations, in the detail
    of each build statistics in the "/monitoring/nodes" page. Example:

 

  • added: The system property "javamelody.nodes-monitoring-disabled"
    can be used to disable the periodic monitoring of slaves. Either at
    startup, for example "-Djavamelody.nodes-monitoring-disabled=true"
    in the jenkins.xml file, or even at runtime. Disabling periodic
    monitoring of slaves
    can help against issues, if there are Jenkins
    slaves and if the communication with slaves is too unstable in the
    Jenkins remoting.
  • improved: reduce the number of RRD files created in some conditions,
    by not creating a RRD file of mean times if a request is called only
    once (revision
    3836
    ).
    Otherwise, obsolete RRD files are automatically deleted after 3
    months like before.
  • added: links "View in a new page" below the tables of threads and of
    current requests (revision
    3839
    ).
    For example when Jenkins is under load, the new pages make it easy
    to refresh at will the details of threads or of the current requests
    to see if states change or not, without refreshing all the main
    page.
  • added: logout action in the menu on the right of the main report
    (revision
    3859
    )
  • fixed
    JENKINS-21357
    Node monitoring action: Use the specific computer's sidepanel
    instead of Jenkins default page. But the actions on the left
    sidepanel may be broken because of
    JENKINS-23963.

1.51.0 (Jun 5, 2014)

  • fix: when using java 8, cpu graph was not displayed
  • Drop Java 5 support (revision
    3795
    )
  • Optimized desktop UI startup time, by downloading desktop app and
    caching locally (revision
    3762
    )
  • improved: in a graph detail, a checkbox can now hide maximum values
    in the graph, so that average values are better displayed when much
    lower than the maximum (issue
    368
    )
  • added: PID in the heap dump file name (revision
    3773
    )

1.50.0 (Mar 27, 2014)

  • Fix icons and links on some Jenkins servers in the new Monitoring
    page of individual nodes
    (JENKINS-20935)
  • fix issue issue
    370
    : work
    around ConcurrentModificationException during Tomcat startup (which
    is a Tomcat
    bug
    )
  • fix issue issue
    386
    :
    IllegalArgumentException: No enum const class ..., in Turkish
  • improved: In the US, depending on the browser's language or on the
    javamelody parameter "locale", the paper size is now Letter in the
    US, instead of A4 like in the other countries. (revision
    3679
    ,
    thanks to Dennis)
  • improved css styles: font finally fixed to Arial/Helvetica
    (revision
    3718
    ).
  • added: Menu. A floating button is available on the right of the
    main report to drag a menu in or out. The menu displays the list of
    chapters in the report and allows to jump easily between them
    (revision
    3705
    ).
  • added: Custom reports. Links to custom reports can be included
    in the floating menu described above.
    For that, add a system property named "javamelody.custom-reports".
    In the value of this system property, put the list of names of the
    custom reports separated with commas. Then for each custom report,
    add a system property with the same name and its path as value. By
    default, the following properties are already defined:
    -Djavamelody.custom-reports=JenkinsInfo,AboutMonitoring
    -Djavamelody.JenkinsInfo=/systemInfo
    -Djavamelody.AboutMonitoring=https://wiki.jenkins-ci.org/display/JENKINS/Monitoring

1.49.0 (Jan 12, 2014)

  • added: For each individual node (each slave in
    http://yourhost/computer), reports and actions are available from
    the "Monitoring" page in the contextual menu or in the detail of the
    node:
    • Threads, process list, MBeans of that node only
    • Heap histogram of that node
    • Actions for GC, heap dump
    • (JENKINS-20935,
      with help from Oleg Nenashev)
  • improved: When I call the "Invalidate http sessions" action,
    invalidate all sessions except mine (I can still invalidate my
    session individually after that)
  • improved: In the list of http sessions, a bullet shows which one is
    my own session, if I have a session
  • improved css styles with the come back of shadows in Firefox and
    with hovers for images, ~_(see)
    _(JavaMelody\ Demo)~
    (revision
    3614
    )

1.48.0 (Nov 20, 2013)

1.47.0 (Sep 29, 2013)

  • fix issue
    339
    : "One day"
    memory leak
  • fix issue
    346
    : XSS
    through X-Forwarded-For header spoofing
  • fix issue
    232
    : Use the
    path of -XX:HeapDumpPath=/tmp if defined, for the directory of heap
    dump files (otherwise use the temp directory of the server as
    before)
  • added: detection of cpu hotspots can be enabled (issue
    149
    , with some
    ideas from Cédric Lime).
    • In the monitoring reports, the new Hotspots screen displays CPU
      hotspots in executed methods for all the JVM. Like javamelody,
      the overhead of hotspots is low: it is based on sampling of
      stack-traces of threads, without instrumentation. And like
      javamelody, it is made to be always active if enabled. (It is
      currently not enabled by default. It may be enabled by default
      in the future.) Two parameters can be defined as system
      properties in the jenkins.xml file:
    • "javamelody.sampling-seconds" to enable the sampling and to
      define its period. A period of 10 seconds can be recommended to
      have the lowest overhead, but then a few hours may be needed to
      have significant results for a webapp under real use. If you
      don't mind having a bit more overhead or want a result faster in
      test, you can use a value of 1 or 0.1 in second for this
      parameter.
    • "javamelody.sampling-excluded-packages" to change the list of
      the excluded packages
      ("java,sun,com.sun,javax,org.apache,org.hibernate,oracle,org.postgresql,org.eclipse"
      by default)

1.46.0 (Aug 4, 2013)

  • fix
    JENKINS-17757
    IllegalStateException: Timer already cancelled from
    NodesCollector.scheduleCollectNow
  • use a timeout for the monitoring of slaves, when a slave is online
    but does not respond
  • fix NPE when manually purging the obsolete monitoring files of
    slaves

1.45.0 (Jun 6, 2013)

  • added: button to kill a thread from the current requests (issue
    issue 302)
  • added: button to donate in the html reports, to better inform users
    of this possibility

1.44.0 (Mar 30, 2013)

  • fix: it is currently useless to display the sql hits for the current
    requests
  • fix: better aggregation of http requests in the statistics, for URLs
    /adjuncts/... and /$stapler/bound/... (also reduces the disk space
    used to store data)
  • fix issue
    289
    ,
    JENKINS-15529:
    NoClassDefFoundError: com/sun/management/OperatingSystemMXBean, in
    JBoss AS 7 without configuration of modules
  • page added: Some can be executed using the Jenkins Script Console.

1.43.0 (Jan 27, 2013)

  • fix issue
    270
    : French
    Canadians can't choose a customized period
  • fix: in the current requests, use the chosen period to display the
    statistics of mean times, besides the elapsed times
  • added: PDF report of the current requests
  • added: optional parameter "locale" to fix the locale of the reports,
    whatever the language in the browser (issue
    271
    , thanks to
    xiukongtiao). You can add, for example, the system property
    -Djavamelody.locale=en_US

1.42.0 (Dec 2, 2012)

  • fix issue 262
    NullPointerException in MonitoringFilter.doFilter(), when the webapp
    is undeployed and after a timeout
  • added: New alternative User Interface for the monitoring reports
    with a Rich Desktop Application. Highlights :
    • All reports and data like in the web UI
    • Exports to PDF, XML and JSON formats, even if the monitored
      application does not have the dependencies to do the same in the
      web UI
    • Tabs to view different reports
    • Columns of tables may be sorted, resized and moved
    • Exports with right-click for all tabular data to CSV, PDF, RTF,
      HTML, XML, JSON formats
    • Shortcuts, such as F5
    • Started in one-click with the "Desktop" link at the top of the
      web UI. The required libraries are downloaded automatically from
      ~_(googlecode)~ github on the first launch.
    • Uses JavaWebStart and requires JRE 1.7 on the
      client
    • This new UI may be an alternative to the web UI for advanced
      users or for exports

1.41.0 (Sep 30, 2012)

  • fix issue 252
    Add XSS protection
  • fix issue 255
    exception while collecting data java.io.FileNotFoundException: Could
    not open ....rrd existent

1.40.0 (Aug 26, 2012)

  • fix issue
    14050
    , also for
    the monitoring reports of Nodes.
  • added in the external API: XML and JSON exports of MBeans, and of
    JNDI tree given a JNDI context path. Documentation is
    here.
    For example:
    MBeans
    and
    JNDI.

1.39.0 (Jun 21, 2012)

  • fix issue
    14050
    , also when
    security is enabled in Jenkins: Unreadable HTML response for the
    monitoring reports. Compression of the monitoring reports is now
    disabled in the plugin and the reports will be compressed by Jenkins
    starting with v1.470.

1.38.0 (Jun 17, 2012)

  • fix issue
    14050
    , but only
    when security is not enabled in Jenkins: Unreadable HTML response
    for the monitoring reports

1.37.0 (Apr 29, 2012)

  • fix issue 207: Incompatibility with servlet api 2.4 (Tomcat 5.5) in
    Monitoring plugin 1.36.0
  • added: Reduce the possibility of storage overload by deleting
    automatically the obsolete RRD files (which were not updated for the
    last 3 months), and which were for requests which do not exist
    anymore. Note: the size of existing RRD files is fixed for ever and
    old .ser.gz files are already automatically deleted after a year.
  • added: Display the disk usage of the storage at the bottom of the
    report

1.36.0 (Mar 30, 2012)

  • JavaMelody is used
    inside the Monitoring plugin. Thanks to
    CloudBees Jenkins CI, nightly
    build
    ,
    javadoc
    and
    sources
    of JavaMelody are available.
    ~(And\ there\ is\ a\ public\ demo\ of\ JavaMelody.\ It\ is\ based\ on\ the\ latest\ source\ in\ trunk\ and\ is\ continuously\ deployed.\ It\ is\ currently\ not\ a\ demo\ in\ Jenkins,\ but\ instead\ in\ an\ application\ with\ GWT,\ services\ and\ SQL.)~
    ~
    (First,\ you\ can\ play\ with\ this\ quick\ and\ dirty)
    _(GWT\ application)
    (to\ have\ some\ data\ (thanks\ Benjamin))~
    ~
    (Then\ you\ can\ view\ the\ charts\ and\ the\ statistics\ in\ the)
    _(monitoring\ reports)
    _((no\ password))~

 

  • Other notes:
    • fix blocking issue 194: The jrobin v1.5.9 artifacts are now
      available in the Maven central repository as you can see
      here. The external (and currently
      unreachable) repository in the javamelody pom is now useless and
      removed.
    • fix issue 201: Unable to render MBeans tree when some
      JMX-retrieval exception occurs
      added: if there are deadlocked threads in the JVM, print a
      warning message with the names of the deadlocked threads at the
      top of threads dump, like in the html and pdf reports
      (revision 2678)
    • This version requires a Servlet 2.5 container (fixed in 1.37.0)

1.35.0 (Feb 28, 2012)

  • fix issue 178: Since v1.32, "Nb of http sessions" is 0 and "View
    http sessions" is always empty.
  • added: graphic of "Build queue length" in the monitoring of nodes,
    next to the graphic of "Running builds" (done in Jenkins Hackathon,
    with help from Kohsuke Kawaguchi)
  • added: optional parameter (-Djavamelody.dns-lookups-disabled=true)
    to allow disabling of dns lookups with InetAddress.getLocalHost() to
    prevent long hangs on startup/shutdown in some particular
    environments (issue 181, thanks to r6squeegee)

1.34.0 (Jan 28, 2012)

  • Minor bugfixes such as fonts in the PDF reports for Chinese people,
    when the first PDF report was made for non Chinese people

1.33.0 (Nov 29, 2011)

  • fix issue 11293
    Monitoring plugin not installed because of NoClassDefFoundError:
    org.slf4j.ILoggerFactory on IBM J9 JVM (rev
    40073
    )

1.32.1 (Oct 14, 2011)

  • fix issue 151: a Java 1.6 dependency was introduced in 1.32.0
    (NoSuchFieldError: ROOT)

1.32.0 (Oct 13, 2011)

  • fix issue 141: exception while collecting data java.io.IOException:
    Read failed, file xyz not mapped for I/O (after out of disk space)
  • added: Chinese translation, and fix display of Chinese characters in
    the JRobin graphics and in the PDF reports (issue 150)
  • added: Action "Generate a heap dump" added for IBM JDK like for
    Oracle JDK, patch by David Karlsen in the javamelody users' group
  • added: Add link "Dump threads as text" below the list of threads
  • added: Provide an url (monitoring?action=mail_test) to test sending
    a pdf report by mail (issue 145).

1.31.0 (Aug 14, 2011)

  • fix issue 128: Clean the shutdown process
  • To display the username in the list of http sessions, look at
    ACEGI_SECURITY_LAST_USERNAME if getRemoteUser() was null.

1.30.0 (Jul 15, 2011)

  • fix issue 116: MBeans overview does not work with java 1.5
  • fix issue 117: Sorting of numbers is based on String comparison in
    German
  • fix issue 122: Average number of requests per minutes seems to be
    wrong, with a single day in a custom period
  • fix issue 124: Start date removed from the text at the top of the
    monitoring page, except if the "All" period is selected.

1.29.0

  • fix issue 106: a few HTTP hits are lost in the statistics for the
    first hit(s) on new requests (no impact on statistics once requests
    are known)

1.28.0

  • fix issue 99: NullPointerException when displaying the list of
    process on AIX

1.27.0

  • added: pdf report of MBeans

1.26.0

  • fix issue 8344
    (ClassNotFoundException: net.bull.javamelody.SessionListener)
  • added: Portuguese Brazil translation, including the online help,
    thanks to Luiz Gonzaga da Mata and Renan Oliveira da Cunha. This
    translation is the default for all Portuguese people. The first
    language in the browser settings should be Portuguese (pt) or
    Portuguese/Brazil (pt-br) to use it. The online help in Portuguese
    Brazil

    is also available.
  • added: in the nodes report, chart of the number of the running
    builds by period

1.25.0

  • fix some issues in the monitoring of Jenkins nodes when the
    operating systems of the nodes are heterogeneous
  • fix issue 80: Memory histogram should be supported on Mac OS X
  • added: if JRockit, display the JRockit specific MBeans
  • added: pdf reports of http sessions and of heap histogram

1.24.0

  • fix issue 74: "View OS Processes" does not work on MAC OS X Server

 

  • added: In the system actions, new view "MBeans" with the values and
    the descriptions of the attributes. (MBeans contain configuration
    and low-level data on the application server and on the JVM). The
    values are viewable but not writable and operations can not be
    performed.

 

  • added: Monitoring of the Jenkins nodes (slaves in general)
    similar to the monitoring of the Jenkins master.

    If the monitoring of the Jenkins master is available at
    http://localhost:8080/monitoring then the monitoring of the
    Jenkins nodes is available at
    http://localhost:8080/monitoring/nodes.

    The monitoring of the Jenkins nodes includes:

    • Aggregated "used memory" chart, aggregated "% cpu" chart
      (between 0 and 100) for day, week, month, year or a custom
      period.
    • Chart of the build times over time for the selected period
    • Other aggregated charts: % GC, threads count, loaded classes
      count, system load average, open file descriptors count and more
      for the selected period
    • Statistics of the build times for the selected period
    • Running builds with time elapsed
    • Threads informations for each node including name, state,
      stack-trace and an action to kill any thread
    • Heap histogram aggregated for all nodes
    • Current system informations for each node
    • MBeans for each node
    • Last values in charts and MBeans values. For example, the
      following URLs can be used: 1 and 2 (the
      plugin-authentication-disabled parameter could be used)
    • Process informations for each node
    • Actions to execute the GC or to generate a heap dump on each
      node

 

1.23.0

  • fix issue
    66
    : Since
    tomcat 6.0.21 and when tomcat based authentication is used, session
    count is false and there is a possible memory leak for invalidated
    http sessions in v1.22.0. This is because of the changes for tomcat
    enhancement
    45255.
    To tomcat experts: Isn't an http session supposed to die first
    before being able to born a second time?

1.22.0

  • fix: Maximum values in statistics could be incorrect
  • added major feature: graphic of the number of sessions and details
    on http sessions with the link in "System informations" (this is
    emulated without httpsessionlistener, because httpsessionlistener
    can't be used in Jenkins plugins)
  • added: If Jenkins security is enabled, the system property
    -Djavamelody.plugin-authentication-disabled=true can be added to a
    Jenkins server in order to disable authentication of the monitoring
    page in the Monitoring plugin and to be able to add the server to a
    javamelody centralized collect server. (A system property like
    -Djavamelody.allowed-addr-pattern=127\.0\.0\.1 can also be added
    with the ip address of the collect server)

1.21.0

  • fix to display the list of http sessions when Tomcat throws an
    exception "Session already invalidated"
  • fix to display the list of process when using Windows in Germany
  • added: If Tomcat or JBoss, new graphics in "Other charts" for the
    number of active http and ajp threads in the server, the number of
    bytes received per minute and the number of bytes sent per minute by
    the server.

1.20.0

  • added: German translation thanks to Ewald Arnold. We would like to
    have feedback
    here
    .
  • fix: In the html display of the current requests, put back the
    complete http request with query parameters and values, like it was
    displayed before v1.17.0

1.19.0

  • fix NumberFormatException requesting process information.
  • fix (removed) jndi link in Winstone.
  • added debugging logs.

1.18.0

  • other minor bugs fixed.

1.17.0

  • some minor bugs fixed.

1.15.1

  • change to reduce disk usage: Some common http requests are now
    aggregated in statistics, for example on build numbers.

The javamelody.http-transform-pattern parameter has now the default
value of

/\d+/|/site/.+|avadoc/.+|/ws/.+|obertura/.+|estReport/.+|iolations/file/.+|/user/.+|/static/\w+/

and all matches in http URLs will be replaced by "$". Note that it is
possible on each Jenkins server to change the value of this parameter
with a system property -Djavamelody.http-transform-pattern=xxx in the
java command line.

1.15.0

  • change to reduce disk usage: Graphics in http errors and in errors
    logs are no longer displayed

1.14.0

  • fix: There was an InternalError on ubuntu or debian using the tomcat
    package with jsvc

1.13.0

  • added: remember the last selected period (with a persistent cookie
    in the browser)
  • added: UI option to display graphs and statistics for custom
    periods
    , via fields of start and end dates of period to display

1.12.0

  • added: New charts "Threads count", "Loaded classes count", "Used
    non heap memory", "Used physical memory", "Used swap space"
    (displayed with the new link "Other charts")
  • added: Button to kill a java thread
  • added: parameters can now be specified in environment variables like
    in system properties or webapp context
  • added: new parameter "monitoring-path" to change the url
    "/monitoring" of the report to "/admin/monitoring" for example
  • added: new parameter "mail-periods" to change the period of mail
    reports from weekly to daily or monthly or a combination of the 3
  • added: display the version of JavaMelody at the bottom of the html
    and pdf reports
  • added: display of "ajax GET" or "ajax POST" in http requests names
    for ajax requests

1.10.0

  • English: For people outside US, UK and France, default language is
    now the default locale of the server or English.

1.9.0

  • Fix: The "Monitoring" link in "/manage" page did not work when
    Jenkins was in a servlet context (not in the root context of the
    server).
  • JavaMelody fix: someone had an exception in report on Solaris 10
    (getPID)

1.8.2

  • Removed jdbc graphs as there is no database in Jenkins,
  • Removed sessions graph, values and links as the javamelody
    SessionListener can't be registered without modifying web.xml
  • Added a link in "/manage" page
  • Added checkPermission to check authentication if configured

1.8.1

  • Initial

Translations

Translations for other languages such as Spanish are welcomed.

To contribute in your own language, join the translation project at
https://poeditor.com/join/project/QIaCp4bThS.

or see in English:
https://github.com/javamelody/javamelody/blob/master/javamelody-core/src/main/resources/net/bull/javamelody/resource/translations.properties
the same in French:
https://github.com/javamelody/javamelody/blob/master/javamelody-core/src/main/resources/net/bull/javamelody/resource/translations_fr.properties

Compiling and testing the plugin:

Use maven commands "mvn hpi:run" or "mvn package" like for all Jenkins plugins

http://wiki.jenkins-ci.org/display/JENKINS/Plugin+tutorial

Build Status

Languages

Java100.0%
Apache License 2.0
Created November 24, 2025
Updated November 24, 2025