- 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.
79 lines
2.1 KiB
Markdown
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.
|