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

79 lines
2.1 KiB
Markdown

# 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.