a >h@s4ddlZddlmZmZmZGdddeeeZdS)N)Plugin RedHatPlugin UbuntuPluginc@s4eZdZdZdZdZdZdZdZddZ d d Z d S) CephOSDa This plugin is for capturing information from Ceph OSD nodes. While the majority of this plugin should be version agnostic, several collections are dependent upon the version of Ceph installed. Versions that correlate to RHCS 4 or RHCS 5 are explicitly handled for differences such as those pertaining to log locations on the host filesystem. Note that while this plugin will activate based on the presence of Ceph containers, commands are run directly on the host as those containers are often not configured to successfully run the `ceph` commands collected by this plugin. These commands are majorly `ceph daemon` commands that will reference discovered admin sockets under /var/run/ceph. zCEPH osdZceph_osd)ZstorageZvirt containerZceph)zceph-(.*-)?osd.*)z/var/lib/ceph/osd/*z/var/lib/ceph/*/osd*%/var/snap/microceph/common/data/osd/*cs|d}d}|jjd}gd|sxd}|ddi|gd|gd |d d g|r|d d gn0d}|gd|ddg|r|dg|fdd||DdS)Nall_logsZ microceph) zbluestore bluefs availableZdump_reservationsz bluefs statszbluestore allocator dump blockzbluestore bluefs device infoz config diffz config showz counter dumpzcounter schemaZdump_blocked_opsZdump_blocklistZdump_historic_ops_by_durationZdump_historic_slow_opsZ dump_mempoolsZdump_op_pq_stateZdump_ops_in_flightZdump_osd_networkZdump_pgstate_historyZdump_recovery_reservationsZ dump_scrubsZ dump_watchersZget_mapped_poolsZ list_devicesZ list_unfoundzlog dumpZobjecter_requestsopsz perf dumpzperf histogram dumpz perf schemastatusversionz /var/run/cephz(/var/log/ceph/(.*/)?ceph-(.*-)?osd.*.logZ ceph_osd_log)z/etc/ceph/*keyring*z/var/lib/ceph/**/*keyring*z/var/lib/ceph/**/tmp/*mnt*z/etc/ceph/*bindpass*)z/run/ceph/**/ceph-osd*z/var/lib/ceph/**/kv_backendz/var/log/ceph/**/ceph-osd*.logz!/var/log/ceph/**/ceph-volume*.logzceph-disk listzceph-volume lvm listz/var/log/ceph/**/ceph-osd*.log*z"/var/log/ceph/**/ceph-volume*.log*z/var/snap/microceph/current/run)z'/var/snap/microceph/common/**/*keyring*z(/var/snap/microceph/current/**/*keyring*z"/var/snap/microceph/common/state/*rz./var/snap/microceph/common/logs/*ceph-osd*.logz//var/snap/microceph/common/logs/*ceph-osd*.log*cs&g|]}D]}d|d|q qS)z ceph daemon  ).0icZcmdsr?/usr/lib/python3.9/site-packages/sos/report/plugins/ceph_osd.py sz!CephOSD.setup..) Z get_optionZpolicyZpackage_managerZ pkg_by_nameZ add_file_tagsZadd_forbidden_pathZ add_copy_specZadd_cmd_output get_socks)selfr directoryZ microceph_pkgrrrsetup'sB % z CephOSD.setupcCsLg}t|D]8\}}}|D](}|drd|vr||||qq|S)z Find any available admin sockets under /var/run/ceph (or subdirs for later versions of Ceph) which can be used for ceph daemon commands z.asokZosd)oswalkendswithappendZ path_join)rrZ ceph_socketsZrdir_filesfilerrrrs zCephOSD.get_socksN) __name__ __module__ __qualname____doc__Z short_descZ plugin_nameZprofilesZ containersrrrrrrrrsdr)rZsos.report.pluginsrrrrrrrr s