🔭 Opentelemetria
Nullcore suportaRastreamento e métricas distribuídasExportar através do protocolo OPENTELETRIA (OTEL) (OTLP). Isso permite integração com pilhas de observabilidade modernas, comoGrafana LGTM (Loki, Grafana, Tempo, Mimir), assim comoJaeger, Assim,Tempo, ePrometeuPara monitorar solicitações, consultas de banco de dados/redis, tempos de resposta e muito mais em tempo real.
🚀 Comece rápido com o Docker Compose
A maneira mais rápida de começar com a observabilidade é com a composição pré-configurada do docker:
# Spin Up Nullcore e a mais recente pilha LGTM Grafana, all-in-one
Docker Compose -f Docker-compose.otel.yaml up -d
Odocker-compose.otel.yaml
Arquivo configura estes componentes:
Serviço | Portos (s) | Descrição |
---|---|---|
Grafana | 3000 (UI), 4317 (OTLP/GRPC), 4318 (HTTP) | Grafana LGTM (Loki+Grafana+Tempo+Mimir) All-in-One |
Open-Webui | 8088 (padrão) → 8080 | Webui, OTEL ativado, expõe na porta host 8088 |
Após a startup, acesse o painel de Grafana emhttp: // localhost: 3000
Conecte-se:admin
admin
⚙️ Variáveis de ambiente
Você pode configurar o OpenteleMetria em Web Open com essas variáveis de ambiente (conforme usado no arquivo de composição):
Variável | Padrão | Descrição |
---|---|---|
ENABLE_OTEL | verdadeiroem composição | Ativar rastreamento de opentelemetria |
ENABLE_OTEL_METRICS | verdadeiroem composição | Ativar exportação de métricas HTTP FASTAPI |
OTEL_EXPORTER_OTLP_ENDPOINT | http://grafana:4317 em composição | OTLP GRPC/HTTP URL |
OTEL_EXPORTER_OTLP_INSECURE | verdadeiroem composição | Conexão insegura (sem TLS) para OTLP |
OTEL_SERVICE_NAME | open-webui | Nome do serviço (marcado em traços e métricas) |
OTEL_BASIC_AUTH_USERNAME OTEL_BASIC_AUTH_PASSWORD | (vazio) | Credenciais básicas de autenticação se o coletor exigir |
Dica: substituir os padrões em seu
.env
Arquive ou compor arquivo conforme necessário.
Open-Webui
ambiente
Enable_otel = true
Enable_otel_metrics = true
Otel_exporter_otlp_insecure = true# Use conexão insegura para OTLP, você pode remover isso na produção
Otel_exporter_otlp_endPoint = http// Grafana4317
Otel_service_name = abertowebui
# Você pode definir otel_basic_auth_username/senha aqui se necessário
📊 Coleta de dados
Rastreamento distribuído
O back -end do Webui Open: os instrumentos automaticamente:
- FASTAPI(rotas)
- Sqlalchemy(Consultas de banco de dados)
- Redis
- solicitações, Assim,httpx, Assim,AIOHTTP(chamadas externas)
Cada extensão de traço inclui dados ricos como:
db.instance
, Assim,db.statement
, Assim,redis.args
http.url
, Assim,http.method
, Assim,http.status_code
- Detalhes do erro (
error.message
, Assim,error.kind
) em exceções
Coleção de métricas
Webui exporta as seguintes métricas via OpenElemetria:
Instrumento | Tipo | Unidade | Rótulos |
---|---|---|---|
http.server.requests | Contador | 1 | http.method , Assim,http.route , Assim,http.status_code |
http.server.duration | Histograma | EM | (o mesmo que acima) |
As métricas são enviadas via OTLP (padrão a cada 10 segundos) e podem ser visualizadas emGrafana(via Prometheus/Mimir).
🔧 Configuração do coletor personalizado
Para usar um coletor/pilha diferente (externo) Opentelemetria:
Docker Run -D -Nome Open -Webui \
-p 8088: 8080 \
-e enable_otel = true \
-e enable_otel_metrics = true \
-e otel_exporter_otlp_endPoint = http: // seu-collector: 4317 \
-e otel_exporter_otlp_insecure = true \
-e otel_service_name = open-webui \
-v aberto webui:/app/backend/data \
ghcr.io/open-webui/open-webui:Main
🚨 Solução de problemas
Traços/métricas não aparecendo em Grafana?
- Verifique duas vezes
ENABLE_OTEL
eENABLE_OTEL_METRICS
ambos estão preparados paratrue
- O terminal está correto? (
OTEL_EXPORTER_OTLP_ENDPOINT
- Inspecione os logs de Nullcore (
docker logs open-webui
) para erros de OTLP - Porta OTLP do colecionador (
4317
) deve estar aberto e acessível. Tentar:
curl http://localhost:4317
(substitua o host conforme necessário)
Autenticação necessária?
- Definir
OTEL_BASIC_AUTH_USERNAME
eOTEL_BASIC_AUTH_PASSWORD
para colecionadores protegidos por autenticação - Se estiver usando SSL/TLS, ajuste ou remova
OTEL_EXPORTER_OTLP_INSECURE
conforme apropriado