Monitoramento vLLM
vLLM é uma estrutura de código aberto para otimizar e acelerar a inferência de grandes modelos de linguagem (LLM). Monitore sua infraestrutura do vLLM com o Instana, coletando métricas de desempenho para obter visibilidade sobre a utilização de recursos, a taxa de transferência, a latência e o estado geral do sistema em suas implantações de LLM.
Pré-requisitos
Python 3.10 ou posterior
vLLM 0.6.3.post1 ou posterior
Acesso a um agente ou backend d Instana
Configurando Variáveis de Ambiente
Configure seu ambiente para exportar rastreamentos para Instana usando o modo com agente ou o modo sem agente.
Modo do agente
Exportar registros por meio de um agente do Instana :
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://<instana-agent-host>:4317"
export OTEL_SERVICE_NAME="<your-service-name>"
Modo sem agente
Exporte os traços diretamente para o backend do Instana :
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://<otlp-acceptor-domain>:4317"
export OTEL_EXPORTER_OTLP_HEADERS="x-instana-key=<agent-key>"
export OTEL_SERVICE_NAME="<your-service-name>"
Para terminais sem o ` TLS `, defina:
export OTEL_EXPORTER_OTLP_INSECURE=true
Para obter informações sobre os pontos de extremidade do backend ` Instana `, consulte os pontos de extremidade do backend `otlp-acceptor` do ` Instana `.
Instalando dependências
Verifique a versão do Python :
python3 -V(Opcional) Crie um ambiente virtual:
pip3 install virtualenv virtualenv vllm-env source vllm-env/bin/activateInstalar o vLLM:
pip3 install vllm==0.6.3.post1Para métodos alternativos de instalação, consulte a documentação do vLLM.
- Instale os pacotes d OpenTelemetry :
pip3 install 'opentelemetry-sdk>=1.26.0,<1.27.0' 'opentelemetry-api>=1.26.0,<1.27.0' 'opentelemetry-exporter-otlp>=1.26.0,<1.27.0' 'opentelemetry-semantic-conventions-ai>=0.4.1,<0.5.0'
Implementação de monitoramento em aplicações do tipo “ vLLM ”
Iniciando o servidor do vLLM
Implemente o ` vLLM ` como um servidor independente com pontos de extremidade ` API `. Se você quiser dar uma olhada no aplicativo cliente, pode experimentar a implementação de exemplo fornecida abaixo.
Inicie o servidor do ` vLLM `:
vllm serve ibm-granite/granite-3.0-2b-instruct --otlp-traces-endpoint="$OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"
Criação de um aplicativo cliente
Crie um aplicativo cliente para enviar solicitações ao servidor vLLM :
import requests
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
from opentelemetry.trace import SpanKind, set_tracer_provider
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
# Configure OpenTelemetry
trace_provider = TracerProvider()
set_tracer_provider(trace_provider)
trace_provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
trace_provider.add_span_processor(BatchSpanProcessor(ConsoleSpanExporter()))
tracer = trace_provider.get_tracer("vllm-client")
vllm_url = "http://localhost:8000/v1/completions"
with tracer.start_as_current_span("client-span", kind=SpanKind.CLIENT) as span:
prompt = "San Francisco is a"
span.set_attribute("prompt", prompt)
headers = {}
TraceContextTextMapPropagator().inject(headers)
payload = {
"model": "ibm-granite/granite-3.0-2b-instruct",
"prompt": prompt,
"max_tokens": 10,
"n": 1,
"best_of": 1,
"use_beam_search": "false",
"temperature": 0.0,
}
response = requests.post(vllm_url, headers=headers, json=payload)
print(response)

Visualização de traços no Instana
Após executar sua aplicação, os dados aparecerão no painel de observabilidade da Gen AI do Instana. Você pode analisar chamadas por aplicativo, serviço e ponto de extremidade, além de visualizar registros juntamente com informações de rastreamento.
Para obter mais detalhes sobre como visualizar e analisar traços, consulte Visualização de dados de telemetria.
Coleta de métricas do vLLM
Você pode coletar métricas do vLLM usando uma das seguintes opções:
Opção 1: Utilização de um coletor de dados do OTel para o vLLM (ODCV)
O ODCV coleta métricas do OpenTelemetry a partir do vLLM com base em convenções semânticas predefinidas.
Pré-requisitos
Java SDK 11 ou posterior
Verifique a instalação:
java -version
Procedimento
Baixe o pacote ODCV mais recente:
wget https://github.com/instana/otel-dc/releases/download/v1.0.7/otel-dc-vllm-1.0.0.tarExtraia o pacote:
tar xf otel-dc-vllm-1.0.0.tar cd otel-dc-vllm-1.0.0Configurar
config/config.yaml:vi config/config.yamlAtualize estes campos:
otel.agentless.mode: Modo de conexão (truepara sem agente,falsepara com agente)otel.backend.url: Endpoint gRPC para o backend ou agente Instanacallback.interval: Intervalo de envio de dados em segundosotel.service.name: Nome do coletor de dadosotel.vllm.metrics.url: Endpoint de métricas do servidor vLLM (utilize-ohttpsse o TLS estiver ativado)
Para o modo sem agente: (
otel.agentless.mode: true):otel.backend.url: Ponto de extremidade do aceitador OTLP no backend (por exemplo,http://<instana-otlp-endpoint>:4317)Use
https://para pontos de extremidade SaaS habilitados para o TLSConsulte os pontos de extremidade do backend otlp-acceptor do Instana.
Para o modo agente: (
otel.agentless.mode: false):otel.backend.url: Endpoint do agente Instana (por exemplo,http://<instana-agent-host>:4317)
(Opcional) Configurar o registro de logs:
vi config/logging.properties- Execute o Coletor de Dados:
nohup ./bin/otel-dc-vllm >/dev/null 2>&1 &Como alternativa, use
tmuxouscreenpara execução em segundo plano.
Opção 2: Utilização do coletor de dados de código aberto OpenTelemetry
Você pode encaminhar dados do ` OpenTelemetry ` do ` vLLM ` para um agente do ` Instana ` ou um backend do ` Instana ` usando o coletor ` OpenTelemetry `.
Você pode usar um dos seguintes coletores do OpenTelemetry :
Instana Distribuição do coletor OpenTelemetry ( IDOT ) — Uma distribuição pré-configurada e otimizada que simplifica a configuração do monitoramento do vLLM. Para mais informações, consulte IDOT e o projeto OpenTelemetry
Um coletor de dados de telemetria de código aberto ( OpenTelemetry ) — O componente central do ecossistema OpenTelemetry, oferecendo funções independentes de fornecedores para a coleta, o processamento e a exportação de dados de telemetria. Para implantações personalizadas ou ambientes em que o IDOT não está disponível. Para obter mais informações, consulte o coletor OpenTelemetry.
Instana suporta os seguintes modelos para coleta de dados:
Modelo de agente - Os dados são enviados primeiro ao agente Instana, e o agente auxilia na agregação dos dados e no envio para o backend Instana.
Modelo sem agente - Os dados são enviados diretamente para o backend do Instana, sem passar pelo agente.
Envio de dados de telemetria para um agente do Instana (modelo de agente)
O trecho a seguir mostra uma configuração típica do coletor OpenTelemetry para encaminhar dados de telemetria a um agente local no host Instana, utilizando o protocolo OTLP / HTTP. Crie um arquivo ` YAML `, como ` config.yaml `, da seguinte maneira:
receivers:
otlp/receiver:
protocols:
grpc:
prometheus:
config:
scrape_configs:
- job_name: 'prometheus-scrape'
scrape_interval: 10s
static_configs:
- targets:
- "$(PROMETHEUS_METRICS_ENDPOINT)"
metrics_path: '/metrics'
processors:
batch: {}
resource:
attributes:
- key: service.name
value: vllm
action: insert
- key: service.namespace
value: genai
action: insert
- key: service.instance.id
value: <vllm-host>
action: insert
- key: server.address
value: <vllm-host-address>
action: insert
- key: server.port
value: "8000"
action: insert
- key: vllm.entity.type
value: vllm
action: insert
- key: INSTANA_PLUGIN
value: vllm
action: insert
exporters:
otlphttp:
endpoint: "http://$(INSTANA_AGENT_HOST):4318"
tls:
insecure: true
service:
pipelines:
metrics/prometheus:
receivers: [prometheus]
processors: [resource, batch]
exporters: [otlphttp]
PROMETHEUS_METRICS_ENDPOINT representa o endpoint do qual as métricas d vLLM serão extraídas. Por exemplo, o valor é 9.60.233.77:8000.
O exemplo a seguir mostra uma configuração típica do coletor OpenTelemetry para o encaminhamento de dados de telemetria a um agente local do host Instana, utilizando o protocolo OTLP /grpc.
exporters:
otlp:
endpoint: "$(INSTANA_AGENT_HOST):4317"
tls:
insecure: true
Defina o campo PROMETHEUS_METRICS_ENDPOINT com o endpoint do exportador de métricas vLLM.
Defina o campo INSTANA_AGENT_HOST com o endereço IP ou o nome do host do agente do Instana ao qual deseja se conectar.
Instana utiliza números de porta padrão d OTLP, como 4317 para OTLP/gRPC e 4318 para OTLP / HTTP.
Depois de concluir todas as alterações de configuração no arquivo ` config.yaml `, execute o seguinte comando para usar o coletor ` OpenTelemetry `:
docker run -d -p 4317:4317 -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest
Envio de dados de telemetria para o backend do Instana (modelo sem agente)
Para encaminhar dados do ` OpenTelemetry ` para o backend do ` Instana ` usando o coletor ` OpenTelemetry `, siga estas etapas:
Crie um arquivo ` YAML `, como ` config.yaml `, da mesma forma que na seção anterior. Altere o endpoint de Instana (endpoint do agente) para Instana (endpoint do backend). Os pontos de extremidade especiais do componente backend otlp-acceptor são utilizados quando os dados OpenTelemetry são enviados. O backend do Instana requer uma chave de agente do Instana para validação.
exporters: otlp: endpoint: INSTANA_OTLP_GRPC_BACKEND:4317 headers: x-instana-key: xxxxxxx x-instana-host: xxxxNota:Defina o
INSTANA_OTLP_GRPC_BACKENDcampo com o nome de domínio correto dootlp-acceptorcomponente do backend do Instana.otlp-acceptorPara obter mais informações sobre o endpoint do backend Instana, consulte Endpoints do backend otlp-acceptor do Instana auto-hospedado ou Endpoints do backend otlp-acceptor do SaaS InstanaDefina o
x-instana-keycampo com a chave do agente do Instana para direcionar para o backend Instana. Para encontrar sua chave de agente, clique em “Mais” > “Agentes” na barra de navegação da interface do usuário do Instana e, em seguida, clique em “Instalar agentes” > “ Windows ”.host.idDefina ox-instana-hostcampo com o ID do host caso nenhum atributo de recurso,faas.id, oudevice.idesteja definido em sua aplicação ou sistema.Instana utiliza números de porta padrão d OTLP, como 4317 para
OTLP/gRPCe 4318 paraOTLP/HTTP. A porta 443 também é compatível comOTLP/HTTP.
Depois de concluir todas as alterações de configuração no
config.yamlarquivo, execute o seguinte comando para usar o coletor OpenTelemetry :docker run -d -p 4317:4317 -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest
Visualizando métricas do vLLM no Instana
Após configurar a coleta de métricas usando qualquer uma das opções:
Na interface do usuário do Instana, acesse Infraestrutura > Analisar infraestrutura
Selecione “ OTel ” e “ vLLMonitor ” entre os tipos de entidade
Clique em uma instância do OTel vLLMonitor para visualizar seu painel

Resolução de problemas
Informações sobre como solucionar erros de handshake no protocolo SSL.
SSL erros de handshake
Se você encontrar erros do tipo “ SSL ”, tais como:
Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
Defina as seguintes opções para exportar dados sem o ` TLS `:
export OTEL_EXPORTER_OTLP_INSECURE=true
Próximas etapas
Configurar alertas para métricas de desempenho do ` vLLM `
Explore a correlação de rastreamento entre o cliente e o servidor
Consulte OpenTelemetry para configurações avançadas
- Monitore o vLLM em Kubernetes ou OpenShift, implantando um coletor do OTel para coletar métricas de pods