U
    @i                     @   s@   d dl Z d dlmZ d dlmZ d dlT G dd dejjZ	dS )    N)Path)Response)*c                   @   s2   e Zd ZdZeedddZejj	dd Z
dS )CmfMetricsViewz/metrics)returnc               	   C   s  t  } d}d}d}d}i }i }g }t }td D ]}	|	j sHq8z|	d   }
W n t	k
rt   Y q8Y nX |
d t
| krq8||	 |t|
d 7 }t|
d ||	j< t|
d ||	j< q8td t }|D ]p}	z|	d   }
W n t	k
r   Y qY nX |d	7 }|t|
d ||	j  7 }|t|
d ||	j  7 }qt d
}|}|d d }|||  | }|||  | }d|dd|dd|dd|dgddddddddddddddddddS )Nr   z/procstat            g      ?   
SC_CLK_TCKi   eva_app_process)namevalueeva_app_user_cpuseva_app_sys_cpus eva_app_memory_consumption_bytesZgaugezEva App process quantityZprocess)ZTYPEZHELPZUNITz"Eva App CPU units user utilizationZcpusz!Eva App CPU units sys utilizationzEva App memory utilizationbytes)r   r   r   r   )recordsmeta)osgetpgrptimer   iterdirr   isdigit	read_textsplitFileNotFoundErrorstrappendintsleepsysconf)ZpgroupZtotal_proccessZ	total_rssZtotal_user_ticsZtotal_sys_ticksZ
user_timesZ	sys_timesZsub_path_listZstart_timestampZproc_sub_pathr   Zstop_timestampZticksr   r   r   r    r$   $./cmf/modules/index/views/metrics.py_get_metrics   s    





zCmfMetricsView._get_metricsc              
   C   s   d}|   }|d D ]Z}|d }|d |  D ]$\}}|d| d| d| d7 }q0|| d|d  d7 }q|d	7 }t|d
dS )N r   r   r   z#  
r   z# EOF
z:application/openmetrics-text; version=1.0.0; charset=utf-8)Zcontent_type)r&   itemsr   )selfZbodyZmetricsrecordr   Z	meta_nameZ
meta_valuer$   r$   r%   getp   s    zCmfMetricsView.getN)__name__
__module____qualname__Z__url__staticmethoddictr&   cmfviewsactionr-   r$   r$   r$   r%   r   
   s
   br   )
r   pathlibr   Zflaskr   Zcmf.includer3   r4   ZBaseViewr   r$   r$   r$   r%   <module>   s   