Monitoring

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. Download this aws-cloudwatch-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.

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