Thanks for the interest. This is a portfolio repo, not a production project, but contributions that improve clarity, correctness, or coverage are welcome.
cp .env.example .env
make up # docker compose up -d --wait
make smoke # run scripts/smoke.sh against the running stack
make load-error # generate traffic to fire AppHighErrorRate
make down # tear down + remove volumesRun locally (CI only runs the smoke test):
make lint # yamllint + promtool check rules + amtool check-config + hadolint
make test # go test -race -cover ./app/...
make smoke # full end-to-end against a running stackEvery new rule must ship with:
- The rule itself in
compose/prometheus/alerts/*.rules.yml(and the equivalentPrometheusRuleentry ink8s/extra-alerts/if app-specific). severitylabel andsummary+description+runbook_urlannotations.- A corresponding section in docs/RUNBOOK.md — symptoms, likely causes, diagnostic commands, remediation.
- A panel on the relevant Grafana dashboard if the metric isn't already visualized.
PRs that add rules without runbook entries will be asked to add them.
- YAML: 2-space indent, no trailing whitespace (enforced by
.editorconfig+yamllint). - Go:
gofmt,go vet. - Shell:
shellcheck-clean. - Image tags: never
:latest. Pin a version.