Skip to content

Commit

Permalink
[Ceph/rgw] Expand RGW data collection
Browse files Browse the repository at this point in the history
Signed-off-by: Ponnuvel Palaniyappan <[email protected]>
  • Loading branch information
pponnuvel authored and TurboTurtle committed Jul 23, 2024
1 parent 9f871d2 commit d21d558
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions sos/report/plugins/ceph_rgw.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
#
# See the LICENSE file in the source distribution for further information.

import json

from socket import gethostname
from sos.report.plugins import Plugin, RedHatPlugin, UbuntuPlugin


Expand All @@ -21,6 +24,26 @@ class CephRGW(Plugin, RedHatPlugin, UbuntuPlugin):

def setup(self):
all_logs = self.get_option("all_logs")
cmds = ['bucket limit check',
'bucket list',
'bucket stats',
'datalog list',
'datalog status',
'gc list',
'lc list',
'log list',
'metadata sync status',
'period list',
'realm list',
'reshard list',
'sync error list',
'sync status',
'zone list',
'zone placement list',
'zonegroup list',
'zonegroup placement list',
]

microceph = self.policy.package_manager.pkg_by_name('microceph')
if microceph:
if all_logs:
Expand Down Expand Up @@ -57,4 +80,42 @@ def setup(self):
"/etc/ceph/*bindpass*"
])

# Get commands output for both Ceph and microCeph
rgw_id = "radosgw.gateway" if microceph else "rgw." + gethostname()
self.add_cmd_output([f"radosgw-admin --id={rgw_id} {c}" for c in cmds])

# Get all the zone data
res = self.collect_cmd_output(f'radosgw-admin --id={rgw_id} zone list')
if res['status'] == 0:
try:
_out = json.loads(res['output'])
zone_list = _out['zones']
for zone in zone_list:
self.add_cmd_output(f'radosgw-admin --id={rgw_id} '
f'zone get --rgw-zone={zone}')
except ValueError as err:
self._log_error(f'Error while getting get rgw '
f'zone list: {err}')

# Get all the zonegroup data
res = self.collect_cmd_output(f'radosgw-admin --id={rgw_id} '
f'zonegroup list')
if res['status'] == 0:
try:
_out = json.loads(res['output'])
zonegroups = _out['zonegroups']
for zgroup in zonegroups:
self.add_cmd_output(f'radosgw-admin --id={rgw_id} '
f'zone get --rgw-zonegroup={zgroup}')
except ValueError as err:
self._log_error(f'Error while getting get rgw '
f'zonegroup list: {err}')

def postproc(self):
""" Obfuscate secondary zone access keys """

rsub = r'("access_key":|"secret_key":)\s.*'
self.do_cmd_output_sub("radosgw-admin", rsub, r'\1 "**********"')


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

0 comments on commit d21d558

Please sign in to comment.