
    ?i`                     0    d dl  d dlZd Zd ZddZd Zy)    )*Nc                 |    t         j                  sy t        j                  j                  j                  d| |       y )NEVA_METRICSconfigMETRICS_API_STATS_COLLECTAPPREDIS_DBredishincrbykeyvals     ./cmf/util/metrics.pywrite_counterr      s*    ++LL}c37    c                     t         j                  sy t        j                  j                  j                  d| |       t        j                  j                  j                  d| dz   d       y )Nr   #count   r   r   s     r   write_summaryr      sJ    ++LL}c37LL}c(lA>r   c                 T   t         j                  syt        |dz        }d|  d| dt         j                   }t        j
                  j                  j                  d||       d|  d| dt         j                   d}t        j
                  j                  j                  d|d       y)u/  
    Считает время выполнения API-методов
    В additional_label можно записывать имя доп.метки (например, какое поле обновляли у заначи или в каком формате запросили выгрузку)
    N  api_time_time______r   r   r   )r   r   intHOSTNAME_FQDNr	   r
   r   r   )methoddurationadditional_labelmsecsr   s        r   write_api_timer!      s    
 ++EVHC(8'9V=Q=Q<R
SCLL}c59VHC(8'9V=Q=Q<RRX
YCLL}c15r   c                     t         j                  syt        j                  } d}t        j                  j
                  j                  dd      D ci c]  \  }}|j                         t        |      ! }}}|dz  }|dz  }|j                         D cg c](  }|j                  d      s|j                  d      r'|* c}D ]r  }|j                  d	      \  }}}}	||   }
||= |dz   |vrt        j                  d
|        A||dz      }||dz   = |d| d|	 d| d|
 d	z  }|d| d|	 d| d| d	z  }t d|v rBd|v r>|j                  d      }|j                  d      }|dz  }|dz  }|d| dz  }|d| dz  }d|v r$|j                  d      }|dz  }|dz  }|d| dz  }d|v r$|j                  d      }|dz  }|dz  }|d| dz  }d| vs| d    t!        j                          d!z
  k  r8t!        j                          | d <   t"        j$                  j'                         | d<   |d"z  }|d#z  }|d$| d    dz  }|S c c}}w c c}w )%N r   r   )countz<# HELP eva_api_durations Number and dutrations of API calls
z!# TYPE eva_api_durations summary
r   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=""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 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decoder   keys
startswithendswithsplitgdebugpoptimemodelsRelationCacher$   )	app_cachereskvall_datainamer   r   hostnametotal_durationtotal_countindexed_db_size_kbytesindexed_db_size_kbytes_countevicted_by_double_f5r(   s                   r   get_metrics_textrE   &   s<   ++!!I
C-0\\-?-?-J-J=`d-J-efca
3q6!fHf JJC//C"--/kAQ\\:L-MVWV`V`aiVjak 
J34775>0f&!!QKX:X%GGhijhklmqz*QxZ 9&hZWabrassw  yG  xH  HJ  K  	K;F8<PXzYcdtcuuy  {F  zG  GI  J  	J
J ,x7<fjr<r!).R!S'/||4^'_$ggAA<=S<TTVWW>?[>\\^__)X5'||,NO  T  	TLL<=Q<RRTUU%1'/||4R'S$  Y  	YNN>?[>\\^__
 Y.)<W2X[_[d[d[fim[m2m15	-.,2,@,@,F,F,H	()kkC<<C.y9O/P.QQSTTCJ_ g
 ls   $II,I>I)N)cmf.includer5   r   r   r!   rE    r   r   <module>rH      s     8?64r   