🎯 Überblick
Der myit.worker ist eine Linux-basierte VM, die in Kundennetzwerken eingesetzt wird, um erweiterte Monitoring-Funktionen für ITFlow bereitzustellen. Der Worker empfängt Syslog-Nachrichten, sammelt SNMP-Daten und übermittelt diese über sichere API-Endpunkte an myit.Center.
🏗️ Architektur
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ myit.Center │ │ myit.worker │ │ Kundennetzwerk │
│ Server │◄───┤ (Linux VM) │◄───┤ │
│ │ │ │ │ - Router │
│ - Web Interface │ │ - Syslog Server │ │ - Switches │
│ - API Endpoints │ │ - SNMP Collector │ │ - Server │
│ - Database │ │ - Data Processor │ │ - Workstations │
└─────────────────┘ └──────────────────┘ └─────────────────┘
📋 Systemanforderungen
myit.worker VM Spezifikationen
- OS: Ubuntu Server 22.04 LTS oder CentOS 8/9
- RAM: Mindestens 2GB (4GB empfohlen)
- CPU: 2 vCPUs
- Storage: 50GB (für 96h Syslog-Retention)
- Netzwerk: Statische IP-Adresse im Kundennetzwerk
Netzwerk-Anforderungen
- Eingehend:
- Port 514/UDP (Syslog)
- Port 161/UDP (SNMP – falls Worker als SNMP-Proxy agiert)
- Port 22/TCP (SSH für Management)
- Ausgehend:
- Port 443/TCP (HTTPS zu myit.Center-Server)
- Port 161/UDP (SNMP zu überwachten Geräten)
🚀 Installation
1. VM-Vorbereitung
# System aktualisieren
sudo apt update && sudo apt upgrade -y
# Erforderliche Pakete installieren
sudo apt install -y python3 python3-pip rsyslog-mysql snmp snmp-mibs-downloader curl jq
# Python-Abhängigkeiten installieren
pip3 install requests pysnmp4 python-daemon configparser schedule
2. myit.worker Konfiguration
# Worker-Verzeichnis erstellen
sudo mkdir -p /opt/myit-worker
sudo mkdir -p /opt/myit-worker/config
sudo mkdir -p /opt/myit-worker/logs
sudo mkdir -p /var/log/myit-worker
# Konfigurationsdatei erstellen
sudo nano /opt/myit-worker/config/worker.conf
Beispiel worker.conf:
[general]
worker_name = Customer-ABC-Worker-01
worker_hostname = worker01.customer-abc.local
worker_version = 2.0.0
log_level = INFO
data_retention_hours = 96
[myit.Center]
api_url = https://myit.center/api/v1 api_key = YOUR_API_KEY_HERE client_id = 123 location_id = 456 heartbeat_interval = 300
[syslog]
enabled = true bind_address = 0.0.0.0 bind_port = 514 max_message_size = 8192 processing_threads = 4
[snmp]
enabled = true default_community = public default_version = 2c poll_interval = 300 timeout = 5 retries = 3 max_concurrent_polls = 10
[database]
# Lokale SQLite für Zwischenspeicherung db_path = /opt/myit-worker/data/worker.db cleanup_interval = 3600
3. Worker-Skript installieren
# Haupt-Worker-Skript herunterladen
sudo wget -O /opt/myit-worker/myit-worker.py https://raw.githubusercontent.com/itflow-org/itflow/main/scripts/myit-worker.py
# Ausführbar machen
sudo chmod +x /opt/myit-worker/myit-worker.py
# Systemd-Service erstellen
sudo nano /etc/systemd/system/myit-worker.service
myit-worker.service:
[Unit]
Description=ITFlow Extended Monitoring Worker
After=network.target
Wants=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/myit-worker
ExecStart=/usr/bin/python3 /opt/myit-worker/myit-worker.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
4. Syslog-Konfiguration
# Rsyslog für Remote-Empfang konfigurieren
sudo nano /etc/rsyslog.conf
Rsyslog-Konfiguration hinzufügen:
# ITFlow Worker Syslog Configuration
module(load="imudp")
input(type="imudp" port="514")
# Forward all messages to myit-worker
*.* @@127.0.0.1:5140
5. Worker starten und aktivieren
# Service aktivieren und starten
sudo systemctl daemon-reload
sudo systemctl enable myit-worker
sudo systemctl start myit-worker
# Status prüfen
sudo systemctl status myit-worker
sudo journalctl -u myit-worker -f
🔧 Worker-Registrierung
Automatische Registrierung
Der Worker registriert sich automatisch beim ersten Start bei ITFlow:
# Registrierung manuell testen
curl -X POST "https://myit.center/api/v1/monitoring/worker_register.php" \
-d "worker_name=Customer-ABC-Worker-01" \
-d "worker_hostname=worker01.customer-abc.local" \
-d "worker_ip_address=192.168.1.100" \
-d "worker_version=2.0.0" \
-d "worker_capabilities={\"syslog\":true,\"snmp\":true,\"ping\":true}" \
-d "api_key=YOUR_API_KEY"
Manuelle Registrierung über ITFlow-Interface
- In ITFlow zu Monitoring > Worker navigieren
- „Worker hinzufügen“ klicken
- Worker-Details eingeben
- API-Key generieren und in Worker-Konfiguration eintragen
📊 SNMP-Konfiguration
1. SNMP-Geräte hinzufügen
Über ITFlow-Interface:
- Monitoring > SNMP Geräte aufrufen
- „Gerät hinzufügen“ klicken
- Asset auswählen und SNMP-Parameter konfigurieren
2. Standard-OID-Templates verwenden
-- Beispiel: Linux-Server überwachen
INSERT INTO monitoring_snmp_devices SET
snmp_device_asset_id = 123,
snmp_device_client_id = 456,
snmp_device_worker_id = 789,
snmp_device_ip = '192.168.1.50',
snmp_version = '2c',
snmp_community = 'public',
snmp_poll_interval = 300;
-- Standard-OIDs aus Template anwenden
INSERT INTO monitoring_snmp_oids (snmp_oid_device_id, snmp_oid_name, snmp_oid_string, snmp_oid_type, snmp_oid_unit, snmp_oid_warning_threshold, snmp_oid_critical_threshold)
SELECT
LAST_INSERT_ID(),
'CPU Load 1min',
'1.3.6.1.4.1.2021.10.1.3.1',
'gauge',
'%',
80.0,
95.0;
🔍 Syslog-Filterregeln
Automatische Asset-Zuordnung konfigurieren
-- Regel: Hostname-basierte Zuordnung
INSERT INTO monitoring_syslog_rules SET
rule_name = 'Hostname Mapping',
rule_client_id = 456,
rule_pattern = 'server01',
rule_pattern_type = 'contains',
rule_field = 'hostname',
rule_action = 'assign_asset',
rule_target_asset_id = 123,
rule_active = 1,
rule_priority = 100;
-- Regel: Kritische Meldungen -> Ticket erstellen
INSERT INTO monitoring_syslog_rules SET
rule_name = 'Critical Alerts',
rule_client_id = 456,
rule_pattern = 'error|critical|fail',
rule_pattern_type = 'regex',
rule_field = 'message',
rule_action = 'create_ticket',
rule_severity_filter = '0,1,2,3',
rule_active = 1,
rule_priority = 10;
🚨 Monitoring und Wartung
Log-Überwachung
# Worker-Logs überwachen
sudo journalctl -u myit-worker -f
# Syslog-Empfang testen
sudo tcpdump -i any port 514
# SNMP-Polls testen
snmpwalk -v2c -c public 192.168.1.50 1.3.6.1.2.1.1.1.0
Performance-Tuning
Für hohe Syslog-Volumina:
[syslog]
processing_threads = 8
batch_size = 100
max_queue_size = 10000
Für viele SNMP-Geräte:
[snmp]
max_concurrent_polls = 20
poll_interval = 600
timeout = 10
Backup und Recovery
# Worker-Konfiguration sichern
sudo tar -czf myit-worker-backup-$(date +%Y%m%d).tar.gz \
/opt/myit-worker/config/ \
/etc/systemd/system/myit-worker.service
# Datenbank-Backup (falls lokale Zwischenspeicherung)
sudo sqlite3 /opt/myit-worker/data/worker.db ".backup /opt/myit-worker/backup/worker-$(date +%Y%m%d).db"
🔐 Sicherheit
SSL/TLS-Konfiguration
[itflow]
verify_ssl = true
ssl_cert_path = /opt/myit-worker/certs/itflow.crt
ssl_key_path = /opt/myit-worker/certs/itflow.key
Firewall-Regeln
# UFW-Regeln für Worker
sudo ufw allow 514/udp comment "Syslog"
sudo ufw allow 22/tcp comment "SSH"
sudo ufw allow out 443/tcp comment "HTTPS to ITFlow"
sudo ufw enable
API-Key-Rotation
# Neuen API-Key in ITFlow generieren
# Worker-Konfiguration aktualisieren
sudo nano /opt/myit-worker/config/worker.conf
# Worker neustarten
sudo systemctl restart myit-worker
📈 Überwachung der Worker-Performance
Metriken in ITFlow
- Worker-Status (Online/Offline)
- Letzter Heartbeat
- Verarbeitete Syslog-Nachrichten/Stunde
- SNMP-Poll-Erfolgsrate
- Fehlerrate und Latenz
Lokale Monitoring-Befehle
# Worker-Status
sudo systemctl status myit-worker
# Ressourcenverbrauch
top -p $(pgrep -f myit-worker)
# Netzwerk-Statistiken
ss -tuln | grep :514
ss -tuln | grep :161
# Disk-Usage (Syslog-Retention)
du -sh /opt/myit-worker/data/
🆘 Troubleshooting
Häufige Probleme
1. Worker registriert sich nicht:
# API-Konnektivität testen
curl -I https://myit.center/api/v1/monitoring/worker_heartbeat.php
# DNS-Auflösung prüfen
nslookup myit.center
# Firewall-Regeln prüfen
sudo iptables -L -n
2. Syslog-Nachrichten kommen nicht an:
# Syslog-Port prüfen
sudo netstat -ulnp | grep :514
# Test-Nachricht senden
logger -n 127.0.0.1 -P 514 "Test message from $(hostname)"
# Rsyslog-Konfiguration testen
sudo rsyslogd -N1
3. SNMP-Polls schlagen fehl:
# SNMP-Konnektivität testen
snmpget -v2c -c public 192.168.1.50 1.3.6.1.2.1.1.1.0
# MIB-Informationen laden
sudo download-mibs
Log-Analyse
# Worker-Fehler analysieren
sudo journalctl -u myit-worker --since "1 hour ago" | grep ERROR
# Syslog-Verarbeitung debuggen
sudo journalctl -u myit-worker --since "10 minutes ago" | grep syslog
# API-Kommunikation debuggen
sudo journalctl -u myit-worker --since "5 minutes ago" | grep -i api
🔄 Updates und Wartung
Worker-Update
# Neues Worker-Skript herunterladen
sudo wget -O /opt/myit-worker/myit-worker.py.new \
https://raw.githubusercontent.com/itflow-org/itflow/main/scripts/myit-worker.py
# Backup der aktuellen Version
sudo cp /opt/myit-worker/myit-worker.py /opt/myit-worker/myit-worker.py.backup
# Update anwenden
sudo mv /opt/myit-worker/myit-worker.py.new /opt/myit-worker/myit-worker.py
sudo chmod +x /opt/myit-worker/myit-worker.py
# Worker neustarten
sudo systemctl restart myit-worker
Automatische Updates (Optional)
# Cron-Job für automatische Updates
echo "0 2 * * 0 root /opt/myit-worker/scripts/update-worker.sh" | sudo tee -a /etc/crontab
Diagnose-Informationen sammeln
# Diagnose-Script ausführen
sudo /opt/myit-worker/scripts/collect-diagnostics.sh
# Ergebnis an Support senden
# Datei: /tmp/myit-worker-diagnostics-$(date +%Y%m%d).tar.gz
Version: 2.0
Letzte Aktualisierung: $(date +“%Y-%m-%d“)
Kompatibilität: myIT.Center 1.5+