
    .`i
                         U d dl Z d dlZd dlmZmZmZ d dlmZ  ee          Z	da
ej        dz  ed<   d ZdefdZd Zd	 ZdS )
    N)REGISTRYCollectorRegistrymultiprocess)init_logger_prometheus_multiproc_dirc                      dt           j        vrSt          j                    at          j        t           j        d<   t                              dt          j                   dS t                              d           dS )zFSet up prometheus multiprocessing directory if not already configured.PROMETHEUS_MULTIPROC_DIRz&Created PROMETHEUS_MULTIPROC_DIR at %szFound PROMETHEUS_MULTIPROC_DIR was set by user. This directory must be wiped between vLLM runs or you will find inaccurate metrics. Unset the variable and vLLM will properly handle cleanup.N)	osenvirontempfileTemporaryDirectoryr   nameloggerdebugwarning     n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/v1/metrics/prometheus.pysetup_multiprocess_prometheusr      s     "33 %-$?$A$A!1J1O
-.46O6T	
 	
 	
 	
 	
 	5	
 	
 	
 	
 	
r   returnc                      t          j        d          >t                              d           t	                      } t          j        |            | S t          S )zGet the appropriate prometheus registry based on multiprocessing
    configuration.

    Returns:
        Registry: A prometheus registry
    r	   Nz2Using multiprocess registry for prometheus metrics)r
   getenvr   r   r   r   MultiProcessCollectorr   )registrys    r   get_prometheus_registryr   '   sN     
y+,,8IJJJ$&&*8444Or   c                      t           } t          | j                  D ]0}t          |d          rd|j        v r|                     |           1dS )a  Unregister any existing vLLM collectors from the prometheus registry.

    This is useful for testing and CI/CD where metrics may be registered
    multiple times across test runs.

    Also, in case of multiprocess, we need to unregister the metrics from the
    global registry.
    _namevllmN)r   list_collector_to_nameshasattrr   
unregister)r   	collectors     r   unregister_vllm_metricsr$   7   s`     H(677 + +	9g&& 	+6Y_+D+D	***+ +r   c                  $   t           } | dS 	 t          j                    }t          j        ||            t
                              d|           dS # t          $ r3}t
                              dt          |                     Y d}~dS d}~ww xY w)zShutdown prometheus metrics.Nz0Marked Prometheus metrics for process %d as deadz Error during metrics cleanup: %s)
r   r
   getpidr   mark_process_deadr   r   	Exceptionerrorstr)pathpides      r   shutdown_prometheusr.   G   s     %D|Aikk&sD111GMMMMM A A A7Q@@@@@@@@@As   AA 
B(B

B)r
   r   prometheus_clientr   r   r   vllm.loggerr   __name__r   r   r   __annotations__r   r   r$   r.   r   r   r   <module>r3      s    
				  G G G G G G G G G G # # # # # #	X		 AE 86= D D D
 
 
,!2     + + + A A A A Ar   