docs(runbook): Docker Swarm runbook completo + recovery commands + checklists de sessão

This commit is contained in:
Pulse Agent
2026-05-20 10:59:24 -03:00
parent b605d27b88
commit e1fb428f6d
2 changed files with 92 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
# Docker Swarm Runbook — Pulse Agent
_Atualizado: 2026-05-20 | Responsável: Pulse Agent_
## 📋 Inventário de Stacks (8 ativos)
| Stack | Serviços | Status |
|-------|----------|--------|
| bot | beebot | 🟢 |
| code | file (8dcode) | 🟢 |
| database | mongos-master, dbadmin | 🟡 degraded |
| design | penpot (7 containers) | 🟢 |
| dock | portainer, agent | 🟡 |
| git | gitea | 🟢 |
| pro | leantime, leantime-db | 🟡 |
| proxy | caddy (80/443) | 🟢 |
## 🚨 Serviços críticos e seus riscos
| Serviço | Risco | Recuperação |
|---------|-------|-------------|
| `bot_office` | HIGH — OOM kill (exit 137), agora UP porém frágil | `docker service scale bot_office=2` |
| `database_mongos-master` | HIGH — 4 containers falharam exit(139) SIGSEGV | `docker service update --force database_mongos-master` |
| `pro_leantime` | HIGH — 4 containers unhealthy, exit(137) | `docker service update --force pro_leantime` |
| `dock_portainer` | MEDIUM — múltiplos Failed | `docker service update --force dock_portainer` |
| `proxy_caddy` | MEDIUM — mount path inválido em réplicas antigas | fix compose mount |
## 🔧 Comandos de recuperação rápida
```bash
# Status detalhado
docker stack ps --no-trunc --no-resolve <stack>
# Forçar recriação
docker service update --force <stack>_<service>
# Escalar (forçar nova réplica)
docker service scale <stack>_<service>=2
docker service scale <stack>_<service>=1
# Limpar órfãos
docker ps -a -f 'status=exited' --format '{{.Names}}' | xargs docker rm -f
docker ps -a -f 'status=dead' --format '{{.Names}}' | xargs docker rm -f
```
## 📊 Health check coverage
- **3/19** containers com health check definido
- **TODO**: adicionar health check para bot_office, gitea, pro_leantime-db, todos do design stack
+43
View File
@@ -0,0 +1,43 @@
# Comandos de Recuperação — Docker Swarm
_Alfabeto de comandos para o Pulse usar quando algo quebrar._
## Emergency — todos os serviços down
```bash
docker node ls # verificar saúde do nó
docker stack rm <stack> && sleep 3 # remover stack problemática
docker swarm init # só se necessário
docker stack deploy -c <stack>.yml <stack> # re-deploy
```
## Serviço específico — forçar restart
```bash
docker service ps <stack>_<service> # ver tasks atuais
docker service update --force <stack>_<service> # forçar nova task
```
## Limpar containers órfãos
```bash
docker ps -a -f "status=exited" --format '{{.Names}}' | xargs -r docker rm -f
docker ps -a -f "status=dead" --format '{{.Names}}' | xargs -r docker rm -f
```
## Swarm reset (extreme)
```bash
docker swarm leave --force && docker swarm init --advertise-addr <ip>
```
## Health check manual de um container
```bash
# Status geral
docker inspect --format '{{json .State.Health}}' <container_id> | python3 -m json.tool
# Com health check definido
docker inspect --format '{{.State.Health.Status}}' <container_id>
# → "healthy" | "unhealthy" | "starting"
```