---
name: log-analyzer
description: >
  Analiza logs de servicios buscando patrones de errores, warnings y anomalias.
  Genera un resumen estructurado con metricas, errores frecuentes y recomendaciones.
---

# Log Analyzer Skill

Esta skill analiza logs de servicios y genera reportes estructurados con hallazgos y recomendaciones.

## Casos de uso

- Analizar logs de un servicio que esta fallando
- Buscar patrones de errores recurrentes
- Generar metricas de salud de un servicio
- Detectar anomalias en logs

## Proceso de analisis

### 1. Obtener los logs

Opciones:
- Via SSH: `ssh_command` con `journalctl` o `tail`
- Via HTTP: `http_get` si el servicio expone logs via API
- Desde archivo local: `file_read` (si el agente tiene la tool)

Ejemplo con journalctl:
```bash
journalctl -u <service-name> --since "1 hour ago" -n 1000
```

### 2. Parsear los logs

Identifica el formato de logs:
- JSON estructurado
- Formato de systemd
- Logs planos con timestamp

Extrae campos clave:
- Timestamp
- Nivel de log (ERROR, WARN, INFO, DEBUG)
- Mensaje
- Stack traces (si aplica)

### 3. Analizar patrones

Busca:
- Errores recurrentes (agrupa por mensaje similar)
- Picos de actividad (timeframes con muchos logs)
- Errores criticos (FATAL, PANIC, segfaults)
- Timeouts y connection errors
- Excepciones no manejadas

### 4. Generar metricas

Calcula:
- Total de lineas analizadas
- Conteo por nivel (ERROR, WARN, INFO)
- Top 10 errores mas frecuentes
- Timeline de errores (distribucion temporal)
- Rate de errores (errores por minuto)

### 5. Generar reporte

Formato del reporte:

```markdown
## Log Analysis Report

**Service**: <service-name>
**Period**: <start> - <end>
**Total lines**: <N>

### Metrics

- Errors: <N> (<percentage>%)
- Warnings: <N> (<percentage>%)
- Info: <N> (<percentage>%)
- Error rate: <N> errors/min

### Top Errors

1. <error-message> (<N> occurrences)
2. <error-message> (<N> occurrences)
...

### Critical Issues

- <description>
- <description>

### Recommendations

- <recommendation>
- <recommendation>
```

## Parametros requeridos

- `source`: "ssh", "http", o "file"
- `service_name`: nombre del servicio (si source=ssh)
- `host`: servidor (si source=ssh)
- `log_url`: URL de logs (si source=http)
- `file_path`: ruta al archivo (si source=file)
- `timeframe`: "1 hour", "24 hours", "7 days", etc.

Parametros opcionales:
- `filter`: patron regex para filtrar lineas
- `max_lines`: limite de lineas a analizar (default: 10000)
- `output_format`: "markdown" o "json"

## Ejemplo de uso

Usuario: "Analiza los logs de myapp en prod-server-01 de la ultima hora"

Agente:
1. skill_search("analyze logs")
2. skill_load("log-analyzer")
3. ssh_command para obtener logs via journalctl
4. Parsear y analizar logs
5. Generar reporte markdown
6. Enviar reporte al usuario
