Your IP : 216.73.216.86


Current Path : /lib/fm-agent/plugins/__pycache__/
Upload File :
Current File : //lib/fm-agent/plugins/__pycache__/process.cpython-36.pyc

3

q��i�D�
@sTddlZddlZddlZyddlZWndZYnXddlZGdd�dej�ZdS)�Nc@s0eZdZdZdZedd��Zdd�Zdd�Zd	S)
�
ProcessPlugin�process�ProcesscCs�tj}d}dtjkr tj}d}nrdtjkr6tj}d}n\dtjkrLtj}d}nFtdkrl|jjd�tj}d}n&tj	j
d�s�|jjd�tj}d}iSdtjkr�d	d||d
dd�d
d||d
dd�dd||ddd�dd||ddd�d�}n�dd||d
d�d	d||d
dd�dd||ddd�dd||ddd�dd||ddd�dd||ddd�d
d||d
dd�dd||ddd�dd||ddd�dd||ddd�dd||ddd�dd||ddd�d�}|S)N�aix�darwin�vmwarez=Unable to import psutil library, no process metrics availablezDUnable to import psutil library, please install and rebuild metadataz/procz/proc not foundzEnable procfs.zNumber of processes - name�	processesT)�label�options�status�
error_message�unit�
option_stringz'Number of processes - full command linezProcess is running�booleanz&Process is running - full command line)zprocess.named_countzprocess.named_count.fullzprocess.existszprocess.exists.fullzNumber of processes running)r	r
rrr
z%Memory percentage of processes - name�percentz"CPU percentage of processes - namez+Process Thread Count - executable name only�threadsz2Memory percentage of processes - full command linez2MB of memory used by processes - full command line�MBz/CPU percentage of processes - full command linez/Process Thread Count - executable name and args)zprocess.running_countzprocess.named_countzprocess.named_memory_percentagezprocess.named_cpu_percentagezprocess.existszprocess.thread_countzprocess.named_count.fullz$process.named_memory_percentage.fullz process.named_memory_raw_mb.fullz!process.named_cpu_percentage.fullzprocess.exists.fullzprocess.thread_count.full)�
agent_util�	SUPPORTED�sys�platform�psutil�log�info�UNSUPPORTED�os�path�exists)�self�configr�msg�metadata�r"�$/usr/lib/fm-agent/plugins/process.py�get_metadatas�



zProcessPlugin.get_metadatac&sldtjksdtjk�r�dtjkr&d}ndtjkr4d}tj|�\}}|jd�}|jd�r`|jd�}|dkrtt|�dSd	}g}x6|dd�D]&}	||	kr�|d7}|j|	j�d	�q�W|d
kr�|S|dkr�|r�dSd	Sn�|d3k�r�d	}
d	}d	}x�|D]�}
dtjk�rd|
}ndtjk�r d|
}tj|�\}}|j	�jd�}t|�dk�rN�q�|dj�}t
|d	�}t
|d�}t
|d�}|
|7}
||7}||7}�q�W|dk�r�|S|dk�r�t
|�dS|
SdSdtjk�rxtjd�}d}|�s�|jj
d�dS|jd��rd|}nd|}|d|7}tj|�\}}|jd�}|jd
��rRt|�dS|jd��rxt|�dd	k�rtdSd	Stdk�r�|jjd�dSd�|jd��r�|jd�}d�tj�}g}t|�}|jd
��rF�dk�rFxh|D]`}y0tj||j���r|j|jddddgd ��Wn(tjk
�r<|jjd!��w�YnX�q�Wn�|jd
��rΈdk�r�x�|D]f}y6tj|d"j|j����r�|j|jddddgd ��Wn(tjk
�r�|jjd!��wbYnX�qbWn^x\|D]T}y$|j|jdddd#d$d%d&gd ��Wn(tjk
�r$|jjd!��w�YnX�q�Wx6|D].}|d�sLd|d<�q2d"j|d�|d<�q2W|jjd'|�|dk�s�|d(k�r�ttj��S|d
k�rg}|jjd)|�x8|D]0}|�dk	�r�tj||���r�|j|��q�W|jj|�t|�S|dk�rvg}|jjd)|�x8|D]0}|�dk	�r$tj||���r$|j|��q$W|jj|�|�rndSd	S�n�|d4k�r�g}|jjd)|�x8|D]0}|�dk	�r�tj||���r�|j|��q�W|jj|�|jjd+�fd,d-�|D��|�sd	Sd	}
d	}d	}d	}d.tjk�rJ|j|�}|d#}
|d$}|d%}|d&}n^xP|D]H}
|
d#}|
d$}|
d%j}|
d&}|
|7}
||7}||7}||7}�qPWt
|�d5}|dk�r�|S|dk�r�|S|d*k�r�|S|
Sn�|d6k�rh|�r�td0d-�|D��} nd1S|j ||�}!|!�s$|j!||| �dS|!d	\}"}#| |#|"}$|j!||| �tj"�}%|%�s\d}%|$|%d2Sd	S)7Nr�sunoszps axwwzps -eo pid' 'args�
z.fullzprocess.running_count�rzprocess.named_countzprocess.exists�process.named_memory_percentage�process.named_cpu_percentage�named_memory_raw_mbzps -fp %s -o pcpu,pmem,rss��process.named_memory_raw_mbir�pgrep�z5Unable to find 'pgrep'! Unable to check for processesz%s -fz%sz %sz=Unable to import psutil library, no process metrics available�name�cmdline_str�pid�cmdline�	cpu_times)�attrszUnable to get process.� �cpu_percent�memory_percent�memory_info�num_threadszAll running processes:
%s
�countzSearching processes for '%s'�process.thread_countzFound matching processes: %scsg|]}|��qSr"r")�.0�p)�searchr"r#�
<listcomp>osz'ProcessPlugin.check.<locals>.<listcomp>r�!process.named_cpu_percentage.fullcSs$g|]}|jd�j|jd�j�qS)r3)�get�user�system)r<r=r"r"r#r?�sg�d)r(r)r*)r(r,r;i)r)r@)#rrr�execute_command�split�endswith�rstrip�len�append�strip�float�whichr�error�
startswithrr�process_iter�str�rer>r/�as_dict�
NoSuchProcess�	exception�joinr2�debug�pids�findDarwinProcInfo�rss�sum�get_cache_results�cache_result�	cpu_count)&r�textkey�datar�ps_cmd�retcode�outputr:rX�line�all_cpu�all_mem�
all_raw_kbr1�ps�ret�fields�cpu�mem�raw_kbr-�cmd�out�process_objsr�proc�found_procs�all_raw_mem�all_thread_count�rv�mem_raw�thread_count�user_sum�last_result�delta�previous�time_used_result�number_of_coresr")r>r#�check�s�





















 

 
 






zProcessPlugin.checkcCs�g}x|D]}|jt|d��q
Wtjdjdj|���\}}|jd�}|dd�}td�td�td�t|�d�}xh|D]`}	|	j�}
t|
�d	krx|d
t|
d�7<|dt|
d
�7<|dt|
d�7<qxW|d}t|�d|d<|S)z�
        On OSX, psutil will not report process information on processes
        belonging to other users, unless the requesting process is privileged.
        https://github.com/giampaolo/psutil/issues/883
        r1zps uM -p {}�,r&r'Nr)r6r7r8r9�r6r+r7�r8�i)	rJrQrrE�formatrVrFrLrI)rrrrX�fp�rcrc�lines�	procLinesru�lr�mr"r"r#rY�s&


z ProcessPlugin.findDarwinProcInfoN)	�__name__�
__module__�__qualname__r_r	�classmethodr$r~rYr"r"r"r#rs#r)rrrrrR�Pluginrr"r"r"r#�<module>s