Zum Inhalt springen

myIT Extended Monitoring – myit.worker Integration Guide

  • Jonas 

🎯 Ü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

  1. In ITFlow zu Monitoring > Worker navigieren
  2. „Worker hinzufügen“ klicken
  3. Worker-Details eingeben
  4. API-Key generieren und in Worker-Konfiguration eintragen

📊 SNMP-Konfiguration

1. SNMP-Geräte hinzufügen

Über ITFlow-Interface:

  1. Monitoring > SNMP Geräte aufrufen
  2. „Gerät hinzufügen“ klicken
  3. 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+