- Use Google Distroless images for all services (Go & Node.js). - Standardize documentation with [PROJECT-NAME].md. - Add .dockerignore and .gitignore to all projects. - Remove docker-compose.yml in favor of docker run instructions. - Fix Go version and dependency issues in observability, repo-integrations, and security-governance. - Add Podman support (fully qualified image names). - Update Dashboard to use Node.js static server for Distroless compatibility.
2.1 KiB
2.1 KiB
OBSERVABILITY-CORE
O observability-core é o serviço central de monitoramento da plataforma. Ele coleta health checks, gerencia alertas e integrações com TimeSeries DB (TimescaleDB) para armazenar métricas de longo prazo.
📋 Visão Geral
Diferente de sistemas de log como o dashboard (que consome logs via Appwrite Realtime), este serviço foca em métricas e disponibilidade.
Arquitetura
graph TD
Agent[Internal Service] -->|Push Metrics| API[Observability API]
API -->|Write| TSDB[(TimescaleDB)]
API -->|Check| Targets[http://target-service/health]
subgraph Periodic Jobs
Job[Health Checker] -->|Ping| Targets
Job -->|Alert| PagerDuty[Pager Duty / Slack]
end
🚀 Estrutura do Projeto
O projeto é escrito em Go para alta performance e concorrência:
| Diretório | Descrição |
|---|---|
cmd/api |
Entrypoint da API. |
internal/checks |
Lógica de Health Checks (HTTP/TCP ping). |
internal/metrics |
Agregação de dados. |
db/migrations |
Migrações SQL (Postgres/Timescale). |
🛠️ Tecnologias e Otimizações
- Linguagem: Go 1.23+
- Database: PostgreSQL + TimescaleDB extension.
- Libraries: Chi (Router), Pgx (Driver).
- Containerização:
- Baseada em
gcr.io/distroless/static:nonroot. - Binário estático (
CGO_ENABLED=0). - Imagem final < 25MB.
- Baseada em
💻 Como Executar
Docker (Recomendado)
# Build
docker build -t observability-core .
# Run
docker run -p 8080:8080 --env-file .env observability-core
A API estará disponível na porta 8080.
Desenvolvimento
- Dependências:
- Go 1.23+
- PostgreSQL
- Setup:
cp .env.example .env go mod tidy - Executar:
go run ./cmd/api
🔧 Detalhes do Dockerfile
O Dockerfile é otimizado para Go:
- Builder:
golang:1.23-alpine. - Flags:
-ldflags="-w -s"para remover símbolos de debug. - Runtime: Distroless Static (sem libc, sem shell), garantindo a menor superfície de ataque possível.