Changelog¶
Formato baseado em Keep a Changelog.
[Unreleased]¶
Added¶
- Metric summaries offer p85, p90, and p95 next to average and peak, in the container view and in the comparison chart. The choice stays in the URL (
stat=p95)
0.6.1 - 2026-10-14¶
The v0.6.0 tag was never published as a release because its vulnerability scan failed. This is the first release of the 0.6 line and also ships everything listed under 0.6.0.
Fixed¶
- The workloads list reads a
workload_latesttable kept in the same transaction as metric writes, instead of scanning every metric point in the window. Containers and Topology no longer wait seconds for it - Repeated log patterns keep their newest sample. The upsert referenced an ambiguous
samplecolumn on Postgres - The agent strips terminal color codes from log lines and trusts a declared level (JSON
level/severity, pino numbers, logfmtlevel=) before guessing from words, sotrace_idno longer turns an info line into debug - Opening a trace honors the selected range and shows an error with a retry instead of an empty trace
- The time range control never shows a preset and Custom pressed at the same time, and closes the custom form when the range changes elsewhere
Changed¶
- Insight, alert, metric catalog, and default SLO text from the hub is in English. The panel still translates alert titles and values
- Topology renders as soon as the graph arrives, keeps working when fleet, workload, HTTP, or alert data fails, and hides raw IP addresses and container ids behind a toggle
- Container cards draw sparklines as plain SVG, and the table view does not fetch series, so the page no longer blocks on each refresh
- Status is never shown by color alone: meters, stat cards, badges, and failed spans carry a text label, and warning text uses a darker amber
- Buttons, tabs, inputs, selects, links in lists, and sidebar items reach 44 px on touch screens
- Load errors use
role="alert", say what to check, and offer a retry - Numbers, durations, and dates follow the panel language. The first visit picks Portuguese or English from the browser
- Logs, traces, and problems copy is translated, including the trace banner, level and topic labels, and the trace ID field
- Dependency updates:
pgx/v5, the web npm group, and the web base images
0.6.0 - 2026-10-07¶
Added¶
- Python, Node.js, and Java transports that POST spans to the hub as OTLP JSON, with
traceparentandX-Correlation-Id
Security¶
- Query routes require the same Bearer token as ingest when
ARGUS_AGENT_TOKENis set. The panel proxy adds that header./healthstays open - Bump
golang.org/x/textto v0.41.0 (GO-2026-6629)
Changed¶
- The agent retries a hub POST on 429, 5xx, and connection or timeout errors, with jittered exponential backoff capped at 8s. 401, 403, and other 4xx fail immediately
- After those retries a telemetry batch is stored on disk and replayed, oldest first, before a newer batch. A permanent 4xx during replay drops that batch. A corrupt file is skipped
- Each telemetry batch carries one
X-Argus-Batch-Idfrom the first attempt through replay. The hub records that id in the same transaction as the write, so a lost response does not store the batch twice - Topology opens on the services that need attention and shows only the selected path, using fleet, workload, HTTP summary, and active alerts that already exist
- Log search, events, and traces return a page (
entries,total,limit,offset) instead of a silent cap. The panel pages those tables, and the containers chart states that it is the busiest slice of the same filtered list the table pages - The containers CPU chart averages each minute. A single scrape was being drawn as the whole minute, so the stack and the tooltip showed a spike instead of the minute
- Charts use the same time-range control as logs, including a start and an end of at most 24 hours
0.5.0 - 2026-10-06¶
Breaking¶
- The embedded SQLite store is gone. The hub requires
ARGUS_STORE_DSN(Postgres). Existing SQLite files are not migrated
Added¶
- Optional kernel collector (
ARGUS_EBPF=1) reports L4 dependencies, connection counts, and retransmits. Log-derived HTTP stays when the collector cannot load - Fleet status records why a container is down (
disposition: intentional stop, unexpected exit, or out of memory), and Problems lists those stops apart from failures
Changed¶
- Hub persistence is a driver selected with
ARGUS_STORE_DRIVER(Postgres when unset). Additional drivers, including document stores, register on the same interface
Fixed¶
- Hub dependencies pick up the fixed
pgxandgolang.org/x/textreleases so the vulnerability scan can pass - The web image refreshes Alpine packages on each CI build, so a cached layer cannot keep an old
pcre2 - Release workflow grants
security-events: writeto the reusable CI so Trivy can upload SARIF
0.4.0 - 2026-10-01¶
Added¶
- CI:
govulncheckand productionnpm auditon PRs, pushes, and a weekly schedule (#39) - CI: Trivy on hub/agent/web images (SARIF; release scans before push), gitleaks on PR diffs, CodeQL for Go and JavaScript/TypeScript (#40)
- CI: compose smoke after docker builds, covering the post-deploy checklist (#38)
- Panel unit tests with Vitest and Testing Library; CI runs
npm test -- --run(#37) - Go tests for hub HTTP ingest/queries and for
rules,slo,topology,groups, andbus; CI runsgo test -raceand publishes coverage (#36) - Panel and docs in English by default, with Portuguese (
pt-BR/pt) as a first-class locale; locale switcher persists inlocalStorage(#54) - Docs site: dedicated landing page, Material theme aligned with the panel, scrollable tables
- Docs sidebar: nested pages indent under section titles, hairline between categories
- Dependabot weekly grouped updates for GitHub Actions, Go modules, npm (
web/), and the web image (#33) SECURITY.md, issue templates (bug, feature, docs) and pull request template- Hub: concurrent ingest limit (
ARGUS_INGEST_CONCURRENCY,ARGUS_INGEST_WAIT,ARGUS_MAX_BODY_BYTES); bounded queue for pattern/topology batches argus-weblistens on8081only for ingest POSTs and/health, so agents on other hosts do not need the hub GET routes exposed- Purge also removes
log_patternsandtopology_edgesusing log and metric retention
Changed¶
argus-webruntime image runsapk upgradeso Alpine packages innginx:1.30-alpinepick up fixable HIGH/CRITICAL patches (#40)- Pages build site check runs on every PR so it can be required on
main(#33) - Contributor docs: commits, PR text, new CHANGELOG entries, canonical docs, and API identifiers are English; Portuguese files are translations only
- Issue chooser requires a form (bug, feature, docs, or task); pull request template has Why, What changes, How to validate, and a checklist
- SQLite em WAL, com escritor único e pool de leitura: consultas do painel não bloqueiam a ingestão
- Compose: retenção de logs
72h, métricas168h, purge a cada10mcom timeout30s;GOMEMLIMITno hub
Fixed¶
- CI smoke retries hub and panel probes so a connection reset right after
compose updoes not fail the job - Escritas do hub falhavam com
context deadline exceededquando o SQLite estava grande e uma única conexão serializava leitura e ingestão
0.3.0 - 2026-09-29¶
Added¶
GET /api/v1/traces: traces recentes de spans OTLP e de logs comtrace_id, com filtro por serviço e período (#48)GET /api/v1/logs/patternsaceitacontainer,groupeq(#48)- Painel: lista de traces por serviço e período, link "Pular para o conteúdo" e menu num landmark
nav(#48)
Changed¶
- Referência da API e fluxos alinhados aos handlers: variáveis de
.env.example, esquemas de topologia, alertas e SLO, e ingest de fleet, eventos e OTLP (#50) - Painel com 7 destinos em vez de 13: Visão geral, Problemas, Containers, Métricas, Logs, Traces e Topologia. Workloads, Fleet e Grupos viram Containers; Explorer vira o modo Comparar de Métricas; Patterns vira o modo Padrões de Logs; Eventos, Insights e SLOs viram abas de Problemas. As rotas antigas redirecionam mantendo os parâmetros (#48)
- Visão geral mostra só o que pede ação: alertas ativos, SLOs em risco, containers com problema e serviços HTTP com erro (#48)
- Modo, aba, grade ou tabela, tipo de gráfico e containers comparados ficam na URL (#48)
- Um único título por tela, igual ao nome no menu; sem rótulos em caixa alta nem metadados unidos por
·(#48) - CI roda
go,webe o build de cada imagem só quando hub, agent ou web mudam no diff; tags e mudanças no próprio CI rodam tudo (#45) CONTRIBUTING.md: comandos locais do painel iguais aos do CI (npm run lint) e versão do Node- READMEs das imagens no Docker Hub: tags
vX.Y.ZeX, imagem base, espelho no GHCR e variáveis de purge (hub) e de intervalo/filtro (agent)
Fixed¶
- Docs de configuração:
ARGUS_LOG_INTERVAL,ARGUS_FLEET_INTERVALeARGUS_NAME_PREFIXdo agent não estavam documentadas - Link de SLO para Métricas enviava
service, que a tela ignorava; agora abre a comparação dos containers do serviço (#48) - Comparação de métricas HTTP não encontrava as séries, que chegam com o nome do serviço no lugar do container (#48)
0.2.1 - 2026-09-29¶
Changed¶
- Go 1.27, Node 24 (LTS), Alpine 3.24, nginx 1.30 (stable) e Python 3.14 nos Dockerfiles e workflows (#41)
- Runners fixados em
ubuntu-26.04(LTS) e actions atualizadas para as majors atuais (#41) modernc.org/sqlite1.60 e demais dependencias Go; dependencias do web nas versoes minor/patch atuais (#43)
Security¶
undiciatualizado no web, corrigindo vulnerabilidade moderada apontada pelonpm audit(#43)
0.2.0 - 2026-09-29¶
Added¶
- Workflow de release: imagens GHCR + GitHub Release a partir de tags semver
- Compose
examples/compose-minimal/docker-compose.published.yml(pull GHCR) - Runbook de atualização de stack em
docs/deploy.md(pull GHCR ou build local, checklist pós-deploy, rollback) - Checklist semver e de publicação no
CONTRIBUTING.md - Site de documentação no GitHub Pages (MkDocs), publicado a cada merge em
maine a cada release - CI com job de lint do web e build dos três Dockerfiles
- Imagens no Docker Hub (
pseudohuery/argus-{hub,agent,web}) além do GHCR, com README e descrição sincronizados - Imagens multi-arch
linux/amd64elinux/arm64, com SBOM, provenance e labels OCI; tagsX.YeX(a partir de1.0) ARGUS_REGISTRYno compose publicado para escolher entre GHCR e Docker Hub
Changed¶
- CI em jobs paralelos (
anti-leak,go,web,docker) com agregadorteste cancelamento de execuções antigas do mesmo PR - Release valida tag, commit em
maine seção do CHANGELOG antes de publicar; reutiliza o CI; imagens em paralelo com cache; tags-rcviram pre-release sem moverlatest - CI usa Node 22, a mesma versão do
web/Dockerfile
Fixed¶
- CI:
InferServiceFromContainerpara serviços compose com hífen (demo-api) - Gate anti-leak no workflow (#25)
- Release: caminho do Dockerfile do web (
./web/Dockerfile) no build da imagem - Docs de configuração: defaults reais de
ARGUS_STORE_PATH,ARGUS_HUB_URL,ARGUS_AGENT_IDeARGUS_HOST_ID
0.1.0 - 2026-09-04¶
Added¶
- Hub (
argus-hub) com API REST, ingest de métricas/logs/eventos/fleet e OTLP traces - Agent Docker com coleta de CPU, memória, rede e block I/O
- Painel web (React + shadcn/ui): dashboard, workloads, métricas, explorer, logs, insights, patterns, topologia, traces, SLOs, eventos
- Sidebar agrupada por domínio (Visão, Infraestrutura, Telemetria, Análise, Alertas)
- Gráficos de infraestrutura: meters, sparklines, charts empilhados
- Documentação pública: README, CONTRIBUTING, API reference, examples
- CI GitHub Actions (Go test + build web)
- Licença MIT
Changed¶
- Seeds e exemplos genéricos (
demo-api) — sem referências a infra privada - Portas default do compose: hub
8080, painel3000