core/observability-core/OBSERVABILITY-CORE.md
Tiago Yamamoto a52bd4519d refactor: optimize Dockerfiles and documentation for core services
- 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.
2025-12-30 13:22:34 -03:00

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.

💻 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

  1. Dependências:
    • Go 1.23+
    • PostgreSQL
  2. Setup:
    cp .env.example .env
    go mod tidy
    
  3. 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.