o
    -i                     @   s  U d dl Z d dlmZ d dlmZ d dlmZ ddgZeeZ	dZ
dZedB ed< z,d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ dZ
W n- ey   d dlZe ZG dd dZG dd dZG dd dZG dd dZY nw de fddZ!dedededB fddZ"dd  Z#d!eeef dB dedB fd"d#Z$d!eeef deeef fd$d%Z%G d&d' d'Z&d!eeef de fd(d)Z'ed,d*d+Z(dS )-    N)Mapping)init_logger)run_oncetraceparent
tracestateFotel_import_error_traceback)Context)"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL)TracerProvider)BatchSpanProcessor)SpanKindTracerset_tracer_provider)TraceContextTextMapPropagatorTc                   @      e Zd ZdS )r   N__name__
__module____qualname__ r   r   I/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/tracing.pyr   &       r   c                   @   r   )BaseSpanAttributesNr   r   r   r   r   r   )   r   r   c                   @   r   )r   Nr   r   r   r   r   r   ,   r   r   c                   @   r   )r   Nr   r   r   r   r   r   /   r   r   returnc                   C   s   t S N)_is_otel_importedr   r   r   r   is_otel_available3   s   r   instrumenting_module_nameotlp_traces_endpointc                 C   sF   t  s
tdt t }t|}|t| t| || }|S )Nz|OpenTelemetry is not available. Unable to initialize a tracer. Ensure OpenTelemetry packages are installed. Original error:
)	r   
ValueErrorr   r
   get_span_exporteradd_span_processorr   r   
get_tracer)r   r   trace_providerspan_exportertracerr   r   r   init_tracer7   s   
r&   c                 C   sT   t jtd}|dkrddlm} n|dkrddlm} ntd| d|| dS )Ngrpcr   )OTLPSpanExporterzhttp/protobufzUnsupported OTLP protocol 'z' is configured)endpoint)osenvirongetr	   5opentelemetry.exporter.otlp.proto.grpc.trace_exporterr(   5opentelemetry.exporter.otlp.proto.http.trace_exporterr   )r)   protocolr(   r   r   r   r    J   s   
r    headersc                 C   s   t  r| pi } t | S d S r   )r   r   extractr0   r   r   r   extract_trace_contextZ   s   r3   c                    s    fddt D S )Nc                    s   i | ]}| v r| | qS r   r   .0hr2   r   r   
<dictcomp>c   s    z)extract_trace_headers.<locals>.<dictcomp>)TRACE_HEADERSr2   r   r2   r   extract_trace_headersb   s   r9   c                   @   sT   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdS )SpanAttributeszgen_ai.usage.completion_tokenszgen_ai.usage.prompt_tokenszgen_ai.request.max_tokenszgen_ai.request.top_pzgen_ai.request.temperaturezgen_ai.response.modelzgen_ai.request.idzgen_ai.request.nzgen_ai.usage.num_sequenceszgen_ai.latency.time_in_queuez"gen_ai.latency.time_to_first_tokenzgen_ai.latency.e2ez gen_ai.latency.time_in_schedulerz$gen_ai.latency.time_in_model_forwardz$gen_ai.latency.time_in_model_executez$gen_ai.latency.time_in_model_prefillz#gen_ai.latency.time_in_model_decodez&gen_ai.latency.time_in_model_inferenceN)r   r   r   GEN_AI_USAGE_COMPLETION_TOKENSGEN_AI_USAGE_PROMPT_TOKENSGEN_AI_REQUEST_MAX_TOKENSGEN_AI_REQUEST_TOP_PGEN_AI_REQUEST_TEMPERATUREGEN_AI_RESPONSE_MODELGEN_AI_REQUEST_IDGEN_AI_REQUEST_NGEN_AI_USAGE_NUM_SEQUENCESGEN_AI_LATENCY_TIME_IN_QUEUE"GEN_AI_LATENCY_TIME_TO_FIRST_TOKENGEN_AI_LATENCY_E2E GEN_AI_LATENCY_TIME_IN_SCHEDULER$GEN_AI_LATENCY_TIME_IN_MODEL_FORWARD$GEN_AI_LATENCY_TIME_IN_MODEL_EXECUTE$GEN_AI_LATENCY_TIME_IN_MODEL_PREFILL#GEN_AI_LATENCY_TIME_IN_MODEL_DECODE&GEN_AI_LATENCY_TIME_IN_MODEL_INFERENCEr   r   r   r   r:   f   s&    r:   c                    s   t  fddtD S )Nc                 3   s    | ]}| v V  qd S r   r   r4   r2   r   r   	<genexpr>   s    z)contains_trace_headers.<locals>.<genexpr>)anyr8   r2   r   r2   r   contains_trace_headers   s   rO   c                   C   s   t d d S )Nz=Received a request with trace context but tracing is disabled)loggerwarningr   r   r   r   log_tracing_disabled_warning   s   rR   )r   N))r*   collections.abcr   vllm.loggerr   vllm.utils.func_utilsr   r8   r   rP   r   r   str__annotations__opentelemetry.context.contextr   'opentelemetry.sdk.environment_variablesr	   opentelemetry.sdk.tracer
   opentelemetry.sdk.trace.exportr   opentelemetry.tracer   r   r   ,opentelemetry.trace.propagation.tracecontextr   ImportError	traceback
format_excr   boolr   r&   r    r3   r9   r:   rO   rR   r   r   r   r   <module>   sN   

""