Permanent log collection agent. Collects logs and history from all nodes via SSH/VPN every 3 hours. Stores in logs.db with 30-day retention. Multi-node capable with fallback logic.
Scanned 9/9/2026
Install to Claude Code
npx -y skills add Lord1Egypt/awesome-skill-forge --skill log-collector --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Log Collector?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lord1egypt-log-collector)More formats (shields.io, HTML) on the badges page.
---
name: log-collector
description: Permanent log collection agent. Collects logs and history from all nodes via SSH/VPN every 3 hours. Stores in logs.db with 30-day retention. Multi-node capable with fallback logic.
---
# Log Collector Sub-Agent
Permanenter Log-Sammel-Agent für alle Nodes im Cluster.
## Aufgaben
| Intervall | Aufgabe | Details |
|-----------|---------|---------|
| **3 Stunden** | Node-Abfrage | SSH über VPN zu allen Nodes |
| **3 Stunden** | Log-Collection | System-Logs, OpenClaw-Logs, VPN-Status |
| **3 Stunden** | Datenbank-Update | Schreibt in logs.db |
| **Täglich** | Retention-Cleanup | Löscht Logs > 30 Tage |
## Multi-Node Support
| Node | Verbindung | Priorität |
|------|------------|-----------|
| Node 1 (Gateway) | Lokal | Primär (Sammel-Node) |
| Node 2 (Netcup) | SSH → 10.10.0.2 | Abfrage-Ziel |
| Node 3 (xNetX) | SSH → 10.10.0.3 | Abfrage-Ziel |
| Node 4+ | SSH → 10.10.0.X | Variable Erreichbarkeit |
## VPN-Priorität
```
1. Tailscale (primär) → schneller, stabil
2. WireGuard (fallback) → zuverlässiger Tunnel
3. SSH WAN (letzter Fallback) → langsamster
```
## Datenbank: logs.db
### Tabellen
| Tabelle | Inhalt |
|---------|--------|
| **nodes** | Bekannte Nodes mit VPN-IP, SSH-Keys |
| **logs** | Gesammelte Logs (max. 30 Tage) |
| **ssh_connections** | Verbindungs-Log (Erfolg/Fehler) |
| **vpn_status** | Tailscale/WireGuard Status |
| **collection_runs** | Abfrage-Tracking pro Durchlauf |
| **node_logs_raw** | Roh-Logs unverarbeitet |
### Retention
```sql
-- Automatisch: Logs > 30 Tage löschen
DELETE FROM logs WHERE retention_until < datetime('now');
```
## Abfrage-Workflow
```python
# Für jeden Node in nodes-Tabelle:
for node in nodes:
# 1. VPN-Status prüfen
vpn_status = check_vpn(node.tailscale_ip) or \
check_vpn(node.wireguard_ip)
# 2. SSH-Verbindung versuchen
if ssh_connect(node.ssh_key_path, node.vpn_ip):
# 3. Logs abholen
logs = ssh_exec('journalctl -n 1000')
# 4. In logs.db speichern
insert_logs(node.node_id, logs)
else:
# 5. Fehler loggen
insert_ssh_error(node.node_id, "Connection failed")
```
## Variable Erreichbarkeit
| Szenario | Verhalten |
|----------|-----------|
| **Node immer erreichbar** | Normale Abfrage, vollständige Logs |
| **Node manchmal erreichbar** | Best-effort, sammelt wenn möglich |
| **Node nie erreichbar** | Wird trotzdem versucht, Fehler geloggt |
| **Gateway offline** | Lokale Buffer, später Übertragung |
## Berechtigungen
```yaml
exec: read_write_ssh
nodes: query_all
logs: collect_store
retention: cleanup_30d
```
## Konfiguration
```json
{
"log-collector": {
"enabled": true,
"collection_interval_hours": 3,
"retention_days": 30,
"nodes": [
{"id": "node1", "local": true},
{"id": "node2", "ssh_key": "~/.ssh/node2_key"},
{"id": "node3", "ssh_key": "~/.ssh/node3_key"},
{"id": "node4", "ssh_key": "~/.ssh/node4_key", "optional": true}
],
"vpn_priority": ["tailscale", "wireguard", "wan"]
}
}
```
## Scripts
| Script | Zweck |
|--------|-------|
| `log_collector.py` | Haupt-Collection-Logik |
| `ssh_connector.py` | SSH-Verbindungen mit Fallback |
| `vpn_checker.py` | VPN-Status-Prüfung |
| `retention_cleanup.py` | 30-Tage Cleanup |
## Logs
```
logs/log-collector/
├── 2026-04-18.log
├── collection-errors.log
└── run-summary.json
```
## Installation
```bash
# Skill installieren
clawhub install log-collector
# Cron aktivieren (alle 3 Stunden)
0 */3 * * * /usr/bin/python3 /home/openclaw/.openclaw/workspace/skills/log-collector/scripts/log_collector.py
```
## Troubleshooting
### Problem: SSH-Verbindung fehlgeschlagen
**Prüfung:**
```bash
# VPN erreichbar?
ping 10.10.0.2
# SSH-Key korrekt?
ssh -i ~/.ssh/node2_key openclaw@10.10.0.2
```
### Problem: Logs nicht in Datenbank
**Prüfung:**
```bash
# logs.db existiert?
ls -la db/logs.db
# Fehler-Log
tail logs/log-collector/collection-errors.log
```
## Integration
- **db-maintainer:** Separate DB, gleiche Backup-Strategie
- **workspace-db:** Dokumentations-Index (separat)
- **tree.db v2:** Datei-Tracking (separat)
---
**Hinweis:** Konfiguration (SSH-Keys, IPs) nicht im Skill - muss in env/db konfiguriert werden.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!