feat: adiciona 12 plugins Descomplicar ao marketplace

Plugins: automacao, crm-ops, design-media, dev-tools, gestao,
infraestrutura, marketing, negocio, perfex-dev, project-manager,
wordpress + hello-plugin (existente).

Totais: 83 skills, 44 agents, 12 datasets.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-07 21:41:24 +00:00
parent bcce928beb
commit 2cb3210962
209 changed files with 50869 additions and 0 deletions

View File

@@ -0,0 +1,679 @@
---
name: server-health
description: Server health monitoring and diagnostics. Checks system resources, services
status, and identifies issues. Use when user mentions "server health", "system check",
"server status", "resource monitoring", "server diagnostics".
author: Descomplicar® Crescimento Digital
version: 2.0.0
quality_score: 75
user_invocable: true
desk_task: 1484
---
# /server-health - Diagnóstico Completo de Servidor
Checklist sistemático para diagnosticar problemas de performance ou auditar estado do servidor CWP.
---
## Servidor Alvo
| Servidor | IP | MCP | User |
|----------|-----|-----|------|
| **CWP Principal** | 176.9.3.158 | ssh-unified | root |
**Acesso:**
```javascript
mcp__ssh-unified__ssh_execute({
server: "server",
command: "<comando>"
})
```
---
## Modos de Execução
| Comando | Descrição |
|---------|-----------|
| `/server-health` | Diagnóstico completo (todos os checks) |
| `/server-health quick` | Apenas métricas críticas (load, RAM, disco) |
| `/server-health mysql` | Focus em MySQL e bases de dados |
| `/server-health ssl` | Verificação de todos os certificados SSL |
| `/server-health sites` | Status de todos os sites WordPress |
---
## Workflow Completo
### Passo 1: Sistema (Paralelo)
**Executar em paralelo:**
```bash
# Load average (3 valores: 1min, 5min, 15min)
uptime
# RAM e Swap
free -h
# Espaço em disco
df -h
# Top processos CPU
top -bn1 | head -20
# Load numérico
cat /proc/loadavg
# CPU/IO statistics
vmstat 1 3
# Processos específicos (Apache, MySQL, Nginx)
ps aux | grep -E 'httpd|mysql|nginx' | grep -v grep
```
**Validação:**
- ✅ Load 1min <2 → OK
- ⚠️ Load 1min 2-5 → Warning
- ❌ Load 1min >5 → Critical
- ✅ RAM <70% → OK
- ❌ Swap >10% → Investigar causa
### Passo 2: MySQL
```bash
# Status geral MySQL
mysqladmin status
# Processos activos
mysqladmin processlist | head -20
# Threads conectadas
mysql -e "SHOW GLOBAL STATUS LIKE 'Threads%';"
# Slow queries
mysql -e "SHOW GLOBAL STATUS LIKE 'Slow_queries';"
# Tamanho das BDs
mysql -e "SELECT table_schema AS 'Database',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)'
FROM information_schema.TABLES
GROUP BY table_schema
ORDER BY SUM(data_length + index_length) DESC
LIMIT 10;"
# Verificar se há tabelas corrompidas
mysqlcheck --all-databases --check
```
**Queries Críticas:**
```sql
-- Ver queries lentas em execução
SELECT id, user, host, db, command, time, state, LEFT(info, 100) as query
FROM information_schema.PROCESSLIST
WHERE command != 'Sleep'
AND time > 5
ORDER BY time DESC;
-- BDs maiores que 500MB
SELECT table_schema,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS size_mb
FROM information_schema.TABLES
GROUP BY table_schema
HAVING size_mb > 500
ORDER BY size_mb DESC;
```
### Passo 3: Web Servers
```bash
# Status Apache
systemctl status httpd --no-pager | head -15
# Status Nginx
systemctl status nginx --no-pager | head -15
# Testar localhost
curl -sI localhost | head -10
# Verificar GZIP
curl -sI -H 'Accept-Encoding: gzip' localhost | grep -i encoding
# Conexões activas
netstat -an | grep :80 | wc -l
netstat -an | grep :443 | wc -l
# Workers Apache
ps aux | grep httpd | wc -l
# Virtual hosts configurados
httpd -S 2>&1 | grep -E 'port|namevhost' | head -20
```
### Passo 4: PHP
```bash
# Versão PHP
php -v | head -1
# Memory limit
php -i | grep memory_limit
# OPcache status
php -i | grep -E 'opcache.enable|opcache.memory_consumption'
# Processos PHP-FPM
ps aux | grep php-fpm | wc -l
# Configuração PHP-FPM (se existir)
php-fpm -tt 2>&1 | head -30
```
### Passo 5: SSL/Certificados
```bash
# Listar todos os certificados instalados
ls -lh /root/.acme.sh/cwp_certs/
# Verificar próximas renovações (todos os domínios)
for d in $(ls /root/.acme.sh/cwp_certs/); do
echo "=== $d ==="
grep -E 'Le_NextRenewTimeStr|Le_Alt' /root/.acme.sh/cwp_certs/$d/*.conf 2>/dev/null | head -3
done
# Verificar certificados activos em Nginx
for conf in /etc/nginx/vhosts/*.conf; do
domain=$(basename $conf .conf)
echo "=== $domain ==="
grep -E 'ssl_certificate|server_name' $conf | head -3
done
# Testar um domínio específico
echo | openssl s_client -connect DOMINIO:443 2>/dev/null | openssl x509 -noout -dates -subject
# Log de renovações recentes
tail -100 /root/.acme.sh/acme.sh.log | grep -E 'Renew|error|success'
```
**Validação SSL:**
- ✅ Renovação >30 dias → OK
- ⚠️ Renovação 15-30 dias → Avisar
- ❌ Renovação <15 dias → Urgente
### Passo 6: Segurança
```bash
# Fail2ban status
systemctl status fail2ban --no-pager 2>/dev/null || echo 'fail2ban não instalado'
# Jails activos
fail2ban-client status 2>/dev/null | head -10
# IPs banidos
fail2ban-client status sshd 2>/dev/null | grep "Banned IP"
# Portas abertas
netstat -tlnp | grep LISTEN | head -20
# Últimos logins SSH
last -10
# Tentativas SSH falhadas
grep "Failed password" /var/log/secure | tail -20
# Firewall activo?
systemctl status firewalld --no-pager || iptables -L -n | head -20
```
### Passo 7: Sites WordPress
```bash
# Verificar todos os sites WordPress
for dir in /home/*/public_html; do
if [ -f "$dir/wp-config.php" ]; then
domain=$(basename $(dirname $dir))
echo "=== $domain ==="
# Versão WordPress
grep "wp_version = " $dir/wp-includes/version.php | head -1
# Tamanho wp-content
du -sh $dir/wp-content
# Plugins activos (via BD se possível)
# Testar acesso HTTP
curl -sI "http://$domain" | head -3
fi
done
# Script de verificação completo
/root/scripts/check-wp-sites.sh 2>/dev/null || echo "Script não existe"
```
---
## Template de Output
```markdown
# 🔍 Server Health Report - YYYY-MM-DD HH:MM
## ⚡ Resumo Executivo
| Métrica | Valor | Status | Limite |
|---------|-------|--------|--------|
| Load (1m) | X.XX | ✅/⚠️/❌ | <2 |
| RAM Usada | XX% | ✅/⚠️/❌ | <70% |
| Swap Usado | XX% | ✅/⚠️/❌ | <10% |
| Disco / | XX% | ✅/⚠️/❌ | <70% |
| MySQL Threads | XX | ✅/⚠️/❌ | <50 |
| Slow Queries | XX | ✅/⚠️/❌ | <10 |
| Sites WP OK | XX/YY | ✅/⚠️/❌ | 100% |
| SSL Expiring | XX | ✅/⚠️/❌ | 0 |
**Health Score:** XX/100
---
## 🚨 Alertas Críticos
> [!danger] CRÍTICO
> - Load >5 há 10 minutos (possível loop infinito)
> - Swap 45% usado (memória insuficiente)
> [!warning] ATENÇÃO
> - 3 sites WordPress com erros HTTP 500
> - Certificado SSL solarfv360.pt expira em 12 dias
---
## 📊 Detalhes
### Sistema
```
Uptime: 45 days, 12:34
Load Average: 2.15, 1.89, 1.56
RAM: 12.5 GB / 16 GB (78%) ⚠️
Swap: 1.2 GB / 4 GB (30%) ❌
Disco /: 85 GB / 200 GB (42%) ✅
```
**Top Processos CPU:**
```
PID USER %CPU %MEM COMMAND
1234 mysql 45.2 12.3 mysqld
5678 apache 8.5 2.1 httpd
```
### MySQL
**Status:**
- Uptime: 1,234,567 seconds
- Threads conectadas: 23 / 151 ✅
- Slow queries: 145 (total) ⚠️
- Queries/segundo: ~150
**BDs Grandes (>500MB):**
| Base de Dados | Tamanho |
|---------------|---------|
| ealmeida_desk24 | 1,234 MB |
| carstuff_prod | 856 MB |
**Queries Lentas Activas:**
```
id: 12345 | user: wp_user | time: 45s
query: SELECT * FROM wp_posts WHERE...
```
### Web
**Apache:** ✅ Activo (145 workers)
**Nginx:** ✅ Activo (proxy reverso)
**Conexões:**
- HTTP (80): 23 conexões
- HTTPS (443): 67 conexões
**GZIP:** ✅ Activo
### PHP
**Versão:** PHP 8.1.27
**Memory Limit:** 256M
**OPcache:** ✅ Activo (128MB)
**PHP-FPM Workers:** 12
### SSL
**Certificados Instalados:** 34
**Renovações Próximas (<30 dias):**
| Domínio | Expira em | Status |
|---------|-----------|--------|
| solarfv360.pt | 12 dias | ⚠️ Renovar |
| emanuelalmeida.pt | 28 dias | ⚠️ Avisar |
**Problemas:**
- ❌ certificado_antigo.pt - Expirado há 5 dias
### Segurança
**Fail2ban:** ✅ Activo
**Jails:** sshd, apache-auth, nginx-limit
**IPs Banidos:** 45 (último: 123.45.67.89)
**Portas Abertas:**
- 22 (SSH) ✅
- 80 (HTTP) ✅
- 443 (HTTPS) ✅
- 3306 (MySQL) ⚠️ Público (deveria ser localhost only)
**Últimas Tentativas SSH Falhadas:**
```
2026-02-03 10:15 - Invalid user admin from 192.168.1.100
2026-02-03 09:45 - Failed password for root from 45.67.89.10
```
### Sites WordPress
**Total:** 15 sites
**OK:** 12 (80%) ✅
**Erros:** 3 (20%) ❌
**Sites com Erro:**
| Domínio | Erro | Acção |
|---------|------|-------|
| site-antigo.pt | HTTP 500 | Verificar error_log |
| teste.descomplicar.pt | HTTP 404 | Site desactivado? |
---
## 📋 Recomendações Prioritárias
### 🔴 URGENTE (Hoje)
1. ⚠️ Reduzir uso de Swap (45%) - Investigar processos
2. ❌ Renovar SSL solarfv360.pt (12 dias restantes)
3. ❌ Corrigir sites com HTTP 500 (3 sites)
### 🟡 IMPORTANTE (Esta Semana)
4. ⚠️ Optimizar queries lentas MySQL (145 total)
5. ⚠️ Limpar BDs grandes (ealmeida_desk24 1.2GB)
6. ⚠️ Fechar porta MySQL 3306 ao público
### 🟢 MELHORIAS (Mês)
7. ✅ Configurar alertas automáticos para Swap >20%
8. ✅ Criar backup automático de certificados SSL
9. ✅ Actualizar PHP para 8.2 (actualmente 8.1)
---
## 🔧 Troubleshooting Sugerido
### Swap Alto (>30%)
```bash
# Ver o que está a usar memória
ps aux --sort=-%mem | head -10
# Limpar swap (CUIDADO!)
swapoff -a && swapon -a
```
### Load Alto (>5)
```bash
# Ver processos por CPU
ps aux --sort=-%cpu | head -10
# Ver I/O wait
iostat -x 1 5
# Identificar processo problemático
top -bn1 | head -20
```
### MySQL Lento
```bash
# Ver queries activas
mysqladmin processlist
# Ver slow query log
tail -50 /var/log/mysql/slow.log
# Optimizar tabelas
mysqlcheck --optimize --all-databases
```
### Sites WordPress com Erro
```bash
# Ver error log
tail -100 /home/USER/logs/error.log
# Verificar permissões
ls -lh /home/USER/public_html/wp-content
# Corrigir permissões
chown -R USER:USER /home/USER/public_html/wp-content
```
---
*Gerado via /server-health v2.0 | Descomplicar®*
```
**Instruções de Implementação:**
1. Executar comandos em paralelo quando possível (mcp__ssh-unified__ssh_execute)
2. Calcular health score: (checks OK / total checks) × 100
3. Gerar alertas baseados em thresholds
4. Agrupar recomendações por urgência
5. Incluir troubleshooting específico para cada problema detectado
---
## Thresholds de Alertas
| Métrica | ✅ OK | ⚠️ Warning | ❌ Critical |
|---------|-------|------------|-------------|
| **Load (1m)** | <2 | 2-5 | >5 |
| **RAM** | <70% | 70-85% | >85% |
| **Swap** | <10% | 10-30% | >30% |
| **Disco** | <70% | 70-85% | >85% |
| **MySQL Threads** | <50 | 50-100 | >100 |
| **Slow Queries** | 0 | 1-10 | >10 |
| **Sites WP OK** | 100% | 90-99% | <90% |
| **SSL Expiring** | >30d | 15-30d | <15d |
---
## Comandos SSH Específicos
### Verificação Rápida (Quick Mode)
```bash
# Uma linha com todas as métricas críticas
echo "=== QUICK HEALTH ===" && \
uptime && \
free -h | grep Mem && \
df -h | grep -E '^/dev/vda|Filesystem' && \
mysqladmin status 2>&1 | head -1 && \
systemctl is-active httpd nginx mysql
```
### MySQL Deep Dive
```bash
# Optimizar todas as BDs
mysqlcheck --optimize --all-databases
# Limpar logs binários antigos (>7 dias)
mysql -e "PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);"
# Verificar fragmentação de tabelas
mysql -e "SELECT table_schema, table_name,
ROUND(data_length/1024/1024,2) as data_mb,
ROUND(data_free/1024/1024,2) as free_mb
FROM information_schema.TABLES
WHERE data_free > 0
ORDER BY data_free DESC
LIMIT 10;"
```
### Limpeza de Cache/Temp
```bash
# Limpar cache WordPress (todos os sites)
find /home/*/public_html/wp-content/cache -type f -delete
# Limpar sessions PHP antigas
find /var/lib/php/session -type f -mtime +7 -delete
# Limpar logs Apache/Nginx >30 dias
find /home/*/logs -name "*.log" -mtime +30 -delete
```
---
## Integração com MCPs
```javascript
// Executar diagnóstico completo
async function serverHealthCheck() {
// 1. Sistema (paralelo)
const systemChecks = await Promise.all([
mcp__ssh-unified__ssh_execute({server: "server", command: "uptime"}),
mcp__ssh-unified__ssh_execute({server: "server", command: "free -h"}),
mcp__ssh-unified__ssh_execute({server: "server", command: "df -h"}),
mcp__ssh-unified__ssh_execute({server: "server", command: "top -bn1 | head -20"})
]);
// 2. MySQL
const mysqlStatus = await mcp__ssh-unified__ssh_execute({
server: "server",
command: "mysqladmin status && mysql -e \"SHOW GLOBAL STATUS LIKE 'Threads%';\""
});
// 3. SSL
const sslCheck = await mcp__ssh-unified__ssh_execute({
server: "server",
command: "for d in $(ls /root/.acme.sh/cwp_certs/); do echo \"=== $d ===\"; grep Le_NextRenewTimeStr /root/.acme.sh/cwp_certs/$d/*.conf 2>/dev/null; done"
});
// Processar e gerar report
return processHealthData(systemChecks, mysqlStatus, sslCheck);
}
```
---
## Anti-Patterns
| Anti-Pattern | Problema | Solução Correcta |
|--------------|----------|------------------|
| Assumir SSH como root | Pode falhar | Verificar permissões primeiro |
| Executar comandos sequenciais | Lento | Paralelo quando possível |
| Ignorar exit codes | Falhas silenciosas | Validar cada comando |
| Não limpar recursos temp | Consume espaço | Limpeza em cada audit |
| Não documentar problemas | Sem histórico | Gravar em Desk/Obsidian |
---
## Checklist de Execução
- [ ] SSH conecta (testar `whoami`)
- [ ] Todas as métricas recolhidas (sistema, mysql, web, ssl)
- [ ] Thresholds aplicados (calcular status)
- [ ] Health score calculado
- [ ] Alertas gerados (crítico/warning)
- [ ] Recomendações priorizadas
- [ ] Troubleshooting incluído
- [ ] Report formatado (Markdown)
- [ ] Opcional: Gravar em Desk ou Obsidian
---
## Datasets Dify (Consulta Obrigatória)
Antes de executar diagnóstico complexo ou para troubleshooting específico:
| Dataset | ID | Uso |
|---------|----|----|
| **TI (Tecnologia da Informação)** | `7f63ec0c-6321-488c-b107-980140199850` | Diagnósticos gerais |
| **Linux** | `bde4eddd-4618-402c-8bfb-bb947ed9219d` | Comandos específicos |
| **CWP Centos Web Panel** | `b2a4d2c5-fe55-412c-bc28-74dbd611905d` | Configurações CWP |
**Consultar quando:**
- Problema não coberto por este guia
- Optimização específica de serviço
- Troubleshooting de erro desconhecido
- Configuração avançada CWP/MySQL/Nginx
```javascript
// Exemplo: pesquisar optimização MySQL
mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "7f63ec0c-6321-488c-b107-980140199850",
query: "mysql slow query optimization innodb tuning",
top_k: 3
})
```
---
## Changelog
### v2.0.0 (2026-02-03)
- **ENHANCED:** Workflows detalhados para cada passo
- Modos de execução (quick, mysql, ssl, sites)
- Template de output completo com troubleshooting
- Thresholds documentados
- Comandos SSH específicos
- Health score calculation
- Integração MCPs documentada
- Anti-patterns identificados
- Checklist de execução
### v1.0.0 (2026-01-30)
- Versão inicial
- Diagnóstico: Sistema, MySQL, Web, PHP, SSL, Segurança
- Thresholds definidos
- Output template markdown
---
**Versão:** 2.0.0 | **Autor:** Descomplicar®
**Última actualização:** 2026-02-03 (Workflows completos + Troubleshooting)
---
## Quando NÃO Usar
- Para tarefas fora do domínio de especialização desta skill
- Quando outra skill mais específica está disponível
- Para operações que requerem aprovação manual obrigatória
- Quando os requisitos não estão claramente definidos
## Exemplos de Uso
### Exemplo 1: Caso Básico
```
User: [requisição simples relacionada com server-health]
Skill: [execução directa com validação]
Output: [resultado conciso e accionável]
```
### Exemplo 2: Caso Complexo
```
User: [requisição multi-passo ou complexa]
Skill:
1. Análise dos requisitos
2. Planeamento da abordagem
3. Execução faseada
4. Validação contínua
Output: [resultado detalhado com próximos passos]
```
### Exemplo 3: Caso com Dependências
```
User: [requisição que depende de outros sistemas]
Skill:
1. Verificar dependências disponíveis
2. Coordenar com skills/MCPs necessários
3. Executar workflow integrado
Output: [resultado completo com referências]
```