diff options
-rw-r--r-- | sos/report/plugins/ceph_common.py | 85 | ||||
-rw-r--r-- | sos/report/plugins/ceph_mds.py | 48 | ||||
-rw-r--r-- | sos/report/plugins/ceph_mgr.py | 81 | ||||
-rw-r--r-- | sos/report/plugins/ceph_mon.py (renamed from sos/report/plugins/ceph.py) | 128 | ||||
-rw-r--r-- | sos/report/plugins/ceph_osd.py | 58 | ||||
-rw-r--r-- | sos/report/plugins/ceph_rgw.py | 41 |
6 files changed, 347 insertions, 94 deletions
diff --git a/sos/report/plugins/ceph_common.py b/sos/report/plugins/ceph_common.py new file mode 100644 index 00000000..ebe70e0b --- /dev/null +++ b/sos/report/plugins/ceph_common.py @@ -0,0 +1,85 @@ +# This file is part of the sos project: https://github.com/sosreport/sos +# +# This copyrighted material is made available to anyone wishing to use, +# modify, copy, or redistribute it subject to the terms and conditions of +# version 2 of the GNU General Public License. +# +# See the LICENSE file in the source distribution for further information. + +from sos.report.plugins import Plugin, RedHatPlugin, UbuntuPlugin +from socket import gethostname + + +class Ceph_Common(Plugin, RedHatPlugin, UbuntuPlugin): + + short_desc = 'CEPH common' + + plugin_name = 'ceph_common' + profiles = ('storage', 'virt', 'container') + + containers = ('ceph-(mon|rgw|osd).*',) + ceph_hostname = gethostname() + + packages = ( + 'ceph', + 'ceph-mds', + 'ceph-common', + 'libcephfs1', + 'ceph-fs-common', + 'calamari-server', + 'librados2' + ) + + services = ( + 'ceph-nfs@pacemaker', + 'ceph-mds@%s' % ceph_hostname, + 'ceph-mon@%s' % ceph_hostname, + 'ceph-mgr@%s' % ceph_hostname, + 'ceph-radosgw@*', + 'ceph-osd@*' + ) + + # This check will enable the plugin regardless of being + # containerized or not + files = ('/etc/ceph/ceph.conf',) + + def setup(self): + all_logs = self.get_option("all_logs") + + self.add_file_tags({ + '.*/ceph.conf': 'ceph_conf', + '/var/log/ceph/ceph.log.*': 'ceph_log', + }) + + if not all_logs: + self.add_copy_spec("/var/log/calamari/*.log",) + else: + self.add_copy_spec("/var/log/calamari",) + + self.add_copy_spec([ + "/var/log/ceph/ceph.log", + "/var/log/ceph/ceph.audit.log*", + "/var/log/calamari/*.log", + "/etc/ceph/", + "/etc/calamari/", + "/var/lib/ceph/tmp/", + ]) + + self.add_cmd_output([ + "ceph -v", + ]) + + self.add_forbidden_path([ + "/etc/ceph/*keyring*", + "/var/lib/ceph/*keyring*", + "/var/lib/ceph/*/*keyring*", + "/var/lib/ceph/*/*/*keyring*", + "/var/lib/ceph/osd", + "/var/lib/ceph/mon", + # Excludes temporary ceph-osd mount location like + # /var/lib/ceph/tmp/mnt.XXXX from sos collection. + "/var/lib/ceph/tmp/*mnt*", + "/etc/ceph/*bindpass*" + ]) + +# vim: set et ts=4 sw=4 : diff --git a/sos/report/plugins/ceph_mds.py b/sos/report/plugins/ceph_mds.py new file mode 100644 index 00000000..38ba95c9 --- /dev/null +++ b/sos/report/plugins/ceph_mds.py @@ -0,0 +1,48 @@ +# This file is part of the sos project: https://github.com/sosreport/sos +# +# This copyrighted material is made available to anyone wishing to use, +# modify, copy, or redistribute it subject to the terms and conditions of +# version 2 of the GNU General Public License. +# +# See the LICENSE file in the source distribution for further information. + +from sos.report.plugins import Plugin, RedHatPlugin, UbuntuPlugin +import glob + + +class CephMDS(Plugin, RedHatPlugin, UbuntuPlugin): + short_desc = 'CEPH mds' + plugin_name = 'ceph_mds' + profiles = ('storage', 'virt', 'container') + containers = ('ceph-fs.*',) + + def check_enabled(self): + return True if glob.glob('/var/lib/ceph/mds/*/*') else False + + def setup(self): + self.add_file_tags({ + '/var/log/ceph/ceph-mds.*.log': 'ceph_mds_log', + }) + + self.add_copy_spec([ + "/var/log/ceph.log", + "/var/log/ceph/ceph-mds*.log", + "/var/lib/ceph/bootstrap-mds/", + "/var/lib/ceph/mds/", + "/run/ceph/ceph-mds*", + ]) + + self.add_forbidden_path([ + "/etc/ceph/*keyring*", + "/var/lib/ceph/*keyring*", + "/var/lib/ceph/*/*keyring*", + "/var/lib/ceph/*/*/*keyring*", + "/var/lib/ceph/osd", + "/var/lib/ceph/mon", + # Excludes temporary ceph-osd mount location like + # /var/lib/ceph/tmp/mnt.XXXX from sos collection. + "/var/lib/ceph/tmp/*mnt*", + "/etc/ceph/*bindpass*" + ]) + +# vim: set et ts=4 sw=4 : diff --git a/sos/report/plugins/ceph_mgr.py b/sos/report/plugins/ceph_mgr.py new file mode 100644 index 00000000..518731a8 --- /dev/null +++ b/sos/report/plugins/ceph_mgr.py @@ -0,0 +1,81 @@ +# This file is part of the sos project: https://github.com/sosreport/sos +# +# This copyrighted material is made available to anyone wishing to use, +# modify, copy, or redistribute it subject to the terms and conditions of +# version 2 of the GNU General Public License. +# +# See the LICENSE file in the source distribution for further information. + +from sos.report.plugins import Plugin, RedHatPlugin, UbuntuPlugin +import glob + + +class CephMGR(Plugin, RedHatPlugin, UbuntuPlugin): + + short_desc = 'CEPH mgr' + + plugin_name = 'ceph_mgr' + profiles = ('storage', 'virt', 'container') + + containers = ('ceph-mgr.*',) + + def check_enabled(self): + return True if glob.glob('/var/lib/ceph/mgr/*/*') else False + + def setup(self): + self.add_file_tags({ + '/var/log/ceph/ceph-mgr.*.log': 'ceph_mgr_log', + }) + + self.add_copy_spec([ + "/var/log/ceph/ceph-mgr*.log", + "/var/lib/ceph/mgr/", + "/var/lib/ceph/bootstrap-mgr/", + "/run/ceph/ceph-mgr*", + ]) + + # more commands to be added later + self.add_cmd_output([ + "ceph balancer status", + "ceph mgr metadata", + ]) + + # more commands to be added later + ceph_cmds = [ + "mgr module ls", + "mgr dump", + ] + + self.add_cmd_output([ + "ceph %s --format json-pretty" % s for s in ceph_cmds + ], subdir="json_output", tags="insights_ceph_health_detail") + + self.add_forbidden_path([ + "/etc/ceph/*keyring*", + "/var/lib/ceph/*keyring*", + "/var/lib/ceph/*/*keyring*", + "/var/lib/ceph/*/*/*keyring*", + "/var/lib/ceph/osd", + "/var/lib/ceph/mon", + # Excludes temporary ceph-osd mount location like + # /var/lib/ceph/tmp/mnt.XXXX from sos collection. + "/var/lib/ceph/tmp/*mnt*", + "/etc/ceph/*bindpass*", + ]) + + # If containerized, run commands in containers + containers_list = self.get_all_containers_by_regex("ceph-mgr*") + if containers_list: + for container in containers_list: + self.add_cmd_output([ + self.fmt_container_cmd(container[1], "ceph %s" % s) + for s in ceph_cmds + ]) + break + # Not containerized + else: + self.add_cmd_output([ + "ceph %s" % s for s in ceph_cmds + ]) + +# vim: set et ts=4 sw=4 : diff --git a/sos/report/plugins/ceph.py b/sos/report/plugins/ceph_mon.py index e5d12c51..420bc695 100644 --- a/sos/report/plugins/ceph.py +++ b/sos/report/plugins/ceph_mon.py @@ -7,101 +7,64 @@ # See the LICENSE file in the source distribution for further information. from sos.report.plugins import Plugin, RedHatPlugin, UbuntuPlugin -from socket import gethostname -import re +import glob -class Ceph(Plugin, RedHatPlugin, UbuntuPlugin): +class CephMON(Plugin, RedHatPlugin, UbuntuPlugin): - short_desc = 'CEPH distributed storage' + short_desc = 'CEPH mon' - plugin_name = 'ceph' + plugin_name = 'ceph_mon' profiles = ('storage', 'virt', 'container') - containers = ('ceph-(mon|rgw|osd)*',) - ceph_hostname = gethostname() + containers = ('ceph-mon.*',) - packages = ( - 'ceph', - 'ceph-mds', - 'ceph-common', - 'libcephfs1', - 'ceph-fs-common', - 'calamari-server', - 'librados2' - ) - - services = ( - 'ceph-nfs@pacemaker', - 'ceph-mds@%s' % ceph_hostname, - 'ceph-mon@%s' % ceph_hostname, - 'ceph-mgr@%s' % ceph_hostname, - 'ceph-radosgw@*', - 'ceph-osd@*' - ) - - # This check will enable the plugin regardless of being - # containerized or not - files = ( - '/etc/ceph/ceph.conf', - ) + def check_enabled(self): + return True if glob.glob('/var/lib/ceph/mon/*/*') else False def setup(self): - all_logs = self.get_option("all_logs") - self.add_file_tags({ '.*/ceph.conf': 'ceph_conf', - '/var/log/ceph/ceph.log.*': 'ceph_log', - '/var/log/ceph/ceph-osd.*.log': 'ceph_osd_log' + '/var/log/ceph/ceph-mon.*.log': 'ceph_mon_log' }) - if not all_logs: - self.add_copy_spec([ - "/var/log/ceph/*.log", - "/var/log/radosgw/*.log", - "/var/log/calamari/*.log" - ]) - else: - self.add_copy_spec([ - "/var/log/ceph/", - "/var/log/calamari", - "/var/log/radosgw" - ]) - self.add_copy_spec([ - "/etc/ceph/", - "/etc/calamari/", - "/var/lib/ceph/", - "/run/ceph/" + "/var/log/ceph/ceph-mon*.log", + "/var/lib/ceph/mon/", + "/run/ceph/ceph-mon*" ]) self.add_cmd_output([ "ceph mon stat", - "ceph mon_status", "ceph quorum_status", - "ceph mgr module ls", - "ceph mgr metadata", - "ceph balancer status", - "ceph osd metadata", - "ceph osd erasure-code-profile ls", "ceph report", - "ceph osd crush show-tunables", "ceph-disk list", "ceph versions", "ceph features", "ceph insights", - "ceph osd crush dump", - "ceph -v", - "ceph-volume lvm list", "ceph crash stat", "ceph crash ls", "ceph config log", "ceph config generate-minimal-conf", "ceph config-key dump", + "ceph mon_status", + "ceph osd metadata", + "ceph osd erasure-code-profile ls", + "ceph osd crush show-tunables", + "ceph osd crush dump" ]) ceph_cmds = [ + "mon dump", "status", "health detail", + "device ls", + "df", + "df detail", + "fs ls", + "fs dump", + "pg dump", + "pg stat", + "time-sync-status", "osd tree", "osd stat", "osd df tree", @@ -111,28 +74,15 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin): "osd blocked-by", "osd pool ls detail", "osd pool autoscale-status", - "osd numa-status", - "device ls", - "mon dump", - "mgr dump", "mds stat", - "df", - "df detail", - "fs ls", - "fs dump", - "pg dump", - "pg stat", - "time-sync-status", - ] - - ceph_osd_cmds = [ - "ceph-volume lvm list", + "osd numa-status" ] self.add_cmd_output([ "ceph %s --format json-pretty" % s for s in ceph_cmds ], subdir="json_output", tags="insights_ceph_health_detail") + # these can be cleaned up too but leaving them for safety for now self.add_forbidden_path([ "/etc/ceph/*keyring*", "/var/lib/ceph/*keyring*", @@ -147,25 +97,15 @@ class Ceph(Plugin, RedHatPlugin, UbuntuPlugin): ]) # If containerized, run commands in containers - containers_list = self.get_all_containers_by_regex("ceph-*") + containers_list = self.get_all_containers_by_regex("ceph-mon*") if containers_list: - # Avoid retrieving multiple times the same data - got_ceph_cmds = False for container in containers_list: - if re.match("ceph-(mon|rgw|osd)", container[1]) and \ - not got_ceph_cmds: - self.add_cmd_output([ - self.fmt_container_cmd(container[1], "ceph %s" % s) - for s in ceph_cmds - ]) - got_ceph_cmds = True - if re.match("ceph-osd", container[1]): - self.add_cmd_output([ - self.fmt_container_cmd(container[1], "%s" % s) - for s in ceph_osd_cmds - ]) - break - # Not containerized + self.add_cmd_output([ + self.fmt_container_cmd(container[1], "ceph %s" % s) + for s in ceph_cmds + ]) + break + # Not containerized but still mon node else: self.add_cmd_output([ "ceph %s" % s for s in ceph_cmds diff --git a/sos/report/plugins/ceph_osd.py b/sos/report/plugins/ceph_osd.py new file mode 100644 index 00000000..d5027a4e --- /dev/null +++ b/sos/report/plugins/ceph_osd.py @@ -0,0 +1,58 @@ +# This file is part of the sos project: https://github.com/sosreport/sos +# +# This copyrighted material is made available to anyone wishing to use, +# modify, copy, or redistribute it subject to the terms and conditions of +# version 2 of the GNU General Public License. +# +# See the LICENSE file in the source distribution for further information. + +from sos.report.plugins import Plugin, RedHatPlugin, UbuntuPlugin +import glob + + +class CephOSD(Plugin, RedHatPlugin, UbuntuPlugin): + + short_desc = 'CEPH osd' + + plugin_name = 'ceph_osd' + profiles = ('storage', 'virt', 'container') + containers = ('ceph-osd.*',) + + def check_enabled(self): + return True if glob.glob('/var/lib/ceph/osd/*/*') else False + + def setup(self): + self.add_file_tags({ + '/var/log/ceph/ceph-osd.*.log': 'ceph_osd_log', + }) + + # Only collect OSD specific files + self.add_copy_spec([ + "/var/log/ceph/ceph-osd*.log", + "/var/log/ceph/ceph-volume*.log", + + "/var/lib/ceph/osd/", + "/var/lib/ceph/bootstrap-osd/", + + "/run/ceph/ceph-osd*" + ]) + + self.add_cmd_output([ + "ceph-disk list", + "ceph-volume lvm list", + ]) + + self.add_forbidden_path([ + "/etc/ceph/*keyring*", + "/var/lib/ceph/*keyring*", + "/var/lib/ceph/*/*keyring*", + "/var/lib/ceph/*/*/*keyring*", + "/var/lib/ceph/osd", + "/var/lib/ceph/mon", + # Excludes temporary ceph-osd mount location like + # /var/lib/ceph/tmp/mnt.XXXX from sos collection. + "/var/lib/ceph/tmp/*mnt*", + "/etc/ceph/*bindpass*" + ]) + +# vim: set et ts=4 sw=4 : diff --git a/sos/report/plugins/ceph_rgw.py b/sos/report/plugins/ceph_rgw.py new file mode 100644 index 00000000..f5afc0dd --- /dev/null +++ b/sos/report/plugins/ceph_rgw.py @@ -0,0 +1,41 @@ +# This file is part of the sos project: https://github.com/sosreport/sos +# +# This copyrighted material is made available to anyone wishing to use, +# modify, copy, or redistribute it subject to the terms and conditions of +# version 2 of the GNU General Public License. +# +# See the LICENSE file in the source distribution for further information. + +from sos.report.plugins import Plugin, RedHatPlugin, UbuntuPlugin +import glob + + +class CephRGW(Plugin, RedHatPlugin, UbuntuPlugin): + + short_desc = 'CEPH rgw' + + plugin_name = 'ceph_rgw' + profiles = ('storage', 'virt', 'container', 'webserver') + containers = ('ceph-rgw.*',) + + def check_enabled(self): + return True if glob.glob('/var/lib/ceph/radosgw/*/*') else False + + def setup(self): + self.add_copy_spec('/var/log/ceph/ceph-client.rgw*.log', + tags='ceph_rgw_log') + + self.add_forbidden_path([ + "/etc/ceph/*keyring*", + "/var/lib/ceph/*keyring*", + "/var/lib/ceph/*/*keyring*", + "/var/lib/ceph/*/*/*keyring*", + "/var/lib/ceph/osd", + "/var/lib/ceph/mon", + # Excludes temporary ceph-osd mount location like + # /var/lib/ceph/tmp/mnt.XXXX from sos collection. + "/var/lib/ceph/tmp/*mnt*", + "/etc/ceph/*bindpass*" + ]) + +# vim: set et ts=4 sw=4 : |