403Webshell
Server IP : 138.197.107.151  /  Your IP : 216.73.217.120
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux BloxBy-Builder 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64
User : wpbetasites_mrakzqskir ( 1022)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /usr/lib/python3/dist-packages/sos/report/plugins/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3/dist-packages/sos/report/plugins/__pycache__/loki.cpython-312.pyc
�

G%@iT��d�ddlmZddlmZmZmZddlmZmZmZddl	m
Z
mZmZGd�de
e�Z
y)�)�Optional)�datetime�	timedelta�timezone)�JSONDecodeError�dumps�loads)�Plugin�IndependentPlugin�	PluginOptc
���eZdZdZdZdZdZdZdZdZ	e
dd	d
��e
dd	d
��e
dd	d��e
dded��e
dded��gZde
ede
efd�Zde
ede
efd�Zd�Zd�Zd�Zd�Zd�Zy )!�Lokia

    Collects logs and configuration from Loki.

    This plugin interacts with the Loki API to fetch logs based on specified
    labels and provides options for pagination and label detection.
    It also collects relevant configuration files and masks sensitive
    information. It works with both charmed and non-charmed Loki.
    To fetch internal Loki logs, run it from the Loki container.
    You can also run it from another machine and fetch only logs from
    Loki API, by providing the following parameters:
        `-k loki.collect-logs=true -k loki.endpoint=LOKI_URL`

    Usage:
        sos report -o loki -k loki.collect-logs=true             -k loki.labels=severity:charm -k loki.detect-labels=true             -k loki.paginate=true -k loki.endpoint=LOKI_URL
    zLoki service�loki)�servicesi��d)r�collect-logsFzcollect logs from Loki API)�default�desc�
detect-labelszTfetch logs for all available labels. May result in multiple files with the same logs�paginatez'fetch all available logs from Loki API.�labels�z1colon-delimited list of labels to fetch logs from)r�val_typer�endpoint�http://localhost:3100zDloki endpoint to fetch logs from. Defaults to http://localhost:3100.�start�endc��|s#tjtj�}|s|t	d��z
}|jd�}|jd�}d|�d|�d|�d|�dtj�d	�}|S)
N�)�daysz%Y-%m-%dT%H:%M:%S.%fZ�curl -G -s 'z3/loki/api/v1/query_range' --data-urlencode 'query={z!=~".+"}' --data-urlencode 'start=z' --data-urlencode 'end=z' --data-urlencode 'limit=z' )r�nowr�utcr�strftimer�LOKI_QUERY_LIMIT)�selfr�labelrr�start_formatted�
end_formatted�commands        �9/usr/lib/python3/dist-packages/sos/report/plugins/loki.py�
query_commandzLoki.query_command<s�����,�,�x�|�|�,�C���)��+�+�E��.�.�)@�A�����%<�=�
��8�*�%)�).��0'�'6�&7�8%�%2�O�4'�'+�'<�'<�&=�R�	
A�	���c��|j|j||||��}	t|d�S#t$r|j	d|�d��|dcYSwxYw)N�outputz-An error was returned from Loki API on label z-. Error message stored, not querying further.)�exec_cmdr,r	r�	_log_warn)r&rr'rrr/s      r+�get_logsz
Loki.get_logsOss�����t�1�1�(�E�5�#�N�O��	$����)�*�*���	$��N�N�K�$�g�&J�K�
M��(�#�#�	$�s�
3�#A�Ac���|dd}ttj�j�dz�}|D]&}|dD]}t|d�}t	||�}��(|S)N�data�result�ʚ;�valuesr)�intrr"�	timestamp�min)r&�logs�log_streams�earliest_log�stream�logr9s       r+�get_earliest_log_timestampzLoki.get_earliest_log_timestamp[sr���6�l�8�,���8�<�<�>�3�3�5�m�C�D��!�	<�F��h�'�
<����A��K�	�"�<��;��
<�	<��r-c��|j||dd�}|j|�d��5}|jt|d���ddd�t	|t
�ry|�r|j
|�}ttj�j�dz�}d}|tjkr�||kr�tj|dz�}	|j||d|	�}
|j|�d|���5}|jt|
d���ddd�t	|
t
�ry|}|j
|
�}|dz
}|tjkr||kr��yyyyy#1swY��%xYw#1swY�]xYw)Nz.log�)�indentr6rz.log.r)r2�collection_file�writer�
isinstance�strr@r8rr"r9r�MAX_PAGINATION_ITERATIONS�
fromtimestamp)r&rr'rr;�logfiler=�previous_earliest_log�iterations_count�
log_timestamp�new_logss           r+�get_logs_for_labelzLoki.get_logs_for_labeles����}�}�X�u�d�D�9��
�
!�
!�U�G�4�.�
1�	1�W��M�M�%��Q�/�0�	1��d�C� ����:�:�4�@�L�$'�����(�(�*�=�8�%�!� !��"�T�%C�%C�C� �#8�8� (� 6� 6�$0�=�$@�!B�
��=�=��5�$�
�N���)�)�U�G�5�9I�8J�*K�L�=�"��M�M�%���";�<�=��h��,��(4�%��3�3�H�=��!�A�%� �#�T�%C�%C�C� �#8�8�D�8�D�
�
	1�	1��"=�=�s�E)�=E6�)E3�6E?c�p�|jd�}|j|�|jd�}|j|�|jd�|jd�|jd�r�|jd�xsd}g|_|jd�x}r<t|t�r,|r*|jj|jd	��|jd
�rB|jd|�d��}t|d
�}|jj|d�yyy)Nz/etc/loki/*.yamlz/etc/worker/*.yamlz/var/log/loki/*zpebble logs loki -n 10000rrrr�:rr!z/loki/api/v1/labels'r/r4)�	path_join�
add_copy_spec�add_cmd_output�
get_optionrrFrG�extend�split�collect_cmd_outputr	)r&�els_config_file�coordinated_workers_config_filer�
labels_option�
labels_cmd�labels_jsons       r+�setupz
Loki.setup�s���.�.�);�<�����?�+�+/�.�.�9M�*N�'����:�;����,�-����7�8��?�?�>�*����z�2�M�6M�H��D�K� $���� 9�9�}�9��m�S�1�m��K�K�&�&�}�':�':�3�'?�@�����/�!�4�4�"�8�*�,@�A��
�$�J�x�$8�9�����"�"�;�v�#6�7�0�+r-c��|jd�xsd}|jD]&}|jd�}|j|||��(y)Nrrr)rUrrO)r&rr'rs    r+�collectzLoki.collect�sI���?�?�:�.�I�2I���[�[�	?�E����z�2�H��#�#�H�e�X�>�	?r-c���ddg}gd�}ddj|��d�}ddj|��d�}|D](}|j||d�|j||d��*y)	N�
access_key_id�secret_access_key)z /etc/loki/loki-local-config.yamlz/etc/loki/config.yamlz/etc/loki/local-config.yamlz/etc/loki/loki.yamlz/etc/worker/config.yaml�(�|z)\s*(:|=)(\S*\n.*?\\n)z)\s*(:|=)\s*[a-zA-Z0-9]*z
\1\2*********)�join�do_file_sub)r&�protect_keys�
loki_files�match_exp_multil�	match_exp�files      r+�postprocz
Loki.postproc�s�����
��
�
� ����� 6�7�7M�N������,�/�0�0H�I�	��	�D�����&� �
�
����i� �
�	r-N)�__name__�
__module__�__qualname__�__doc__�
short_desc�plugin_name�profilesr%rH�packagesrrG�option_listrrr,r2r@rOr^r`rm�r-r+rrs����$ �J��K��H��� #���H�	�.�%�3�	5��/�5�J�	L�	�*�e�@�	B��(�B��J�	L��*�&=��=�	?�
�K��H�X�4F��#�H�-��&
$�x��/A�
$��x�(�
$��&�>8�2?�r-rN)�typingrrrr�jsonrrr	�sos.report.pluginsr
rrrrwr-r+�<module>r{s-���2�2�.�.�C�C�i�6�$�ir-

Youez - 2016 - github.com/yon3zu
LinuXploit