# 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 ```mermaid 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) ```bash # 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**: ```bash cp .env.example .env go mod tidy ``` 3. **Executar**: ```bash 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.