bgJddlmZddlmZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZ en #e$reZYnwxYwd ZGd d eZd d ZdS))unicode_literals) defaultdictN)Metric) MmapedDict)Sample)floatToGoStringzMultiprocess metriccdeZdZdZd dZed dZedZedZdZ dS) MultiProcessCollectorz+Collector for files for multi-process mode.Nc|tjd}|rtj|st d||_|r||dSdS)Nprometheus_multiproc_dirz:env prometheus_multiproc_dir is not set or not a directory)osenvirongetpathisdir ValueError_pathregister)selfregistryrs o/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/prometheus_client/multiprocess.py__init__zMultiProcessCollector.__init__s| <:>>"<==D [27==.. [YZZ Z  $   d # # # # # $ $Tclt|}t||S)zMerge metrics from given mmap files. By default, histograms are accumulated, as per prometheus wire format. But if writing the merged data back to mmap files, use accumulate=False to avoid compound accumulation. )r _read_metrics_accumulate_metrics)files accumulatemetricss rmergezMultiProcessCollector.merge!s-(55e<<$88*MMMrcPi}ifd}|D]}tj|d}|d} t j|}n!#t $r|dkr |ddvrYowxYw|D]\}}} ||\} } } } || }|t| t|}||| <|dkr;|ddd}|d|_ | | | d |ffz|| | | ||S) Nc|}|sQtj|\}}}tt |}||||fx}|<|SN)rjsonloadstuplesorteditems)keyval metric_namenamelabels labels_key key_caches r _parse_keyz7MultiProcessCollector._read_metrics.._parse_key1sj--$$C O,0JsOO) T6"6&,,..#9#9:: (3T6:'NNinJr_rgauger)livealllivesumpid) rrbasenamesplitrread_all_values_from_fileFileNotFoundErrorrrMP_METRIC_HELP_multiprocess_mode add_sample)rr r1fpartstyp file_valuesr*valueposr,r-r.r/metricr8r0s @rrz#MultiProcessCollector._read_metrics,s       ? ?AG$$Q''--c22E(C (B1EE $   '>>eAh2H&H&HH  $/ ? ?UC8B 35 T6: [11>#KEEF+1GK('>>(3B3-C05aF-%%dJ5#,,H%PPPP%%dJ>>>> ?s A  A><A>c p|D] }tt}td}|j}|jD]#}|\}}} } } |jdkr|t d|Df} |jdkr|| | } | | kr| || <T|jdkr|| | } | | kr| || <w|jdkr|| xx| z cc<| |||f<|jdkrk|D]T}|dd krFt|d }t d |D}|||xx| z cc<nU|||fxx| z cc<|||fxx| z cc<%|jdkr|D]p\}}d }t|D]6\}} |j d z|d t|ffzf}|r || z }|||<1| ||<7|r|||j dz|f<qd|D|_|S)Nc*ttSr$)rfloatrrz;MultiProcessCollector._accumulate_metrics..Zs+e*<*<rr3c*g|]}|ddk|S)rr8rJ.0ls r z=MultiProcessCollector._accumulate_metrics.._s"3W3W3W!1QVArminmaxr5 histogramrlerc32K|]}|ddk|VdS)rrTNrJrMs r z.ts*.Q.QQAaDDLLqLLLL.Q.Qrg_bucket_countcVg|]&\\}}}t|t||'SrJ)rdict)rNname_r.rDs rrPz=MultiProcessCollector._accumulate_metrics..s4oooE[_eVV[fUDLL%@@ooor) valuesrrI setdefaultsamplestyper'r>r)r(r-r )r rrFr^bucketssamples_setdefaultsr-r.rD timestampexemplarwithout_pid_keycurrentrO bucket_value without_ler\accbucket sample_keys rrz)MultiProcessCollector._accumulate_metricsVsnn&&8 p8 pF!%((G!"<"<==G!(!3 ^ 5 5;<8feY;'))'+U3W3Wv3W3W3W-X-X&YO0E99"4"4_e"L"L 7??7rs''''''###### !!!!!!""""""     '@2@2@2@2@2F@2@2@2Fs 5??