Plataforma de Monitoramento Cloud-Native com OpenTelemetry, VictoriaMetrics e Grafana
- Visão Geral
- High Level Design (HLD)
- Arquitetura
- Componentes
- Stack Tecnológico
- Qualidades Arquiteturais
- Início Rápido
- Configuração
- Monitoramento
- Estrutura do Projeto
- 📘 Network Monitor - Detalhes técnicos
- 📘 ViaIPE Collector - Detalhes técnicos
- 📙 OpenTelemetry Collector - Configuração
- 📙 Grafana - Dashboards e Alerting
Esta plataforma implementa uma arquitetura de monitoramento distribuída seguindo padrões CNCF (Cloud Native Computing Foundation) e práticas de observabilidade moderna. O sistema coleta, processa e visualiza métricas de infraestrutura de rede e APIs externas em tempo real.
- 🌐 Monitoramento de Latência de Rede: Rastreamento contínuo de RTT e perda de pacotes
- 🔍 Disponibilidade HTTP/HTTPS: Verificação de uptime e performance de endpoints
- 📡 Coleta de Métricas de APIs: Integração com APIs externas (VIAIPE/RNP)
- 📊 Visualização em Tempo Real: Dashboards interativos com histórico de 90 dias
- 🚨 Alertas Proativos: Sistema de alerting configurável via Grafana
┌─────────────────────────────────────────────────────────────────────────┐
│ MONITORING PLATFORM │
│ Cloud-Native Observability Stack │
└─────────────────────────────────────────────────────────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ DATA COLLECTION │ │ EXTERNAL SOURCES │
│ (Agents) │ │ │
├──────────────────────┤ ├──────────────────────┤
│ │ │ │
│ Network Monitor │───ping───│ • Google │
│ • Ping Monitor │ │ • YouTube │
│ • HTTP Monitor │ │ • RNP │
│ • OpenTelemetry SDK │ │ │
│ │ └──────────────────────┘
│ ViaIPE Collector │ ┌──────────────────────┐
│ • API Client │───http───│ VIAIPE API - RNP │
│ • Data Processor │ └──────────────────────┘
│ • Metrics Exporter │
│ │
└──────────┬───────────┘
│ OTLP/gRPC (4317)
│ OTLP/HTTP (4318)
▼
┌──────────────────────┐
│ TELEMETRY PIPELINE │
│ (OTEL Collector) │
├──────────────────────┤
│ │
│ ┌────────────────┐ │
│ │ Receivers │ │ ◄─── Receive OTLP metrics from agents
│ └────────┬───────┘ │
│ │ │
│ ┌────────▼───────┐ │
│ │ Processors │ │ ◄─── Transform, batch, enrich
│ └────────┬───────┘ │
│ │ │
│ ┌────────▼───────┐ │
│ │ Exporters │ │ ◄─── Send to storage backend
│ └────────────────┘ │
│ │
└──────────┬───────────┘
│ Prometheus RemoteWrite
▼
┌──────────────────────┐
│ STORAGE LAYER │
│ (VictoriaMetrics) │
├──────────────────────┤
│ │
│ • TSDB Optimized │
│ • 90d Retention │
│ • High Compression │
│ • Fast Queries │
│ • PromQL Support │
│ │
└──────────┬───────────┘
│ PromQL/HTTP API
▼
┌──────────────────────┐
│ VISUALIZATION │
│ (Grafana) │
├──────────────────────┤
│ │
│ • Network Dashboard │
│ • VIAIPE Dashboard │
│ • Alerting Rules │
│ • Data Sources │
│ │
└──────────────────────┘
│
▼
┌──────────────┐
│ USERS │
└──────────────┘
1. COLLECTION
├─ Network Monitor → [Ping + HTTP Checks] → Metrics
└─ ViaIPE Collector → [API Poll] → Metrics
2. INSTRUMENTATION
└─ OpenTelemetry SDK → Standardized Metrics (OTLP format)
3. TELEMETRY
└─ OTEL Collector → [Receive → Process → Export]
4. STORAGE
└─ VictoriaMetrics → Time-Series Database (90d retention)
5. VISUALIZATION
└─ Grafana → Dashboards + Alerts + Queries
| Padrão | Implementação | Benefício |
|---|---|---|
| Sidecar Pattern | OTEL Collector como proxy de telemetria | Desacoplamento e flexibilidade |
| Pipeline Pattern | Receivers → Processors → Exporters | Processamento modular |
| Repository Pattern | Agentes isolados com responsabilidades únicas | Manutenibilidade |
| Health Check Pattern | Endpoints /health em todos os serviços |
Orquestração confiável |
| 12-Factor App | Configuração via env vars | Portabilidade |
| Observability Pattern | Métricas estruturadas com OpenTelemetry | Padronização CNCF |
┌─────────────────────────────────────────────────────────┐
│ PRESENTATION LAYER │
│ (Grafana Dashboards) │
└─────────────────────────┬───────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────┐
│ STORAGE LAYER │
│ (VictoriaMetrics TSDB) │
└─────────────────────────┬───────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────┐
│ TELEMETRY LAYER │
│ (OpenTelemetry Collector) │
└─────────────────────────┬───────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────┐
│ APPLICATION LAYER │
│ (Monitoring Agents) │
│ ┌──────────────────┐ ┌───────────────────┐ │
│ │ Network Monitor │ │ ViaIPE Collector │ │
│ └──────────────────┘ └───────────────────┘ │
└─────────────────────────────────────────────────────────┘
Network Monitor ──┐
├─► OTLP/gRPC:4317 ──► OTEL Collector
ViaIPE Collector ──┘ │
│
▼
Prometheus RemoteWrite
│
▼
VictoriaMetrics:8428
│
▼
PromQL API
│
▼
Grafana:3000
| Componente | Descrição | Documentação |
|---|---|---|
| Network Monitor 🌐 | Monitora latência de rede e disponibilidade HTTP/HTTPS | 📖 README |
| ViaIPE Collector 📡 | Coleta métricas da API VIAIPE (RNP) | 📖 README |
| Componente | Descrição | Documentação |
|---|---|---|
| OpenTelemetry Collector 🔄 | Pipeline de processamento de métricas (Receivers → Processors → Exporters) | 📖 README |
| Componente | Descrição | Documentação |
|---|---|---|
| VictoriaMetrics 💾 | Time-Series Database com 90 dias de retenção | - |
| Componente | Descrição | Documentação |
|---|---|---|
| Grafana 📈 | Visualização de métricas e sistema de alertas | � README |
| Camada | Tecnologia | Versão | Propósito |
|---|---|---|---|
| Agents | Python | 3.11+ | Desenvolvimento dos agentes |
| Telemetry | OpenTelemetry Collector | 0.91.0 | Pipeline de métricas |
| Storage | VictoriaMetrics | 1.96.0 | Time-series database |
| Visualization | Grafana | 10.2.3 | Dashboards e alerting |
| Orchestration | Docker Compose | 3.8+ | Orquestração de containers |
- Instrumentação Padronizada: OpenTelemetry como padrão CNCF
- Métricas Estruturadas: Labels consistentes e semântica clara
- Rastreabilidade: Logs correlacionados com métricas
- Visibilidade: Dashboards em tempo real
- Horizontal Scaling: Agentes stateless podem ser replicados
- Pipeline Distribuído: OTEL Collector suporta clustering
- TSDB Otimizado: VictoriaMetrics para alta cardinalidade
- Async Processing: Operações não-bloqueantes
- Health Checks: Todos os serviços monitorados
- Restart Policies: Auto-recuperação de falhas
- Circuit Breaking: Timeouts e retries configurados
- Graceful Degradation: Falhas isoladas não propagam
- Separação de Responsabilidades: Cada componente com função única
- Código Testável: Cobertura de testes unitários (pytest)
- Documentação: README por componente
- Configuração Declarativa: Infrastructure as Code
- Containerização: Docker para todos os serviços
- 12-Factor App: Configuração via variáveis de ambiente
- Vendor Agnostic: OpenTelemetry suporta múltiplos backends
- Cloud Ready: Deploy em qualquer plataforma Docker
- Network Isolation: Rede dedicada para containers
- Least Privilege: Capabilities mínimas (NET_RAW apenas onde necessário)
- Health Checks: Detecção precoce de anomalias
- Immutable Infrastructure: Containers imutáveis
- Async I/O: Operações não-bloqueantes (asyncio)
- Batch Processing: Agregação de métricas
- Memory Management: Limitadores configurados
- Efficient Storage: Alta compressão em VictoriaMetrics
- Docker Engine 20.10+
- Docker Compose 2.0+
- 4 GB RAM disponível
- Portas livres: 3000, 4317, 4318, 8080, 8081, 8428, 8888
# Clone o repositório
git clone <repository-url>
cd devops-monitoring-stack
# Inicie todos os serviços
./start.sh
# Ou use Docker Compose diretamente
docker compose up -d
# Check status dos containers
docker compose ps
# Visualize logs
docker compose logs -f| Serviço | URL | Credenciais |
|---|---|---|
| Grafana | http://localhost:3000 | admin/admin |
| VictoriaMetrics | http://localhost:8428 | - |
| OTEL Collector Metrics | http://localhost:8888/metrics | - |
| Network Monitor Health | http://localhost:8080/health | - |
| ViaIPE Collector Health | http://localhost:8081/health | - |
As configurações de cada componente são gerenciadas via variáveis de ambiente.
Para detalhes completos de configuração de cada componente, consulte:
- 📖 Network Monitor Configuration
- 📖 ViaIPE Collector Configuration
- 📖 OTEL Collector Configuration
- 📖 Grafana Configuration
Edite os arquivos em containers/ para customizar configurações específicas de cada serviço.
A plataforma disponibiliza dashboards pré-configurados para visualização das métricas:
- 🌐 Network Monitoring Dashboard: Latência, perda de pacotes e disponibilidade HTTP
- 📡 VIAIPE Metrics Dashboard: Métricas de tráfego RNP e performance da API
| Interface | URL | Descrição |
|---|---|---|
| Grafana | http://localhost:3000 | Dashboards e alerting (admin/admin) |
| VictoriaMetrics | http://localhost:8428 | TSDB UI e queries |
| OTEL Collector | http://localhost:8888/metrics | Métricas internas do collector |
📖 Para detalhes sobre métricas disponíveis e queries PromQL, consulte:
devops-monitoring-stack/
├── README.md # 📖 Este arquivo (High Level)
├── docker-compose.yml # Orquestração principal
├── start.sh # Script de inicialização
│
├── agents/ # Agentes de monitoramento
│ ├── network-monitor/ # 📖 Monitor de rede
│ │ ├── README.md # Documentação detalhada
│ │ ├── Dockerfile
│ │ ├── requirements.txt
│ │ ├── pytest.ini
│ │ ├── src/ # Código fonte
│ │ └── tests/ # Testes unitários
│ │
│ └── viaipe-collector/ # 📖 Coletor VIAIPE
│ ├── README.md # Documentação detalhada
│ ├── Dockerfile
│ ├── requirements.txt
│ ├── pytest.ini
│ ├── src/
│ └── tests/
│
├── containers/ # 📖 Configurações Docker Compose
│ ├── README.md # Documentação de containers
│ ├── network-monitor.yml
│ ├── viaipe-collector.yml
│ ├── otel-collector.yml
│ ├── victoriametrics.yml
│ └── grafana.yml
│
├── otel/ # 📖 Configuração OTEL
│ ├── README.md # Documentação do OTEL Collector
│ └── otel-collector-config.yaml
│
└── grafana/ # 📖 Configuração Grafana
├── README.md # Documentação do Grafana
├── dashboards/
│ ├── Network/ # Dashboards de rede
│ └── viaipe/ # Dashboards VIAIPE
└── provisioning/
├── datasources/ # Data sources
├── dashboards/ # Provisioning
└── alerting/ # Alerting rules
Construído com ❤️ usando tecnologias cloud-native