204 lines
4.9 KiB
Markdown
204 lines
4.9 KiB
Markdown
---
|
|
name: easypanel-monitor
|
|
description: Monitorizacao de servicos EasyPanel -- estado de todos os servicos Docker, uso de recursos, disco e logs de erros com tabela resumo OK/DOWN/WARN.
|
|
layer: wiki
|
|
---
|
|
|
|
# /easypanel-monitor - Monitorizacao EasyPanel
|
|
|
|
Verificacao rapida do estado de todos os servicos no EasyPanel (VM 101) com identificacao de problemas.
|
|
|
|
---
|
|
|
|
## Quando usar
|
|
|
|
- Verificacao diaria do estado dos servicos
|
|
- Apos alertas de servicos down
|
|
- Antes de deploys (validar estado actual)
|
|
- Diagnostico rapido de problemas de recursos
|
|
|
|
## Quando nao usar
|
|
|
|
- Para troubleshooting aprofundado de um servico especifico (usar `/easypanel-troubleshoot`)
|
|
- Para rollback de versao (usar `/easypanel-rollback`)
|
|
- Para deploy de servicos (usar `/easypanel-deploy`)
|
|
|
|
---
|
|
|
|
## Sintaxe
|
|
|
|
```bash
|
|
/easypanel-monitor # Check completo (servicos + recursos + disco)
|
|
/easypanel-monitor quick # Apenas estado dos servicos (OK/DOWN)
|
|
/easypanel-monitor <servico> # Detalhe de um servico especifico (logs + stats)
|
|
```
|
|
|
|
---
|
|
|
|
## Servidor alvo
|
|
|
|
| Alias SSH | IP | Porta | Funcao |
|
|
|-----------|-----|-------|--------|
|
|
| **easy** | 5.9.90.70 | 22 | EasyPanel (VM 101) |
|
|
|
|
```javascript
|
|
mcp__ssh-unified__ssh_execute({
|
|
server: "easy",
|
|
command: "<comando>"
|
|
})
|
|
```
|
|
|
|
---
|
|
|
|
## Workflow completo
|
|
|
|
### Passo 1: Estado dos servicos (docker service ls)
|
|
|
|
```bash
|
|
docker service ls --format "table {{.Name}}\t{{.Replicas}}\t{{.Image}}\t{{.Ports}}"
|
|
```
|
|
|
|
**Classificacao:**
|
|
- **OK** - Replicas X/X (todas activas)
|
|
- **DOWN** - Replicas 0/X (nenhuma activa)
|
|
- **WARN** - Replicas parciais ou servico sem replicas esperadas
|
|
|
|
### Passo 2: Identificar servicos DOWN (0/N replicas)
|
|
|
|
```bash
|
|
docker service ls --format "{{.Name}} {{.Replicas}}" | awk '$2 ~ /^0\//'
|
|
```
|
|
|
|
Para cada servico DOWN, obter logs:
|
|
|
|
```bash
|
|
docker service logs <nome-servico> --tail 10 --no-trunc 2>&1
|
|
```
|
|
|
|
### Passo 3: Uso de recursos via API (preferido)
|
|
|
|
```bash
|
|
TOKEN=$(cat /etc/easypanel/.api-token)
|
|
|
|
# Stats do sistema — retorna estrutura aninhada
|
|
curl -s "http://localhost:3000/api/trpc/monitor.getSystemStats" \
|
|
-H "Authorization: Bearer $TOKEN"
|
|
```
|
|
|
|
**Estrutura real da resposta (verificado 24-03-2026):**
|
|
```json
|
|
{
|
|
"result": {
|
|
"data": {
|
|
"json": {
|
|
"uptime": 3118351.41,
|
|
"memInfo": {
|
|
"totalMemMb": 32096.51,
|
|
"usedMemMb": 16885.52,
|
|
"freeMemMb": 15210.99,
|
|
"usedMemPercentage": 52.61,
|
|
"freeMemPercentage": 47.39
|
|
},
|
|
"diskInfo": {
|
|
"totalGb": "192.7",
|
|
"usedGb": "89.7",
|
|
"freeGb": "103.0",
|
|
"usedPercentage": "46.5",
|
|
"freePercentage": "53.5"
|
|
},
|
|
"cpuInfo": {
|
|
"usedPercentage": 13.65,
|
|
"count": 6,
|
|
"loadavg": [5.58, 6.34, 6.51]
|
|
},
|
|
"network": {
|
|
"inputMb": 0,
|
|
"outputMb": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Campos a usar:**
|
|
- CPU: `cpuInfo.usedPercentage`
|
|
- RAM: `memInfo.usedMemPercentage` e `memInfo.usedMemMb`
|
|
- Disco: `diskInfo.usedPercentage` e `diskInfo.usedGb`
|
|
|
|
**Fallback via SSH (se API indisponivel):**
|
|
```bash
|
|
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}"
|
|
```
|
|
|
|
**Thresholds:**
|
|
|
|
| Metrica | OK | WARN | CRITICAL |
|
|
|---------|-----|------|----------|
|
|
| CPU | <70% | 70-90% | >90% |
|
|
| RAM | <70% | 70-85% | >85% |
|
|
| RAM absoluto | <512MB | 512MB-1GB | >1GB |
|
|
|
|
### Passo 4: Espaco em disco (via API ou fallback)
|
|
|
|
Usar `diskInfo` da resposta do passo 3. Fallback:
|
|
|
|
```bash
|
|
df -h / /var/lib/docker
|
|
```
|
|
|
|
**Thresholds:**
|
|
|
|
| Disco | OK | WARN | CRITICAL |
|
|
|-------|-----|------|----------|
|
|
| / | <70% | 70-85% | >85% |
|
|
| /var/lib/docker | <70% | 70-85% | >85% |
|
|
|
|
Verificar imagens Docker nao utilizadas:
|
|
|
|
```bash
|
|
docker system df
|
|
```
|
|
|
|
### Passo 5: Logs de erros recentes (servicos com problemas)
|
|
|
|
Para servicos DOWN ou WARN:
|
|
|
|
```bash
|
|
docker service logs <nome-servico> --tail 10 --no-trunc 2>&1 | grep -iE "error|fatal|panic|oom|killed|fail"
|
|
```
|
|
|
|
### Passo 6: Verificar tarefas falhadas
|
|
|
|
```bash
|
|
docker service ls -q | xargs -I {} docker service ps {} --format "{{.Name}} {{.CurrentState}} {{.Error}}" --filter "desired-state=shutdown" 2>/dev/null | grep -i "failed\|rejected\|error" | head -20
|
|
```
|
|
|
|
---
|
|
|
|
## Template de output
|
|
|
|
```markdown
|
|
## EasyPanel Monitor - [DATA]
|
|
|
|
**Servidor:** easy.descomplicar.pt (5.9.90.70)
|
|
|
|
### Estado dos servicos
|
|
|
|
| Servico | Replicas | Estado | CPU | RAM | Notas |
|
|
|---------|----------|--------|-----|-----|-------|
|
|
| descomplicar_api | 1/1 | OK | 2.3% | 128MB | - |
|
|
| descomplicar_n8n | 1/1 | OK | 5.1% | 256MB | - |
|
|
| descomplicar_db | 0/1 | DOWN | - | - | Connection refused |
|
|
| descomplicar_redis | 1/1 | WARN | 85% | 490MB | CPU elevado |
|
|
|
|
**Resumo:** X/Y servicos OK | Z DOWN | W WARN
|
|
|
|
### Disco
|
|
|
|
| Mount | Usado | Disponivel | % | Estado |
|
|
|-------|-------|------------|---|--------|
|
|
| / | 45G | 55G | 45% | OK |
|
|
| /var/lib/docker | 30G | 70G | 30% | OK |
|
|
|
|
Docker system: X imagens, Y containers, Z volumes ( |