????
Your IP : 3.138.86.166
a
��g��@stddlmZddlZddlZddlZddlZddlZddlZddlZddl Z Gdd�dej
�Zedkrpe��
�dS)�)�print_functionNc@s@eZdZdZdd�Zdd�Zdd�Zdd �Zd
d�Zdd
�ZdS)�PluginZvmscCs�i}i}|��}t�dd�}|�|�}i}|��D]�\}} i||<| ��D]t\}
}|
dksr|
dksr|
dksr|
dkr�| |
|||
<qJ|�d||
ft|�|�|||
<t| |
�|d||
f<qJq2t��|d<|�|�|S) z�
Using the libvirt API to fetch statistics from guests
running KVM, QEMU, Xen, Virtuozzo, VMWare ESX, LXC,
BHyve and more
�urizqemu:///system� mem_bytes�soft_limit_bytes�min_guarantee_bytes�hard_limit_bytesz%s_%s�ts) Zget_agent_cache�os�getenv�fetch_values�itemsZabsolute_to_per_second�float�timeZset_agent_cache)�self�config�results�
last_valueZ
prev_cacher�valuesZdeltas�key�value�subkeyZsubvalue�r�>/usr/local/lib/python3.9/site-packages/agent360/plugins/vms.py�runs
"
z
Plugin.runcCst�dd|�S)Nz
[^a-zA-Z0-9_]�_)�re�sub)r�namerrr�canon%szPlugin.canonc
Cs�|�d�}d}zt�|�}WngYS0|��}g}zp|�d�}|D]<}d}|jD]} | jdkrX| �d�}qX|dkr|qJ|�|�qJW|dkr�|� �|dkr�|�
�n"|dkr�|� �|dkr�|�
�0|S)Nrz/domain/devices/interface�target�dev��XMLDesc�libxml2�parseDoc�xpathNewContext� xpathEval�childrenr�prop�append�xpathFreeContext�freeDoc)
r�dom�xml�doc�ctx�ifaces�ret�node�devdst�childrrr�
get_ifaces(s6
�
zPlugin.get_ifacesc Cs�dddd�}|�d�}zt�|�}WngYS0|��}zv|D]L}|�d|�}z&|djD]}t|j�||<qzqbWqDty�YqD0qDW|dkr�|� �|dkr�|�
�n"|dkr�|� �|dkr�|�
�0|S)Nr)�
min_guarantee�
soft_limit�
hard_limitz/domain/memtune/%s)r#r$r%r&r'r(�int�content�
IndexErrorr+r,) rr-�memtuner.r/r0rr2r5rrr�get_memtuneBs2
�
zPlugin.get_memtunecCs
t�|�}|��}i}|D�]�}i}d|d<d|d<z|�|�}|��}WnHtjy�} z.td|| ftjd�WYd} ~ qWYd} ~ n
d} ~ 00|dkr�q|� |�}
|
D]^}z6|�
|�}|d|d7<|d|d7<Wq�ttj?d||ffYq�0q�t|��d�}
d |
}||d
<z|t
��|d<Wn&t�yf}zWYd}~n
d}~00|��dd
�\}}|d9}|d9}||d<|�|�}|dd|d<|dd|d<|dd|d<d|d<d|d<d|d<d|d<z|�|�}|��}WnJtj�yN} z.td|| ftjd�WYd} ~ qWYd} ~ n
d} ~ 00|dk�r\q|�|�}|D]�}zX|�|�\}}}}}|d|7<|d|7<|d|7<|d|7<Wn*t�y�ttj?d||ffYn0�qj|||�|�<q|S)NrZnet_rx_bytesZnet_tx_bytesz
Id: %s: %s)�filezDomain-0�z#Cannot get ifstats for '%s' on '%s'gH�����z>�cpuZcpu_percentage��irr7rr9rr8rZ
disk_rd_bytesZ
disk_wr_bytesZdisk_wr_reqZdisk_rd_reqz&Cannot get blockstats for '%s' on '%s')�libvirtZopenReadOnlyZ
listDomainsIDZ
lookupByIDrZlibvirtError�print�sys�stderrr6ZinterfaceStatsr�info�psutil� cpu_count� Exceptionr>� get_disksZ
blockStats� TypeErrorr)rr�conn�idsr�id�datar-r�errr1Ziface�statsZcputimeZcputime_percentage�eZmaxmemZmemr=�disksZdiskZrd_reqZrd_bytesZwr_reqZwr_bytesZerrsrrrr]s|
"
"
zPlugin.fetch_valuesc
Cs�|�d�}d}zt�|�}WngYS0|��}g}zp|�d�}|D]<}d}|jD]} | jdkrX| �d�}qX|dkr|qJ|�|�qJW|dkr�|� �|dkr�|�
�n"|dkr�|� �|dkr�|�
�0|S)Nrz/domain/devices/diskr r!r")
rr-r.r/r0rUr2r3r4r5rrrrL�s6
�
zPlugin.get_disksN) �__name__�
__module__�__qualname__rrr6r>rrLrrrrr sDr�__main__)�
__future__rrrFr
rDr$rZpluginsrIZ
BasePluginrrV�executerrrr�<module>s4