Para monitorar aplicações Python e PHP em um ambiente local com Docker Compose, instrumente ambas com OpenTelemetry e envie a telemetria ao OpenTelemetry Collector. Use Prometheus para coletar métricas, Loki para consultar logs e Grafana para explorá-los. Há uma lacuna importante: essa combinação, sozinha, não armazena nem consulta traces. Para uma stack completa nos três sinais, inclua também um backend de traces e configure o pipeline correspondente; sem ele, declare o projeto como uma demonstração de métricas e logs.
Como os componentes se conectam
O Collector é o ponto de entrada e roteamento da telemetria. Os SDKs OpenTelemetry das aplicações enviam dados por OTLP; pipelines explícitos no Collector encaminham cada sinal ao destino apropriado. Grafana é a interface de consulta e visualização, não um substituto dos armazenamentos.
| Componente | Função nesta stack | O que precisa ser configurado |
|---|---|---|
| Aplicação Python | Produz telemetria instrumentada | SDK, exporter, protocolo OTLP e nome estável em service.name |
| Aplicação PHP | Produz telemetria instrumentada | Exporter OTLP, transporte compatível e nome de serviço |
| OpenTelemetry Collector | Recebe, processa e exporta telemetria | Receivers, processors, exporters e pipelines separados por sinal |
| Prometheus | Coleta e consulta métricas | Um caminho de scrape ou outra rota de métricas documentada e compatível com a versão escolhida |
| Loki | Armazena e consulta logs | Um fluxo de ingestão, por exemplo Collector com OTLP, e configuração de retenção adequada ao uso |
| Grafana | Explora os dados nos backends conectados | Conexões aos backends que o Compose realmente inicia |
| Backend de traces | Armazena e permite consultar traces | Escolher e configurar um destino; não é definido pelos guias Loki citados pela documentação consultada em 4 de outubro de 2026 |
Os nomes de serviço e os endereços de rede usados na configuração devem corresponder aos serviços e à rede do Compose. Iniciar containers sem conferir o caminho entre emissor, Collector e backend não comprova que os dados chegaram.
Defina o transporte OTLP de cada aplicação
Python
A documentação OpenTelemetry para Python descreve exporters OTLP por HTTP/protobuf e gRPC. Escolha um protocolo e configure no SDK o endpoint correspondente ao receiver ativo no Collector. O exemplo documentado de receiver usa gRPC em 0.0.0.0:4317 e HTTP em 0.0.0.0:4318; essas portas são valores daquele exemplo, não uma exigência para todo Compose.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitches#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
PHP
Para o transporte HTTP, a documentação OpenTelemetry para PHP indica o pacote open-telemetry/exporter-otlp e uma implementação de cliente HTTP PSR. Se optar por gRPC, o exemplo também exige open-telemetry/transport-grpc e a extensão PHP grpc. Isso muda as dependências instaladas e pode exigir ajustes na imagem e no build da aplicação.
Nome e cobertura da instrumentação
Defina um service.name estável para cada serviço. A documentação de Python observa que a maioria dos backends exige esse atributo. Comece com instrumentação automática apenas quando as bibliotecas e frameworks usados forem suportados; complemente lacunas com spans e métricas manuais. Sem conhecer o framework e suas versões, não é possível garantir cobertura automática específica.
Rank #2
- Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
- Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
- CanaKit Premium High-Gloss Raspberry Pi 4 Case with Integrated Fan Mount, CanaKit Low Noise Bearing System Fan
- CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply (US Plug) with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K60p)
- CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)
Configure o Collector por sinal
Estruture a configuração com receivers, processors, exporters e service.pipelines. Declare pipelines distintos para traces, métricas e logs, e encaminhe cada um a um destino que esteja de fato configurado no Compose.
- Logs: um fluxo demonstrado pela documentação Grafana envia logs OTLP ao Collector e deste ao Loki.
- Métricas: escolha o scrape pelo Prometheus ou uma rota OTLP documentada e compatível com as versões adotadas. Não deixe ambíguo quem inicia o scrape e qual endpoint fornece as métricas.
- Traces: adicione um backend de traces e um exporter compatível, ou deixe explícito que a stack não oferece armazenamento e consulta de traces.
O exporter debug do exemplo Python escreve a telemetria no console e serve para depuração; não o trate como destino final de armazenamento. Instalar o Collector também não conecta automaticamente Prometheus, Loki e Grafana: receivers, exporters e pipelines precisam representar os serviços configurados.
Rank #3
- Design for Raspberry Pi: Supports installation of 4 Raspberry Pis and 4 ssds, compatible with any 2.5” Solid State Drive (7mm/9mm) and Rpi 4B/3B+, and other B/B+ models.
- The SSD mounting bracket also has two holes reserved for the SD card extension adapter ASIN: B09CKRDFTH, which allows you to access the SD card from the front of the rack.
- Easy to Setup: Just use two included thumbscrews to mount the rackmount, which adopts a screw-in design, which helps you install and replace quickly and easily, no tools needed!
- Applications: This is a hardware solution to get ingenious use of the Raspberry Pi, with this kit and open source software OpenMediaVault, you can use the Pi as a NAS Server, Surveillance station, or even a Web server.
- Optional accessories: Single mounting bracket: B09GFQLPTY; Micro SD card extension adapter ASIN: B09CKRDFTH. I/O Panel: B09FXRQPFM
Escolha a rota de métricas
Scrape de endpoint Prometheus
A documentação de Python oferece PrometheusMetricReader, que inicia um endpoint HTTP de métricas. Prometheus — ou um Collector configurado com Prometheus receiver — pode coletar esse endpoint. Neste modelo, deixe claro qual serviço expõe a URL e qual componente a consulta; o scrape só funciona se o endereço e a rede corresponderem ao Compose.
Outra rota de métricas
Uma alternativa é uma rota OTLP compatível com os componentes e versões escolhidos. Valide o suporte e a configuração da versão adotada antes de publicar o Compose. Não misture scrape e exportação OTLP sem explicar qual deles cada serviço usa e que papel cabe ao Collector.
Rank #4
- [ULTIMATE RASPBERRY PI 5 CASE & MINI PC] - Unlock the full potential of your Raspberry Pi 5 with the Pironman 5-MAX — the most advanced Raspberry Pi 5 Case for power users. This high-performance Raspberry Pi 5 Cooling Case features dual NVMe M.2 slots with RAID 0/1 support, AI accelerator compatibility ( e.g. Hailo-8l M.2 AI), a PCIe Gen2 switch, a PWM tower cooler + dual RGB fans and a smart OLED display. With its dual transparent panels and optimized cable management (including full-size HDMI), it’s the ideal Raspberry Pi 5 Enclosure for building a high-speed NAS, AI edge computing device, or Home Assistant hub. (Raspberry Pi NOT Included)
- [DUAL NVMe M.2 SLITS & NAS RAID SUPPORT] - Supercharge your storage with the best Raspberry Pi 5 NVMe Case solution. Featuring two expandable NVMe M.2 slots (2230-2280) powered by a built-in PCIe Gen2 switch, this Raspberry Pi 5 NAS Case supports RAID 0/1 for ultra-fast data setups. Whether you're using a high-speed NVMe SSD or a Hailo-8L AI accelerator, Pironman 5-MAX delivers the ultimate performance boost for advanced Raspberry Pi 5 AI applications and edge computing
- [ADVANCED COOLING SYSTEM] - Engineered for high-performance builds, Pironman 5-MAX features a powerful tower cooler, one PWM fan, and dual RGB fans for enhanced airflow. The dual transparent panel design improves ventilation while showcasing vibrant RGB lighting. Ideal for cooling both the Raspberry Pi 5 and dual NVMe SSDs or AI accelerators like Hailo-8L, it ensures stable operation under heavy workloads with low noise and long-term durability
- [SMART OLED DISPLAY WITH VIBRATION WAKE-UP] - Pironman 5-MAX features a 0.96" OLED screen that delivers real-time system insights including CPU usage, memory, temperature, IP address, and disk status. With customizable display options and auto sleep mode, the screen can be instantly reactivated by a light tap thanks to the built-in vibration sensor—offering a smarter and more interactive experience
- [ENHANCED FUNCTIONALITY] - Pironman 5-MAX empowers your Raspberry Pi 5 with advanced features like safe shutdown via a metal power button, customizable RGB lighting, dual full-size HDMI ports, vibration-triggered OLED wake-up, and an external GPIO extender. It also includes RTC battery support for timekeeping and seamless Home Assistant integration. With detailed guides, online tutorials, and full technical support from SunFounder, setup and use are effortless and worry-free
Encaminhe logs a Loki e explore-os no Grafana
O tutorial Grafana de Collector e Loki demonstra aplicações enviando logs OpenTelemetry por OTLP ao Collector, que os encaminha ao Loki. A documentação de instalação local de Loki também apresenta um Compose com Loki, Grafana e Grafana Alloy, usando os arquivos docker-compose.yaml, alloy-local-config.yaml e loki-config.yaml. Ela recomenda considerar Alloy para enviar logs ao Loki.
Esses são caminhos de ingestão possíveis, não uma instrução para executar Alloy e Collector duplicando a mesma coleta. Decida onde os logs entram, que transformações são necessárias e qual componente é responsável por encaminhá-los. Para uma aplicação que já exporta logs OTLP, o fluxo Collector–Loki é o exemplo documentado; Alloy pode ser apropriado para coleta e encaminhamento em outro desenho.
Use labels de Loki com cardinalidade controlada. IDs de usuário e URLs sem limites podem gerar valores de alta cardinalidade; não os transforme em labels por padrão. Minimize e filtre atributos sensíveis, e não registre segredos, tokens ou dados pessoais desnecessários.
Monte e verifique o Compose em etapas
- Liste os serviços: inclua as aplicações Python e PHP, o Collector, Prometheus, Loki e Grafana. Para consultar traces, inclua também um backend próprio e sua configuração; sem isso, limite o escopo declarado a métricas e logs.
- Escolha o protocolo de cada SDK: configure HTTP/protobuf ou gRPC e confira se o receiver do Collector aceita o mesmo transporte e endereço.
- Escreva os pipelines: defina receivers, processors, exporters e pipelines para cada sinal. Para cada exporter, confirme que existe um destino correspondente no Compose.
- Configure métricas e logs: especifique o endpoint coletado pelo Prometheus ou a rota de métricas escolhida; depois confirme se os logs vão de fato do emissor ao Loki.
- Conecte o Grafana: configure acesso aos backends iniciados e use o Grafana para consultar dados armazenados neles.
- Verifique a prontidão: consulte os endpoints de readiness e métricas documentados para o exemplo de Loki. A página de instalação também lista esses caminhos de verificação; confirme os endpoints aplicáveis ao seu arquivo Compose, pois portas e URLs do tutorial não valem automaticamente para uma configuração personalizada.
- Valide a telemetria ponta a ponta: gere atividade nas aplicações e confirme que métricas são consultáveis no Prometheus e logs no Loki/Grafana. Para traces, confirme a chegada e consulta no backend que você escolheu. Containers em execução, por si sós, não demonstram que esse percurso funcionou.
Decisões que afetam o desenho
| Decisão | Alternativas | Critérios práticos |
|---|---|---|
| Transporte da aplicação ao Collector | OTLP HTTP/protobuf ou gRPC | Suporte das bibliotecas, dependências nativas, rede, endpoint e consistência entre Python e PHP. No caminho gRPC de PHP, considere também pacote de transporte e extensão. |
| Coleta de métricas | Endpoint scrape Prometheus ou rota OTLP compatível | Scrape versus push, componente responsável pela coleta, portas expostas e configuração da versão selecionada. |
| Ingestão de logs | Collector OTLP para Loki ou fluxo com Alloy | Origem dos logs, transformações necessárias e ponto de configuração. Os exemplos consultados não comparam desempenho entre os caminhos. |
| Traces | Backend dedicado ou escopo sem retenção local | Retenção, armazenamento, consulta, recursos e correlação com métricas e logs. Os guias Loki citados não definem um backend de traces. |
| Exporter externo | Integração oficial ou mantida por terceiros | Procedência, manutenção, compatibilidade, atualizações, permissões e superfície de exposição. A documentação Prometheus alerta que nem todas as integrações externas são verificadas pelo projeto. |
Limites antes de usar fora do laboratório
Os exemplos citados sustentam um setup local de demonstração, não um dimensionamento de produção nem uma arquitetura de alta disponibilidade. Antes de expor serviços ou tratar o Compose como produção, defina armazenamento persistente, retenção, autenticação, exposição de portas e política de atualização. Fixe versões de imagens e pacotes no Compose e valide-as: versões específicas não são determinadas pelos guias resumidos aqui.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




