Jenkins : Support Core Plugin

Plugin Information

View Support Core on the plugin site for more information.

Older versions of this plugin may not be safe to use. Please review the following warnings before using an older version:

Support Core Plugin

The plugin provides the basic infrastructure for generating "bundles" of support information within Jenkins.

There are three ways of generating bundles:

  • Automatic bundles, these get saved in $JENKINS_HOME/support once per hour starting 3 minutes after Jenkins starts the plugin (i.e. this may still be generated even if Jenkins will not fully start). The automatic bundles are retained using an exponential aging strategy, so you should have a bunch of them over the entire lifetime once the plugin has been installed.
  • On demand bundles:
    • You can generate them from the root "Support" action, using the User Interface ; or
    • By using the CLI Command. For the association documentation, please refer to <yourJenkinsInstanceUrl>/cli/command/support embedded documentation.

Docker File

As part of the support bundle if the About Jenkins option is checked then you will receive a docker file in the bundle also. The docker file contains the current version of Jenkins, along with a wget operation to download all of the plugins on the Jenkins master. This creates a similar environment for testing or reproducing bugs.

First build the image:

docker build -f Dockerfile

then run the docker image

docker run -d -p 8080:80

This should create a new Jenkins master with the same version, and the same plugins and versions all bundled.

Third party support providers

Various companies and organizations provide commercial support for Jenkins. They can provide additional content and branding to the support action. The following lists the known third party support providers (in date order) and the links to their support provider plugin.

Frequent issues

Support bundles corrupt through the UI

The most common situation for this to happen is when the About Jenkins option is enabled.

Meanwhile, the support bundle is getting generated it looks like the generation process is stuck as the downloaded size stays at the same point for a long time. To diagnosis this issue the best is to take a threadDump when in the moment where it is stuck and check the Jenkins logs.

If a stacktrace like the one below appears

"Handling POST /support/download from XX.XX.XX.XX : RequestHandlerThread[#126]" Id=123772 Group=main RUNNABLE
	at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
	at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
	at java.io.File.isDirectory(File.java:849)
	at com.cloudbees.jenkins.support.impl.AboutJenkins$ItemsContent.printTo(AboutJenkins.java:641)
	at com.cloudbees.jenkins.support.api.PrintedContent.writeTo(PrintedContent.java:47)
	at com.cloudbees.jenkins.support.SupportPlugin.writeBundle(SupportPlugin.java:359)
	at com.cloudbees.jenkins.support.SupportAction.doDownload(SupportAction.java:154)

and the Jenkins logs are populated with 

2018-01-04 04:52:17.633+0000 [id=123769]	WARNING	c.c.j.support.SupportPlugin#writeBundle: Could not attach 'nodes/slave/Slave1/checksums.md5' to support bundle
org.eclipse.jetty.io.EofException: Closed
	at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:476)
	at net.bull.javamelody.FilterServletOutputStream.write(FilterServletOutputStream.java:88)
	at net.bull.javamelody.CounterResponseStream.write(CounterResponseStream.java:82)
	at org.apache.tools.zip.ZipOutputStream.writeOut(ZipOutputStream.java:1029)
	at org.apache.tools.zip.ZipOutputStream.deflate(ZipOutputStream.java:680)
	at org.apache.tools.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:432)
	at org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:489)
	at com.cloudbees.jenkins.support.SupportPlugin.writeBundle(SupportPlugin.java:358)
	at com.cloudbees.jenkins.support.SupportAction.doDownload(SupportAction.java:154)

Then, surely the problem is that you are hitting the Idle timeout in the load balancer and this makes the connection betweek the ELB and your broweser to drop. To workaround this problem you can:

  • Increase the Idle timeout in the load balancer
  • Not include About Jenkins section
  • Reduce the number of builds in the system

Support Bundle Anonymization

Beginning in version 2.48, this plugin now allows for automated ContentFilter extensions to enable anonymizing of various data. By enabling this feature, the default set of filters will anonymize agent names, agent computer names, agent labels, view names (aka folders), job names, usernames, and IP addresses (both IPv4 and IPv6). These data are mapped to randomly generated fake names which are saved to Jenkins master. A Jenkins administrator can view these mappings by going to Manage Jenkins › Support Bundle Anonymization. All files written to the support bundle by this and all extensions of this plugin will replace all instances of the original values with their anonymized counterpart. Note that the Stop Words list on that page shows which terms are ignored when filtering names (case-insensitive full match).

Limitations

 

Anonymization filters only apply to text files. It cannot handle non-Jenkins URLs, custom proprietary Jenkins plugin names, and exceptions quoting invalid Groovy code in a Jenkins pipeline. The active plugins, disabled plugins, failed plugins, and Dockerfile reports are not anonymized due to several Jenkins plugins and other Java libraries using version numbers that are indistinguishable from IP addresses. These reports are in the files plugins/active.txtplugins/disabled.txtplugins/failed.txt, and docker/Dockerfile. These files should all be manually reviewed if you do not wish to disclose the names of custom proprietary plugins.


Version History

Version 2.64 (2019 Nov 21)

Version 2.62 (2019 Oct 4)

  • JENKINS-58165 - support-core doesn't take into account %t on GC logs Closed  Handle parameterized GC logs filenames
  • JENKINS-56245 - Add the instanceId in the bundle Closed  Add instance ID to AboutJenkins
  • JENKINS-58980 - support-core should only collect the latest GC logs Closed  Only include latest GC logs
  • JENKINS-59453 - Cleanup plugin dependencies / Move to BOM Closed  Clean up plugin dependencies
  • JENKINS-59554 - Avoid capturing an automatic bundle immediately after startup Closed  Wait 3 minutes before generating a first support bundle

  • LogFlusher should run before shutting down Jenkins. (PR #193)
  • More gracefully handle a configuration file deleted while the bundle is being written (PR #190)

Version 2.61 (2019 Sept 9)

  • JENKINS-58528 - Channel listeners (SlaveCommandStatistics.Statistics) retained after node removal Closed  Report available processes for master

Version 2.60 (2019 Aug 6)

  • JENKINS-58528 - Channel listeners (SlaveCommandStatistics.Statistics) retained after node removal Closed  Fix memory leak caused by nodes statistics always growing.

Version 2.59 (2019 Aug 1)

  • JENKINS-58606 - Add info about backup plugins to support bundle Closed Add info about backup plugins to support bundle.

Version 2.58 (2019 Jul 16)

  • JENKINS-58393 - Support Bundle incomplete due to failure to getTime() on a Node Closed  Avoid the bundle not being generated properly when getTime() failed.
  • JENKINS-57602 - NPE in Support Core Plugin when reporting agents Resolved  Fix the agents reporting.

Version 2.57 (2019 Jul 5)

  • JENKINS-57990 - Avoid filtering contents without sensible data and do per-content anonymization Closed  Improve the filtering, avoid filtering the garbage collectors logs.

Version 2.56 (2019 Feb 18)

  • JENKINS-55866 - Anonymize by words Closed  Fix for first implementation.

Version 2.55 (2019 Feb 18)

  • JENKINS-55014 - Deadlocking around support-core-plugin log publishing Closed  Prevent deadlock when bundle generated at startup.
  • JENKINS-55843 - Folders missed due to anonymization in the bundle Closed  Avoid bundle getting corrupted when folder have certain names.
  • JENKINS-55866 - Anonymize by words Closed  Replace only full words.

Version 2.54 (2019 Jan 15)

  • JENKINS-55493 - [support-core] Upgrade parent pom and fix HTMLForm API usage Closed  Update parent POM to test plugin with JDK 11.

Version 2.53 (2018 Dec 11)

  • JENKINS-55493 - [support-core] Upgrade parent pom and fix HTMLForm API usage Closed  Update parent POM to test plugin with JDK 11.

Version 2.53 (2018 Dec 11)

  • JENKINS-54922 - Generated markdown should work in MacDown.app Closed  Improve generated Markdown.
  • JENKINS-54999 - Performance issue due to the bundle anonymization feature of the support-core plugin Closed  Improve anonymization performance.

Version 2.52 (2018 Nov 28)

  • JENKINS-54688 - Operating System informations are anonymized Closed  Information about operating system does not get anonymized.

Version 2.51 (2018 Nov 19)

  • JENKINS-54687 - GCLogs should be excluded by default Closed  GC Logs should be excluded by default.

Version 2.50 (2018 Sept 13)

Version 2.49 (2018 Jul 19)

  • JENKINS-52639: Remove transitive dependency on snakeyaml to fix API compatibility issues.

Version 2.48 (2018 Jul 02)

  • JENKINS-21670: Add support for anonymizing private data in support bundles.
  • JENKINS-49578: Make the button for deleting old support bundles red to help prevent users from deleting bundles inadvertently.

Version 2.47 (2018 Apr 19)

Version 2.46 (2018 Mar 14)

  • JENKINS-27035 - Request/response statistics Resolved  Request/response statistics. Tallying command read/write events.

  • Jenkins baseline updated to 2.107.x.

Version 2.45.1 (2018 Mar 09)

  • As has been found abnormal usage of private API, it has been reintroduced temporary because of backward compatibility.

Version 2.45 (2018 Mar 07)

  • JENKINS-49931 - Heap Histogram Collection Destabilizes Masters Closed Pass -Dcom.cloudbees.jenkins.support.impl.HeapUsageHistogram.DISABLED=false to restore heap histogram generation, pending a better fix.
  • Sort thread dumps by name rather than ID.

  • Reduce pressure on master file descriptors.

  • JENKINS-46132 - All Agents have the same Proc Info which is Master's Proc Info Closed
  • Jenkins baseline updated to 2.46.x.

Version 2.44 (2017 Dec 12)

  • ClassCastException possible on 2.50+.

  • JENKINS-48436 - /support/download doesn't exist anymore Closed Restoring compatibility for an API endpoint.

Version 2.43

  • JENKINS-41653 Support core warning when collecting data
  • JENKINS-47779 Could not create fully detailed support bundles after 2.86

Version 2.42

Version 2.41

Version 2.40

  • PR-104 Delete temp files even if failures happen, and better error message if failed to delete the file.
  •  JENKINS-41745 Allow SupportCommand to work without a Remoting channel

Version 2.39

  • JENKINS-42393 Temporary files should not be created in the bundles root directory under JENKINS_HOME
  • JENKINS-40613 Report a blocked Timer
  • PR-101 Use UTC for all timestamps

Version 2.38

  • JENKINS-40062 Optionally include config.xml files for nodes
  • PR-96 Print stack trace in logical order
  • PR-97 Max file size for agent logs
  • PR-99 Add initialization milestone

Version 2.37

  • JENKINS-40098 Bundle naming strategy should be able to specify an instance type

Version 2.36

  • JENKINS-39150 Improve remoting channel diagnostics in Support Core
  • JENKINS-40094 Global config.xml only contains a exception
  • PR 94 Fix weird display of the GC Logging gathering
  • PR 85 Add node monitoring data for all nodes (i.e. the columns you typically see for each node on the /computer page)

Version 2.35

  • PR 89 NPE in GCLogs.addContents after 2.34.

Version 2.34

  • JENKINS-38572 PR 76 Only obtain proxy information if async-http-client plugin is installed.
  • PR 81 Fixed some buglets in SupportLogFormatter.
  • JENKINS-39381 PR 83 Add a support component for XML files.
  • PR 86 Check if Jenkins is quieting down.
  • PR 87 Add MIT license.md file.
  • JENKINS-39607 PR 88 GC logs should be collected.
  • Jenkins baseline updated to 1.625.x

Version 2.33

  • PR 74 Add proxy information to update center section.
  • JENKINS-37772 PR 73 Get rid of Initializer(after = InitMilestone.COMPLETED)
  • PR 70 Use require post annotation
  • PR 68 Diagnose startup performance.
  • PR 66 Upgrade parent 2.3 -> 2.11
  • JENKINS-34719 PR 63 Pick up and logs that have been refactored into JENKINS_HOME/logs.
  • PR 62 Separate slave logs, and master logs.
  • JENKINS-26409 PR 60 If the stream is terminated early log this information in FINE level.

Version 2.32

  • PR 58 Enable and enforce findbugs on the verify stage.
  • PR 53 Adapt to new parent POM.
  • JENKINS-34462 PR 59 Add CSRF protection status.
  • Jenkins baseline updated to 1.580.x

Version 2.31

  • PR 65 Prevent null pointer exception reporting log level.
  • PR 57 Add the locale of the browser to a slow request.

Version 2.30

  • PR 50 Add argument to increase max log rotate size.
  • PR 51 Add deadlock test.
  • PR 52 Record log rotate levels.
  • PR 48 Add update center information.
  • PR 54 Add slave version information for master node.
  • PR 55 Switch to a ThreadLocal DateFormatter

Version 2.29

  • PR 44 Add Jenkins url configuration to validate reverse proxy configuration
  • PR 43 Check build queue elements to see if the QueueTaskDispatcher is able to run the builds.
  • JENKINS-30117 Support bundle blocks with lots of data
  • JENKINS-28216 Obtain slave logs using async callable.

Version 2.28

  • PR 41 Deadlock detector now records the full stack traces
  • PR 18 Option to capture the export table of slaves added

Version 2.27

  • JENKINS-21668 Obtain root CA information.
  • PR 24 Add networking interface information
  • JENKINS-28876 Add user-agent information to slow-request
  • PR 37
    • add system uptime to see if an outage comes from a system reboot
    • add DMI information to see if Jenkins is running on a virtualized server
  • JENKINS-29034 Modify filename to include date and time.

Version 2.26 Bad release.

Version 2.25 (June 09 2015)

  • JENKINS-26409 ClientAbortException logged when cancelling a support bundle download.
  • JENKINS-28703 Add pinned status to plugin information.

Version 2.24 (June 03 2015)

Version 2.23 (June 03 2015) (Bad release)

Version 2.22 (May 06 2015)

  • JENKINS-27669 ClassCircularityError after creating a log recorder with a blank logger name.
  • Limit winsw log file.

Version 2.21 (Apr 28 2014)

  • Fix Dockerfile generation to prevent overflowing the number of steps
  • Fix download url for plugins in Dockerfile generation
  • Quote thread names in thread dumps
  • Fix HTML title tag to properly display action title (issue #23278)
  • Add summary of current build queue (issue #20542)
  • Set file last modified timestamp in ZIP archive
  • Fix generated date format
  • Add load statistics graphs and data to support bundle

Version 2.20 (Dec 29 2014)

  • JENKINS-24380 Support for new build directory layout in Jenkins 1.597+.

Version 2.19

No changelog recorded, blame Unknown User (kohsuke)!

Version 2.18 (Oct 30 2014)

  • slow-requests was missing stack traces.

Version 2.17 (Oct 10 2014)

  • Capture past slave launch logs, not just the current session (JENKINS-25108)

Version 2.16 (Oct 8 2014)

  • Prevent slow-request files from going over 2MB in size.

Version 2.15 (Sept 25 2014)

  • Added some NPE safety against cloud implementations that return malformed slave descriptions
  • Slow request content was not properly displaying stack trace elements
  • Resolve file descriptor symlinks

Version 2.14 (Sept 5 2014)

  • Better summarize Item’s of all kinds. (JENKINS-22609)
  • Checking for slow requests threw an exception on an non-locked thread. (JENKINS-24567)

Version 2.13 (Aug 26 2014)

  • Workaround for JENKINS-24358 deadlock.
  • Record the query string in slow request logs.
  • Add lock owner thread info to slow request logs.
  • Note the current thread name at each slow request sample.
  • Omit empty other-logs/*.log.

Version 2.12 (Jul 22 2014)

  • Make the SlowRequestChecker timings configurable and only collect thread dumps if there are slow requests (JENKINS-23904)

Version 2.11 (Jul 8 2014)

  • When sending log files remotely, GZip the content to reduce bandwidth requirements

Version 2.10 (Jul 8 2014)

  • The remote node logs were not being transferred once the log file grew above a certain undetermined critical size due to GC pressure removing an exported remoting reference from the slave's JVM.

Version 2.9 (Jul 8 2014)

  • When there are many remote nodes, the serial fetching of logs in 2.8 can cause bundle generation to take an excessive amount of time. Now the log fetching is performed in parallel.

Version 2.8 (Jul 8 2014)

  • Add caching of slave log files with append-based fetch for when the cache contains partial content. Should significantly reduce the support bundle generation load unless slave logs are generating a lot of content rapidly.

Version 2.7 (Jul 4 2014)

  • Make some of the remote operations asynchronous and time bounded in order to reduce the impact of periodic support bundle generation and speed up bundle generation in general.
  • The only default content that retains synchronous remoting I/O is the Log Recorders component.

Version 2.6 (May 19 2014)

  • Fix file list cap to actually do something, and not throw exceptions when hitting the cap.
  • Ignore offline slaves when checking file descriptors (workaround for JENKINS-21999).

Version 2.5 (May 12 2014)

  • Reduce memory usage from features added in 2.3.

Version 2.4 (May 06 2014)

  • New component added in 2.3 usually failed to load.

Version 2.3 (April 23 2014)

  • Report a thread dump when the jvm starts to become unresponsive. Checks every 3 seconds to see if the instance is unresponsive.
  • Report when a deadlock has occurred. Checks every 15 seconds for instance of deadlocks occurring.

Version 2.1 (Mar 24 2014)

  • Robustness for plugins missing descriptors, such as on special slave launchers.
  • JENKINS-22326 Deadlock in logging.

Version 2.0 (Mar 20 2014)

  • Upgraded from Yammer metrics to Codahale/Dropwizard metrics using the Metrics Plugin (as a result, minimum required version of Jenkins has been increased to 1.520).
  • Fixed bug where large slave launch logs could cause an OOM in Jenkins.
  • Reports on LSB modules when defined / available 

Version 1.8 (Feb 05 2014)

  • Fixes and improvements to thread dump reports.

Version 1.7 (Feb 04 2014)

Version 1.6 (Dec 02 2013)

  • Security fixes; please update.
  • JENKINS-20362 Added CLI command.
  • Better plugins/disables.txt.
  • Summarize security configuration.
  • Separate nodes.md.
  • Remember deselected components.
  • Fixed display of impermissible components.

Version 1.4 (Oct 24th, 2013)

  • Update the User Agent detection resources

Version 1.3 (Oct 24th, 2013)

  • Ensure AboutUser reports the details of the requesting user and not the details of the impersonated user.

Version 1.2 (Oct 24th, 2013)

  • Simplified threading model when generating bundles

Version 1.1 (Oct 24th, 2013)

  • Refactoring some of the behaviour of AboutBrowser and AboutUser components

Version 1.0 (Oct 24th, 2013)

  • Initial release