Skip to content

Commit

Permalink
[container_log] Add rotated logs support
Browse files Browse the repository at this point in the history
In Kubernetes/OpenShift rotated logs have no symbolic link in
/var/log/containers and they cannot be retrieved using `oc logs` either,
so there is no way to get these rotated logs in a SOS report.

This patch proposes extending the `container_log` plugin to make it also
capable of retrieving rotated logs from `var/log/pods` using a plugin
boolean option called `rotated`.

Closes #3677
Signed-off-by: Gorka Eguileor <[email protected]>
  • Loading branch information
Akrog committed Jun 24, 2024
1 parent 606bd81 commit 22ed237
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions sos/report/plugins/container_log.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,37 @@
# See the LICENSE file in the source distribution for further information.

import os
from sos.report.plugins import Plugin, IndependentPlugin
from sos.report.plugins import Plugin, IndependentPlugin, PluginOpt


class ContainerLog(Plugin, IndependentPlugin):

short_desc = 'All logs under /var/log/containers'
plugin_name = 'container_log'
logdir = '/var/log/containers/'
poddir = '/var/log/pods/'
rotated_dirs = [poddir + '*/*.log.*', poddir + '*/*/*.log.*']
files = (logdir, )

option_list = [
PluginOpt('rotated', default=False, val_type=bool,
desc='also get rotated logs from /var/log/pods'),
]

def setup(self):
if self.get_option('all_logs'):
self.add_copy_spec(self.logdir)
if self.get_option('rotated'):
self.add_copy_spec(self.rotated_dirs)
else:
self.collect_subdirs()
self.collect_subdirs(self.logdir, '*.log')
if self.get_option('rotated'):
self.collect_subdirs(self.poddir, '*.log.*')

def collect_subdirs(self, root=logdir):
def collect_subdirs(self, root, glob):
"""Collect *.log files from subdirs of passed root path
"""
for dir_name, _, _ in os.walk(root):
self.add_copy_spec(self.path_join(dir_name, '*.log'))
self.add_copy_spec(self.path_join(dir_name, glob))

# vim: set et ts=4 sw=4 :

0 comments on commit 22ed237

Please sign in to comment.