§ 1jJãó°—ddlmZddlmZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZ en #e$reZYnwxYwd ZGd „d e¦«Zd d „ZdS)é)Úunicode_literals)Ú defaultdictNé)ÚMetric)Ú MmapedDict)ÚSample)ÚfloatToGoStringzMultiprocess metriccód—eZdZdZd d„Zed d„¦«Zed„¦«Zed„¦«Zd„Z dS) ÚMultiProcessCollectorz+Collector for files for multi-process mode.Ncóè—|€tj d¦«}|rtj |¦«st d¦«‚||_|r| |¦«dSdS)NÚprometheus_multiproc_dirz:env prometheus_multiproc_dir is not set or not a directory)ÚosÚenvironÚgetÚpathÚisdirÚ ValueErrorÚ_pathÚregister)ÚselfÚregistryrs úp/builddir/build/BUILD/cloudlinux-venv-1.0.11/venv/lib/python3.11/site-packages/prometheus_client/multiprocess.pyÚ__init__zMultiProcessCollector.__init__s|€Ø ˆ<Ý”:—>’>Ð"<Ñ=Ô=ˆDØð [�2œ7Ÿ=š=¨Ñ.Ô.ð [ÝÐYÑZÔZÐ Z؈Œ Ø ð $Ø × Ò ˜dÑ #Ô #Ð #Ð #Ð #ð $ð $óTcól—t |¦«}t ||¦«S)zõMerge 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Ú accumulateÚmetricss rÚmergezMultiProcessCollector.merge!s-€õ(×5Ò5°eÑ<Ô<ˆÝ$×8Ò8¸À*ÑMÔMÐMrcóP‡—i}iŠˆfd„}|D�]}tj |¦« d¦«}|d} t j|¦«}n!#t $r|dkr |ddvrYŒo‚wxYw|D] \}}} ||¦«\} } } } | | ¦«}|€t| t|¦«}||| <|dkr;|ddd…}|d|_ |  | | d |ffz|¦«Œ‰|  | | |¦«Œ¡�Œ|S) NcóØ•—‰ |¦«}|sQtj|¦«\}}}tt | ¦«¦«¦«}||||fx}‰|<|S©N)rÚjsonÚloadsÚtupleÚsortedÚitems)ÚkeyÚvalÚ metric_nameÚnameÚlabelsÚ labels_keyÚ key_caches €rÚ _parse_keyz7MultiProcessCollector._read_metrics.._parse_key1sjø€Ø—-’- Ñ$Ô$ˆCØð OÝ,0¬J°s©O¬OÑ)� ˜T 6Ý"¥6¨&¯,ª,©.¬.Ñ#9Ô#9Ñ:Ô:� Ø(3°T¸6À:Ð'NÐN��i ‘n؈JrÚ_rÚgauger)ÚliveallÚlivesumééýÿÿÿÚpid) rrÚbasenameÚsplitrÚread_all_values_from_fileÚFileNotFoundErrorrrÚMP_METRIC_HELPÚ_multiprocess_modeÚ add_sample)rr r1ÚfÚpartsÚtypÚ file_valuesr*ÚvalueÚposr,r-r.r/Úmetricr8r0s @rrz#MultiProcessCollector._read_metrics,sŠø€àˆØˆ ð ð ð ð ð ðð ?ñ ?ˆAÝ”G×$Ò$ QÑ'Ô'×-Ò-¨cÑ2Ô2ˆEؘ”(ˆCð Ý(ÔBÀ1ÑEÔE� � øÝ$ð ð ð Ø˜'’>�> e¨A¤hÐ2HÐ&HÐ&Hð�HØð  øøøð$/ð ?ð ?‘��U˜CØ8B¸ À3¹¼Ñ5� ˜T 6¨:à Ÿš [Ñ1Ô1�Ø�>Ý# KµÀÑEÔE�FØ+1�G˜KÑ(à˜'’>�>Ø œ( 3 B 3œ-�CØ05°a´�FÔ-Ø×%Ò% d¨J¸5À#¸,¸Ñ,HÈ%ÑPÔPÐPÐPð×%Ò% d¨J¸Ñ>Ô>Ð>Ð>ñ ?ðˆsÁ A Á A>Á<A>c óp—| ¦«D�] }tt¦«}td„¦«}|j}|jD�]#}|\}}} } } |jdkr…|t d„|D¦«¦«f} |jdkr|| | ¦«} | | kr| || <ŒT|jdkr|| | ¦«} | | kr| || <Œw|jdkr|| xx| z cc<Œ“| |||f<Œ›|jdkrk|D]T}|dd krFt|d ¦«}t d „|D¦«¦«}|||xx| z cc<nŒU|||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ó*—tt¦«Sr$)rÚfloat©rrúz;MultiProcessCollector._accumulate_metrics..Zs€­+µeÑ*<Ô*<€rr3có*—g|]}|ddk¯|‘ŒS)rr8rJ©Ú.0Úls rú z=MultiProcessCollector._accumulate_metrics.._s"€Ð3WÐ3WÐ3W¸!ÈÈ1ÌÐQVÊȰAÈÈÈrÚminÚmaxr5Ú histogramrÚlerc3ó2K—|]}|ddk¯|V—ŒdS)rrTNrJrMs rú z.ts*èè€Ð.QÐ.Q°QÀAÀaÄDÈDÂLÀL¨qÀLÀLÀLÀLÐ.QÐ.QrgÚ_bucketÚ_countcóV—g|]&\\}}}t|t|¦«|¦«‘Œ'SrJ)rÚdict)rNÚname_r.rDs rrPz=MultiProcessCollector._accumulate_metrics..�s4€ÐoÐoÐoÑE[Á_ÀeÈVÐV[�f U­D°©L¬L¸%Ñ@Ô@ÐoÐoÐor) ÚvaluesrrIÚ setdefaultÚsamplesÚtyper'r>r)r(r-r )r rrFr^ÚbucketsÚsamples_setdefaultÚsr-r.rDÚ timestampÚexemplarÚwithout_pid_keyÚcurrentrOÚ bucket_valueÚ without_ler\ÚaccÚbucketÚ sample_keys rrz)MultiProcessCollector._accumulate_metricsVs€à—n’nÑ&Ô&ð8 pñ8 pˆFÝ!¥%Ñ(Ô(ˆGÝ!Ð"<Ð"<Ñ=Ô=ˆGØ!(Ô!3Ð Ø”^ð 5ñ 5�Ø;<Ñ8��f˜e Y°Ø”; 'Ò)Ð)Ø'+­UÐ3WÐ3W¸vÐ3WÑ3WÔ3WÑ-XÔ-XÐ&Y�OØÔ0°EÒ9Ð9Ø"4Ð"4°_ÀeÑ"LÔ"L˜Ø  7š?˜?Ø7<˜G OÑ4øØÔ2°eÒ;Ð;Ø"4Ð"4°_ÀeÑ"LÔ"L˜Ø  7š?˜?Ø7<˜G OÑ4øØÔ2°iÒ?Ð?Ø Ð0Ð0Ô0°EÑ9Ð0Ð0Ñ0Ð0à27˜  v Ñ/Ð/à”[ KÒ/Ð/ð$ð 9ð 9˜Ø˜Qœ4 4š<˜<Ý+0°°1´©;¬;˜Lå).Ð.QÐ.Q¸&Ð.QÑ.QÔ.QÑ)QÔ)Q˜JØ# JÔ/° Ð=Ð=Ô=ÀÑFÐ=Ð=Ñ=Ø!˜Eð (ð   v Ð/Ð/Ô/°5Ñ8Ð/Ð/Ñ/ùð˜T 6˜NÐ+Ð+Ô+¨uÑ4Ð+Ð+Ñ+Ñ+ðŒ{˜kÒ)Ð)Ø&-§m¢m¡o¤oð Hð H‘N�F˜FØ�CÝ)/°· ² ±´Ñ)?Ô)?ð 8ð 8™ ˜ à"œK¨)Ñ3Ø" t­_¸VÑ-DÔ-DÐ&EÐ%GÑGð&˜ ð&ð8Ø 5™L˜CØ25˜G JÑ/Ð/à27˜G JÑ/Ð/Ø!ðHØDG˜ ¤¨xÑ!7¸Ð @ÑAøðpÐoÐ_f×_lÒ_lÑ_nÔ_nÐoÑoÔoˆFŒN‰NØ�~Š~ÑÔÐrcóž—tjtj |jd¦«¦«}| |d¬¦«S)Nz*.dbT)r)ÚglobrrÚjoinrr!)rrs rÚcollectzMultiProcessCollector.collect“s9€Ý” �"œ'Ÿ,š, t¤z°6Ñ:Ô:Ñ;Ô;ˆØ�zŠz˜%¨DˆzÑ1Ô1Ð1rr$)T) Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚ staticmethodr!rrrorJrrr r s™€€€€€Ø5Ð5ð$ð$ð$ð$ððNðNðNñ„\ðNðð'ð'ñ„\ð'ðRð: ð: ñ„\ð: ðx2ð2ð2ð2ð2rr có¸—|€tj d¦«}tjtj |d |¦«¦«¦«D]}tj|¦«Œtjtj |d |¦«¦«¦«D]}tj|¦«ŒdS)zBDo bookkeeping for when one process dies in a multi-process setup.Nr zgauge_livesum_{0}.dbzgauge_liveall_{0}.db)rrrrmrrnÚformatÚremove)r8rr@s rÚmark_process_deadrx˜s³€à €|ÝŒz�~Š~Ð8Ñ9Ô9ˆÝ ŒY•r”w—|’| DÐ*@×*GÒ*GÈÑ*LÔ*LÑMÔMÑ NÔ NððˆÝ Œ �!‰ Œ ˆ ˆ Ý ŒY•r”w—|’| DÐ*@×*GÒ*GÈÑ*LÔ*LÑMÔMÑ NÔ NððˆÝ Œ �!‰ Œ ˆ ˆ ððrr$)Ú __future__rÚ collectionsrrmr%rÚ metrics_corerÚ mmap_dictrr^rÚutilsr r<Ú NameErrorÚIOErrorr=Úobjectr rxrJrrúr�sðØ'Ð'Ð'Ð'Ð'Ð'à#Ð#Ð#Ð#Ð#Ð#Ø € € € Ø € € € Ø € € € à Ð Ð Ð Ð Ð Ø!Ð!Ð!Ð!Ð!Ð!ØÐÐÐÐÐØ"Ð"Ð"Ð"Ð"Ð"ð ØÐÐøØð ð ð ØÐÐÐð øøøð'€ð@2ð@2ð@2ð@2ð@2˜Fñ@2ô@2ð@2ðFðððððs ²5µ?¾?