| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since plugins are now run concurrently the Archive class must be
re-entrant: different plugins may attempt to create the same
paths in the archive, and since they are executing in parallel
and with no locking, there exists a TOCTOU race between the use
of os.path.{exists,isdir, etc.}() and the subsequent creation of
a new path.
Address this by implementing a simple monitor-style locking scheme
for the FileCacheArchive class. A `_path_lock` member is added to
the class and this must be held across any operation that modifies
the namespace of the archive (including file, directory, symlink,
and special node creation).
Additionally, the `_check_path()` Archive method (which checks
for the existence of path components up to the basename of the
file, creating directories as required) is extended to also carry
out a test for the existence of the path, and if the path does
exist, that the object is of the expected type. A mismatch in the
object type generates a ValueError with an appropriate string
description of the problem.
Benchmarking shows a consistent small improvement with the patch:
this is a result of reduced redundant copy operations that the
previous archive structure allowed (since duplicate operations
are now aborted as soon as the _path_lock is acquired).
Resolves: #1340
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Configuration files can exist in three different locations
with the precedence from most important to least as follows:
/run/netplan/*.yaml
/etc/netplan/*.yaml
/lib/netplan/*.yaml
Alphabetically later files, no matter what directory in, will
amend keys if the key does not already exist and override previous keys if they do.
Resolves: #1318
Signed-off-by: Eric Desrochers <eric.desrochers@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add ubuntu-advantage status which is installed by default on Ubuntu and
shows when various UA items are enabled - esm, fips, and livepatch.
Switch ubuntu-support-status to always --show-all. It takes exactly
the same amount of time to run (in both cases it's relatively slow at
3 seconds), and only adds 30k uncompressed/12k compressed.
Add hwe-support-status to give more details about Ubuntu Hardware
enablement if present.
Resolves: #1330
Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
plugins added:
- omnipath_manager for OPA fabric subnet manager
- omnipath_client for management/head node of the cluster
Resolves: #1291
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I've noted an uptick of users recompressing sosreports to get a
better compression rate for uploading over slow links. My tests
indicate that -2 is a better default and should remove any benefit
of compressing again.
In tested cases -2 does not cause any significant CPU increase
and always has shown an improvment - sometimes substancial. The
worst was 3seconds more for a 15MB savings. I would generally
expect to see similar percentage savings as sosreports get bigger.
-3 and higher were evaluated but had diminshing returns that
didn't seem worth it.
Tests results:
NVMe drive
xz -a --batch
-1 5.9M 30.766s
-2 5.7M 30.673s
-3 5.6M 30.101s
-4 5.5M 35.882s
bz2
bz2 -a --batch
-1 11M 36.675s
-2 8.3M 38.792s
xz -a --all-logs --batch
-1 87M 1m8.994s
-2 72M 1m11.926s
-3 69M 1m18.210s
-4 70M 2m33.930s
Old hard drive
-a --batch
-1 5.3M 14.935s
-2 5.2M 15.611s
-a --batch --all-logs
-1 35M 38.881s
-2 26M 38.337s
Resolves: #1307
Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a check for the /tmp directory for permissions and selinux
context. If either of these are incorrect, the system in question can
exhibit strange behavior and otherwise be difficult for support teams to
detect.
On systems where SELinux is disabled, the permission check is still
relevant and the command still produces useful output with the -Z
option.
Resolves: #1327
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Adds collection of the previous day's worth of events handled by the
daemon, a summarized output of storage needs, and a listing of volumes
known to the daemon.
Resolves: #1328
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
An early change to the docker plugin corrected the Debian/Ubuntu docker
command to be "docker" instead of "docker.io". This means that the
docker commands run by the plugin are not going to be different across
distributions. As such, the way the commands are built by the plugin
have been simplified to ease readability.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
| |
Don't compute archive's checksum and print a message to stdout rather.
Resolves: #1329
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
| |
(Also) in case of not fatal FS error, print some valuable message
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
| |
Prevents raising exception when the dir has been removed.
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
| |
Closes: #1306
Resolves: #1313
Signed-off-by: Eric Desrochers <eric.desrochers@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes the nis, nfsganesha, and os_net_config plugins package lists to
use a 1-tuple instead of a string that would break package verification
for those plugins.
Resolves: #1315
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Updates the block plugin to use the new add_udev_info() method, once
with an attribute walk and once without.
Resolves: #1319
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This new plugin collects information related to the watchdog service,
including configuration, custom executables for test-binary and
repair-binary, and stdout/stderr log files.
This will be helpful to support teams seeking to understand why an
unexpected reboot occurred or, conversely, why a reboot did not
occur as expected.
Resolves: #1305
Signed-off-by: Reid Wahl <nwahl@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
It is possible to load kernel modules during boot in a static list
as mentioned under /etc/modules-load.d/*.conf. These files are used
by systemd-modules-load.service. Collect this information using
systemd plugin.
Resolves: #1303
Signed-off-by: Akhil John <ajohn@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Opal-prd is the Processor Runtime Diagnostics daemon on Power systems
running OPAL firmware. Capture this log file with sosreport.
Resolves: #1295
Signed-off-by: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In some instances, the regex match in all_pkgs_by_name_regex() was
returning an empty list when no match was made. This in turn caused sos
to run an empty verify command, e.g. 'rpm -V '.
By filtering the list of packages to verify, we can remove these empty
lists and avoid the empty verify command.
Closes: #1304
Resolves: #1314
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, if sos was run in an environment where '/lib/modules/*' did
not exist, the kernel plugin would pass an empty extra_mod_paths list to
'find -ls', which would in turn cause sos to execute 'find -ls' on the
entire filesystem.
While this situation may seem rare, this is a possiblity whenever sos is
run in a container that does not have the proper environment variable
set that indicates to the active policy that sos is in fact in a
container. On top of generating a sosreport with little to useful
information in this case, the generated sosreport could potentially be
very large due to the collection of a blanket 'find -ls'.
This prevents this from occuring, by not running 'find -ls' if the
extra_mod_paths list is empty.
Resolves: #1288
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added "systemd-analyze dump" which is the complete systemd picture,
containing dependencies, start/stop timestamps, aliases, etc.
- Added "systemd-analyze plot" which provides a convenient visual way to
understand dependencies and startup times.
- Added collect of "/run/systemd/*" which contains many useful data,
such as generated units, current sessions on system (useful to debug
session leaks) and transient units.
Resolves: #1285
Signed-off-by: Renaud Métrich <rmetrich@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
Fixes: #1283
Resolves: #1284
Signed-off-by: Dan Horák <dan@danny.cz>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Collects the paths to the libraries cached by "ldconfig". This is useful
when a customer replaced a standard library by its own or when he added
his own libraries to the standard paths or through symbolic links.
Resolves: #1282
Signed-off-by: Renaud Métrich <rmetrich@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
| |
Resolves: #1280
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Many NFS (and other related programs) options can now be set
through the config file /etc/nfs.conf.
Collect this from the 'nfs' plugin.
Resolves: #1278
Signed-off-by: Pierguido Lambri <plambri@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I see below errors when generating docs using `make`. Decided to
cleanup a bit. The docstring look better than previous and no more
errors when generating docs.
```
/home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:5: ERROR: Unexpected indentation.
/home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:6: WARNING: Block quote ends without a blank line; unexpected unindent.
/home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:13: WARNING: Definition list ends without a blank line; unexpected unindent.
/home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:15: ERROR: Unexpected indentation.
/home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:16: WARNING: Block quote ends without a blank line; unexpected unindent.
/home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:18: WARNING: Definition list ends without a blank line; unexpected unindent.
```
I tried to keep the changes in Sphinx format. Not all functions are
changed in this patch but the one generating errors.
Let me know if anything else needs cleanup in `sos/sos/plugins/__init__.py`
Signed-off-by: Sachin Patil <psachin@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Changes sos to run plugins concurrently. By default sos will now use
four (4) threads to run plugins, allowing for faster overall execution
of sosreport. The number of threads can be changed using the --threads
commandline option.
Plugins now also have a timeout applied to them as a whole to avoid
situations where sosreport appears to be hung. If a plugin exceeds the
timeout threshold, the plugin will be terminated immediately. - this
allows sos to not only continue running normally, but should still allow
for collection of commands run by the plugin up until it was terminated.
The timeout is plugin controlled, and defaults to 300 seconds if not
set.
Note that for python2 environments, this adds a dependency on
python-futures. The futures module is present in the standard library
for python3 environments.
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, any command output generated from plugins from
add_cmd_output and add_journal would be collected in full in memory. For
example, if a journal was 4GB in size, then 4GB would be read into
memory and subsequently written to the final sos archive. This lead to
not only potentially large archives, but in some cases failure to
collect data or produce an archive due to memory constraints on the
system.
This patch adds the ability to use a sizelimit option in both
add_cmd_output and add_journal. This will limit the collected output
from commands or journals to the given limit, both what is read into
memory and what is written to the final archive. If not given,
sizelimit will default to --log-size. For journal collection, if no
sizelimit is given then the larger of either --log-size or 100mb is
used.
Resolves: #1120
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The _format_list() function handles formatting lists as comma-
separated strings, including line wrapping and indentation to
match an outer indentation level.
Add a new 'sep' parameter to allow the list to be separated by
an arbitrary character sequence.
This allows space-separated command line option lists to be
printed by --list-presets.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
Rather than testing for the presence of /etc/redhat-release and
the absence of /etc/fedora-release, open /etc/os-release and check
for the presence of the RHEL release string in the NAME field.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
| |
'make po' complains about this file being missing: add it, with
the same translations as en_GB.po, and set the locale to 'en'.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
| |
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
commit 7bc90f618f0549279544d26effae2e5197d85e2b ("[logs] collect
journalctl verbosed logs with --all-logs only") did not suppress
the journalctl verbosed logs by default. Let's rework it.
Related: #1225
Resolves: #1310
Signed-off-by: Kazuhito Hagio <k-hagio@ab.jp.nec.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Previously this had no checks and would run on every Ubuntu
machine - the majority of which are not maas servers
Resolves: #1309
Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Add 'network-manager' name so it runs on Ubuntu.
Resolves: #1308
Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
| |
Resolves: #1302
Signed-off-by: Sachin Patil <psachin@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
To prevent confusing errors on stdout in py3
Relevant to: #1299
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new plugin for the Kata Containers project runtime
(`kata-runtime`).
See:
- https://github.com/kata-containers
- https://katacontainers.io/
Resolves: #1298
Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
| |
python3 fails with "cannot import name 'join'" error otherwise
Resolves: #1297
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
|
| |
string.lowercase works in python2 only, use equivalent
string.ascii_lowercase in either python 2 or 3
Resolves: #1296
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Several new files need to be collected and master logs are now in a different
location. The NodeConfigCheck plugin for oadm diagnostics no longer exists.
Resolves: #1294
Signed-off-by: Brenton Leanhardt <bleanhar@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
collect "dnf module list --installed" and for each module,
get info about it
Resolves: #1292
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Adds a new plugin for fibrechannel devices.
Resolves: #1290
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a new collection method add_udev_info() which will collect 'udevadm
info' output for a given device or list of devices.
An optional 'attrs' boolean will, if True, have udevadm perform an
attribute-walk of the device's sysfs attributes.
This method can take either device names such as '/dev/sda' or sysfs
paths such as '/sys/class/scsi_host/host0' and these styles may be
freely interchanged in a list given to a single call.
Resolves: #1293
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Collect the list all loaded eBPF programs and maps and dump their
content.
Resolves: #1287
Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Handle compression command failure.
Handle checksum file writing failure.
Make moving checksum file failure non fatal.
Avoid double cleanup.
Signed-off-by: Filip Krska <fkrska@redhat.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In add_string_as_file and _collect_strings, the first line of each
string is printed to debug log, however there is a bug in
_collect_strings that tries to decode the first line of '...'
instead of the actual string; this causes a error like:
File "/usr/share/sosreport/sos/sosreport.py", line 1300, in collect
plug.collect()
File "/usr/share/sosreport/sos/plugins/__init__.py", line 877, in collect
self._collect_strings()
File "/usr/share/sosreport/sos/plugins/__init__.py", line 860, in _collect_strings
(content.splitlines()[0]).decode('utf8', 'ignore'))
AttributeError: 'str' object has no attribute 'decode'
This simplifies the (string or bytearray)-to-first-line-string of both
functions, which also fixes the bug using the wrong variable to decode.
Fixes: 7ba2fb47d05b608f3863fda9271894e38b43937a
Resolves: #1267
Signed-off-by: Dan Streetman <ddstreet@canonical.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|