
    ?i9                     B    d dl T d dlZd Zd Zd Zd Zd Zd
dZd	 ZdS )    )*Nc                 n    t           j        sd S t          j        j                            d| |           d S )NEVA_METRICSconfigMETRICS_API_STATS_COLLECTAPPREDIS_DBredishincrbykeyvals     ./cmf/util/metrics.pywrite_counterr      s5    + L}c377777    c                     t           j        sd S t          j        j                            d| |           t          j        j                            d| dz   d           d S )Nr   #count   r   r   s     r   write_summaryr      sV    + L}c3777L}c(lA>>>>>r   c                     t           j        sd S d|  d| d| }t          j        j                            d||           d S )Ndeferred_job_cnt______r   r   METRICS_DEFERRED_JOB_COLLECTr	   r
   r   r   )queuenameactionr   r   s        r   write_deferred_job_counterr      sR    . 
;
;
;$
;
;6
;
;CL}c377777r   c                     t           j        sd S d|  d| d| }t          j        j                            d||           t          j        j                            d|dz   d           d S )Ndeferred_job_tm___r   r   r   r   r   )r   r   r   val_msr   s        r   write_deferred_job_timingsr#      ss    . 
:u
:
:
:
:&
:
:CL}c6:::L}c(lA>>>>>r   c                 B   t           j        sd S d|  dt           j         }|r)t          j        j                            d|dz   d           |sd S t          j        j                            d|dz   d           t          j        j                            d||           d S )Nprof___r   r   #total_countr   r   )r   r   HOSTNAME_FQDNr	   r
   r   r   )r   duration_ms	triggeredtrack_ok_countr   s        r   
write_profr+   $   s    + 
3D
3
3V1
3
3C I""=#n2DaHHH L}c(lA>>>L}c;?????r   c                    t           j        sdS t          |dz            }d|  d| dt           j         }t          j        j                            d||           d|  d| dt           j         d}t          j        j                            d|d           dt          j	        v rid	|  d| dt           j         d}t          j	        d         
                                D ].\  }}t          j        j                            d||z   |           /d
d
d
ddd}| |v r||          }t          |          |z  }	t          |	dz            }	d|  d| dt           j         }t          j        j                            d||	           d|  d| dt           j         d}t          j        j                            d|d           | dz   |v r|| dz            }
||
v r|
|         }t          |          |z  }	t          |	dz            }	d|  d| dt           j         }t          j        j                            d||	           d|  d| dt           j         d}t          j        j                            d|d           dS dS dS )u/  
    Считает время выполнения API-методов
    В additional_label можно записывать имя доп.метки (например, какое поле обновляли у заначи или в каком формате запросили выгрузку)
    N  api_time_time___r   r   r   r   select_countapi_time_select_count___2   i  )r   textlists)zBaseModel.all_models_metazCmfTask.update#additional_labelapi_time_sla___z#additional_label)r   r   intr'   r	   r
   r   r   gprofiler_dataitemsfloat)methoddurationadditional_labelmsecsr   kvAPI_SLAslanorm_slaadd_slas              r   write_api_timerD   /   s   
 + E
SV
S
S(8
S
SV=Q
S
SCL}c5999
YV
Y
Y(8
Y
YV=Q
Y
Y
YCL}c1555((bbb4DbbI]bbb?>288:: 	@ 	@CAaL&&}c!eQ????
 &(	,
 ,
 G@ fo<<#%x$''VVV+;VV@TVV""=#x@@@\\\+;\\@T\\\""=#q999!!W,,&!445w&&*+CU||c)H8d?++HZFZZ/?ZZFDXZZCL&&}c8DDD`F``/?``FDX```CL&&}c1===== -,&&r   c                  
   t           j        sdS t          j        } d}d t          j        j                            dd          D             }|dz  }|dz  }d |                                D             D ]}|                    d	          \  }}}}||         }||= |d
z   |vrt          
                    d|            L||d
z            }	||d
z   = |d| d| d| d| d	z  }|d| d| d| d|	 d	z  }|dz  }|dz  }d |                                D             D ]=}|                    d	          \  }}}}}
||         }||= |d| d| d| d|
 d| dz  }>|dz  }|dz  }d |                                D             D ]}|                    d	          \  }}}}||         }|dz  }||= |d
z   |vrt          
                    d|            Q||d
z            }	||d
z   = |d| d| d| d| d	z  }|d| d| d| d|	 d	z  }d|v rJd|v rF|                    d          }|                    d          }|dz  }|d z  }|d!| dz  }|d"| dz  }d#|v r(|                    d#          }|d$z  }|d%z  }|d&| dz  }d'|v r(|                    d'          }|d(z  }|d)z  }|d*| dz  }|d+z  }|d,z  }|d-z  }|d.z  }d/ |                                D             D ]}|                    d	          \  }}}||         }||= |d
z   |vrt          
                    d0|            K||d
z            }	||d
z   = |d1| d| d| dz  }|d2| d| d|	 dz  }|d3z   |v r ||d3z            }||d3z   = |d4| d| d| dz  }|d5z  }|d6z  }d7 |                                D             D ]9}|                    d	          \  }}}}
||         }||= |d8| d9| d|
 d| d	z  }:|d:z  }|d;z  }d< |                                D             D ]}|                    d	          \  }}}}
||         }||= |d
z   |vrt          
                    d=|            L||d
z            }||d
z   = |d>| d9| d|
 d| d	z  }|d?| d9| d|
 d| d	z  }d@| vs | dA         t          j                    dBz
  k     r7t          j                    | dA<   t          j                                        | d@<   |dCz  }|dDz  }|dE| d@          dz  }|S )FN c                 X    i | ]'\  }}|                                 t          |          (S  )decoder5   ).0r>   r?   s      r   
<dictcomp>z$get_metrics_text.<locals>.<dictcomp>}   s,    fffca

3q66fffr   r   r-   )countz<# HELP eva_api_durations Number and dutrations of API calls
z!# TYPE eva_api_durations summary
c                 f    g | ].}|                     d           |                    d          ,|/S )r.   r   
startswithendswithrJ   is     r   
<listcomp>z$get_metrics_text.<locals>.<listcomp>   s?    kkkAQ\\:L-M-MkVWV`V`aiVjVjkakkkr   r   r   uR   Metrics. Error. Нет записи с количеством API вызовов: z'eva_api_durations_mseconds_sum{method="z",hostname="z
",addlbl="z"} 
z)eva_api_durations_mseconds_count{method="u_   # HELP eva_api_select_count Профайлинг количества запросов в БД
z$# TYPE eva_api_select_count summary
c                 f    g | ].}|                     d           |                    d          ,|/S )r0   r   rN   rQ   s     r   rS   z$get_metrics_text.<locals>.<listcomp>   s?    sssAQ\\:T-U-Us^_^h^hiq^r^rsasssr   zeva_api_select_count{method="z
",action="u   # HELP eva_api_sla Приведенное к еденице специфицированное ожидаемое время выполнения API вызовов
z# TYPE eva_api_sla summary
c                 f    g | ].}|                     d           |                    d          ,|/S )r4   r   rN   rQ   s     r   rS   z$get_metrics_text.<locals>.<listcomp>   s?    jjjAQ\\:K-L-LjUVU_U_`hUiUijajjjr   g     @@z!eva_api_sla_mseconds_sum{method="z#eva_api_sla_mseconds_count{method=""front_cache_indexed_db_size_kbytesz(front_cache_indexed_db_size_kbytes#countuU   # HELP eva_front_cache_indexed_db_size Размер indexed_db в браузерах
z/# TYPE eva_front_cache_indexed_db_size summary
z+eva_front_cache_indexed_db_size_kbytes_sum z-eva_front_cache_indexed_db_size_kbytes_count  front_cache_evicted_by_double_f5u   # HELP eva_front_cache_evicted_by_double_f5_total Количество форс сбросов кеша по двойному f5
z:# TYPE eva_front_cache_evicted_by_double_f5_total counter
z+eva_front_cache_evicted_by_double_f5_total front_cache_evicted_by_quotau   # HELP eva_front_front_cache_evicted_by_quota_total Количество сбросов кеша по превышению квоты
z<# TYPE eva_front_front_cache_evicted_by_quota_total counter
z-eva_front_front_cache_evicted_by_quota_total u{   # HELP eva_prof_triggering Превышения допустимых таймингов в коде под make_prof_point
z## TYPE eva_prof_triggering summary
u   # HELP eva_prof_triggering_total_count Всего замеров, для построения графика Процент сработок
z/# TYPE eva_prof_triggering_total_count counter
c                     g | ]C}|                     d           |                    d          ,|                    d          A|DS )r%   r   r&   rN   rQ   s     r   rS   z$get_metrics_text.<locals>.<listcomp>   sw      F  F  FAQ\\)-D-D  FQZZX`MaMa  Fjkjtjt  vD  kE  kE  Fa  F  F  Fr   ub   Metrics. Error. Нет записи с количеством eva_prof_triggering вызовов: z'eva_prof_triggering_mseconds_sum{name="z)eva_prof_triggering_mseconds_count{name="r&   z&eva_prof_triggering_total_count{name="u?   # HELP eva_deferred_job_counters Счетчики deferred job
z)# TYPE eva_deferred_job_counters counter
c                 <    g | ]}|                     d           |S )r   )rO   rQ   s     r   rS   z$get_metrics_text.<locals>.<listcomp>   s*    QQQAQ\\:O-P-PQaQQQr   z eva_deferred_job_counters{name="z	",queue="uQ   # HELP eva_deferred_job_timings Временные счетчики deferred job
z(# TYPE eva_deferred_job_timings summary
c                 f    g | ].}|                     d           |                    d          ,|/S )r!   r   rN   rQ   s     r   rS   z$get_metrics_text.<locals>.<listcomp>   s?    mmmAQ\\:N-O-OmXYXbXbckXlXlmammmr   uh   Metrics. Error. Нет записи с количеством eva_deferred_job_counters вызовов: z,eva_deferred_job_timings_mseconds_sum{name="z.eva_deferred_job_timings_mseconds_count{name="relation_cache_countrelation_cache_count_timei  u]   # HELP eva_relation_cache_records_total Количество записей в RelationCache
z.# TYPE eva_relation_cache_records_total gauge
z!eva_relation_cache_records_total )r   r   r	   metrics_cacher
   r   
hscan_iterkeyssplitr6   debugpoptimemodelsRelationCacherL   )	app_cacheresall_datar>   r   r:   r<   hostnametotal_durationtotal_countr   r/   indexed_db_size_kbytesindexed_db_size_kbytes_countevicted_by_double_f5rY   _total_duration_mstotal_count2r   r   rL   s                         r   get_metrics_textrt   x   s   + r!I
CffS\-?-J-J=`d-J-e-efffH JJC//Ckk(--//kkk 
J 
J34775>>0f&!!QKX:X%%GGlijllmmmqz*QxZ   K&  K  Kh  K  Kbr  K  K  yG  K  K  K  	K  JF  J  JPX  J  Jdt  J  J  {F  J  J  J  	J mmC22Css(--//sss Q Q;<775>>8f&&{QK  Q  Q  QH  Q  QXh  Q  Qtz  Q  Q  AM  Q  Q  Q  	Q  t  tC))Cjj(--//jjj D D34775>>0f&!!'&0QKX:X%%GGlijllmmmqz*QxZ   EF  E  E  E  E\l  E  E  sA  E  E  E  	E  Df  D  D(  D  D^n  D  Dt  D  D  D  	D ,x77<fjr<r<r!).R!S!S'/||4^'_'_$ggAAW=SWWWW_?[____)X55'||,NOO  T  	TLLU=QUUUU%11'/||4R'S'S$  Y  	YNN_?[____   J  JC11C  \  \C==C F  F(--//  F  F  F n nGGENN4$QKQKX:X%%GG|yz||}}}qz*QxZ o$ooHooZkooookDkkhkk\gkkkk^x''#An$45L>)*mTmmxmm]immmmC MMC77CQQ(--//QQQ g g!"5$qkQKf4ff%ffSYff_bffff__C66Cmm(--//mmm 
w 
w!"5$qkQKX:X%%GG  C  @A  C  C  D  D  D8$QxZ rtrrerr_errknrrrrvvvPUvvagvvmrvvvv Y..)<W2X[_[d[f[fim[m2m2m15	-.,2,@,F,F,H,H	()kkC<<CTy9O/PTTTTCJr   )N)	cmf.includere   r   r   r   r#   r+   rD   rt   rH   r   r   <module>rv      s        8 8 8? ? ?8 8 8? ? ?	@ 	@ 	@F> F> F> F>Rz z z z zr   