File: //lib/python3.9/site-packages/sos/report/plugins/__pycache__/ceph_mon.cpython-39.pyc
a
^��c� � @ s4 d dl Z d dlmZmZmZ G dd� deee�ZdS )� N)�Plugin�RedHatPlugin�UbuntuPluginc @ sH e Zd ZdZdZdZdZdZdZdZ dd � Z
d
d� Zdd
� Zdd� Z
dS )�CephMONag
This plugin serves to collect information on monitor nodes within a Ceph
cluster. It is designed to collect from several versions of Ceph, including
those versions that serve as the basis for RHCS 4 and RHCS 5.
Older versions of Ceph will have collections from locations such as
/var/log/ceph, whereas newer versions (as of this plugin's latest update)
will have collections from /var/log/ceph/<fsid>/. This plugin attempts to
account for this where possible across the host's filesystem.
Users may expect to see several collections twice - once in standard output
from the `ceph` command, and again in JSON format. The latter of which will
be placed in the `json_output/` subdirectory within this plugin's directory
in the report archive. These JSON formatted collections are intended to
aid in automated analysis.
zCEPH monZceph_mon)ZstorageZvirt� container)zceph-(.*-)?mon.*)z/var/lib/ceph/mon/z/var/lib/ceph/*/mon*r c C s | � � | _| �ddd�� | �g d�� | �g d�� | jddd� | �g d �� | �d
�}|d dkr�|d
�� D ]*}|�d�rt|� � d }| �d|� �� qtg d�}| jdddd� | jdddd� | jdd� | �
� D �dd� | �dd� |D �� | jdd� |D �dd� d S )NZ ceph_confZceph_mon_log)z.*/ceph.confz$/var/log/ceph/(.*/)?ceph-.*mon.*.log)z/etc/ceph/*keyring*z/var/lib/ceph/**/*keyring*z/var/lib/ceph/**/tmp/*mnt*z/etc/ceph/*bindpass*)z/run/ceph/**/ceph-mon*z/var/lib/ceph/**/kv_backendz/var/log/ceph/**/*ceph-mon*.logzceph reportZceph_report)�tags)z
ceph mon statzceph quorum_statuszceph-disk listz
ceph versionsz
ceph featuresz
ceph insightszceph crash statzceph config logz!ceph config generate-minimal-conf�ceph config-key dumpzceph osd metadataz ceph osd erasure-code-profile lszceph osd crush dumpzceph osd crush show-tunablesz!ceph osd crush tree --show-shadowz
ceph mgr dumpzceph mgr metadatazceph mgr module lszceph mgr serviceszceph mgr versionsz!ceph log last 10000 debug clusterzceph log last 10000 debug auditz
ceph crash ls�statusr �output�*zceph crash info )zmon dumpr z device lsZdfz df detailzfs lszfs dumpzpg dumpzpg statztime-sync-statuszosd statzosd df treezosd dumpzosd dfzosd perfzosd blocked-byzosd pool ls detailzosd pool autoscale-statuszmds statzosd numa-statusz'ceph health detail --format json-prettyZjson_outputZceph_health_detail)�subdirr z"ceph osd tree --format json-prettyZ
ceph_osd_treec S s g | ]}d |� d��qS )zceph tell mon.z mon_status� )�.0Zmidr
r
�?/usr/lib/python3.9/site-packages/sos/report/plugins/ceph_mon.py�
<listcomp>� � z!CephMON.setup.<locals>.<listcomp>)r c S s g | ]}d |� ��qS )�ceph r
�r �cmdr
r
r r � r c S s g | ]}d |� d��qS )r z --format json-prettyr
r r
r
r r � r )�get_ceph_version�ceph_versionZ
add_file_tagsZadd_forbidden_pathZ
add_copy_specZadd_cmd_outputZcollect_cmd_output�
splitlines�endswith�split�get_ceph_ids)�selfZcrashesZcrashlnZcidZ ceph_cmdsr
r
r �setup+ sB
�
����z
CephMON.setupc
C s~ | � d�}|d dkrpz$|d �� d }t|�d�d �W S tyn } z| �d|� �� W Y d }~n
d }~0 0 | �d� dS ) Nzceph --versionr r r
� �.z"Could not determine ceph version: z?Failed to find ceph version, command collection will be limited)�exec_cmdr �int� Exception�
_log_debugZ
_log_error)r ZverZ_ver�errr
r
r r � s
&�zCephMON.get_ceph_versionc
C s* g }| j dks| j dkr�| �d�}|d dkr�|d �� D ]`}|�� }|r:|d �d�r:z |�d�}|�||d � W q: ttfy� | � d
� Y q:0 q:n�| j dk�r&| �d�}|d dk�r&z,t
�d
|d �}|�|�
� d �d�� W n6 t�y$ } z| �d|� �� W Y d }~n
d }~0 0 |S )N� � zps -u ceph -o argsr r r
zceph-monz--id� zUnable to find ceph IDs� zceph statusz!(\s*mon: .* quorum) (.*) (\(.*\))�,zid determination failed: )r r r r r �index�append�
IndexError�
ValueErrorZ _log_warn�re�search�extend�groupsr! r"