Support Core Plugin
This plugin provides a common set of classes to assist in generating support bundles.
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 15 seconds 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.
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.
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)
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
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).
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
docker/Dockerfile. These files should all be manually reviewed if you do not wish to disclose the names of custom proprietary plugins.
Version 2.56 (2019 Feb 18)
- Fix for first implementation.
Version 2.55 (2019 Feb 18)
- Prevent deadlock when bundle generated at startup.
- Avoid bundle getting corrupted when folder have certain names.
- Replace only full words.
Version 2.54 (2019 Jan 15)
- Update parent POM to test plugin with JDK 11.
Version 2.53 (2018 Dec 11)
- Update parent POM to test plugin with JDK 11.
Version 2.53 (2018 Dec 11)
- Improve generated Markdown.
- Improve anonymization performance.
Version 2.52 (2018 Nov 28)
- Information about operating system does not get anonymized.
Version 2.51 (2018 Nov 19)
- 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)
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)
Version 2.44 (2017 Dec 12)
- 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
- 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
- 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
- JENKINS-40098 Bundle naming strategy should be able to specify an instance type
- 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)
- PR 89 NPE in GCLogs.addContents after 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
- 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.
- 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
- PR 65 Prevent null pointer exception reporting log level.
- PR 57 Add the locale of the browser to a slow request.
- 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
- 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.
- PR 41 Deadlock detector now records the full stack traces
- PR 18 Option to capture the export table of slaves added
- 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)
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+.
No changelog recorded, blame Kohsuke Kawaguchi!
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
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)