# VINOS Zabbix Server (srv-monitor02) - Copilot Instructions ## MANDATORY RULES - **API-Schlüssel:** Liegt in `api.txt` (NICHT committen!) - **Zabbix Version:** 7.0.3 (API-Syntax beachten - 7.x hat geänderte Parameter) - Authentifizierung per Bearer Token im Authorization Header ## System Overview | Eigenschaft | Wert | |-------------|------| | **Server** | srv-monitor02 | | **URL** | https://srv-monitor02/ | | **API Endpoint** | https://srv-monitor02/api_jsonrpc.php | | **Zabbix Version** | 7.0.3 | | **Kunde** | VINOS | ## API-Zugriff ### Authentifizierung (Zabbix 7.x) ```bash curl -sk -X POST "https://srv-monitor02/api_jsonrpc.php" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer " \ -d '{ "jsonrpc": "2.0", "method": "problem.get", "params": { ... }, "id": 1 }' ``` ### Wichtige API-Änderungen in 7.x - `selectHosts` bei `problem.get` nicht mehr unterstützt - stattdessen `trigger.get` mit `selectHosts` verwenden - `apiinfo.version` OHNE Authorization Header aufrufen ### Nützliche Abfragen **Aktuelle Probleme:** ```json { "method": "problem.get", "params": { "output": "extend", "recent": true, "sortfield": ["eventid"], "sortorder": "DESC", "limit": 30 } } ``` **Trigger-Details mit Host:** ```json { "method": "trigger.get", "params": { "output": "extend", "triggerids": [""], "expandDescription": true, "selectHosts": ["hostid", "host", "name"], "selectItems": ["itemid", "name", "key_", "lastvalue"] } } ``` **Items eines Hosts abfragen:** ```json { "method": "item.get", "params": { "output": ["itemid", "name", "key_", "lastvalue", "lastclock"], "hostids": [""], "search": { "key_": "suchbegriff" } } } ``` ## Bekannte Hosts | Host | HostID | Beschreibung | |------|--------|--------------| | SRV-DB12 REMA Datenbank | 10786 | MSSQL Server mit Wartungsplänen | | SRV-JOB01 | 10636 | Windows Server für Scheduled Tasks (WinSCP, Monitoring) | ### SSH-Zugang zu Windows-Servern SRV-JOB01 hat OpenSSH installiert. SSH-Key ist bereits hinterlegt: ```bash ssh 'vinos\rwi@srv-job01' "Get-ScheduledTask" ``` **Zabbix Agent 2 Config:** `C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf` ## Bekannte Probleme & Lösungen ### MSSQL Job-Fehler: Fehlercode 0x534 (Fehler 15404) **Symptom:** ``` Auftragsfehler: Es kann nicht bestimmt werden, ob der Besitzer ('VINOS\username') von Auftrag 'Jobname' Serverzugriff aufweist. (Ursache: Die Informationen über Windows NT-Gruppe oder -Benutzer "VINOS\username" konnten nicht abgerufen werden, Fehlercode 0x534. [SQLSTATE 42000] (Fehler 15404)) ``` **Ursache:** Der SQL Server kann den Job-Besitzer (Windows-Account) nicht mehr im Active Directory auflösen. **Lösungen:** 1. **Job-Besitzer auf `sa` ändern (empfohlen):** ```sql USE msdb; GO EXEC dbo.sp_update_job @job_name = N'Backup_tgl.Subplan_1', @owner_login_name = N'sa'; GO ``` 2. **Alle Jobs eines Benutzers auf `sa` ändern:** ```sql USE msdb; GO DECLARE @job_id uniqueidentifier DECLARE job_cursor CURSOR FOR SELECT job_id FROM sysjobs WHERE owner_sid = SUSER_SID('VINOS\gt') OPEN job_cursor FETCH NEXT FROM job_cursor INTO @job_id WHILE @@FETCH_STATUS = 0 BEGIN EXEC dbo.sp_update_job @job_id = @job_id, @owner_login_name = N'sa' FETCH NEXT FROM job_cursor INTO @job_id END CLOSE job_cursor DEALLOCATE job_cursor GO ``` 3. **Via SSMS:** - Job Properties → General → Owner → Auf `sa` ändern **Verifizierung nach Fix:** - In Zabbix: Problem sollte nach nächstem erfolgreichen Job-Lauf automatisch schließen - Oder manuell Job starten und Status prüfen ### CRIF Bürgel Export-Monitoring (`processing_backup_monitoring_hours_crif`) **Trigger:** Prüft ob im Verzeichnis `\\vinos.local\sys\nav\interfaces\CRIFBuergel\backup` Dateien vorhanden sind, die jünger als 1 Tag sind. **Ablauf des CRIF-Exports:** 1. **NAV/Business Central** erstellt `CL_*.dat.zip` Exportdateien in `\CRIFBuergel\exp\` 2. **Scheduled Task** `Transfer-FilesWinSCP` (SRV-JOB01, täglich 02:00) lädt Dateien zu `ftp.crif.de` hoch 3. Nach erfolgreichem Upload werden Dateien nach `\CRIFBuergel\backup\` verschoben **Bei Fehler prüfen:** 1. **Export-Ordner leer?** → NAV Aufgabenwarteschlange prüfen (häufigste Ursache!) 2. **WinSCP-Log prüfen:** `\\vinos.local\sys\nav\interfaces\CRIFBuergel\log\` 3. **SFTP-Verbindung testen:** Config in `C:\Tasks\crifbuergel\CRIF-config.xml` **CRIF FTP-Server Struktur:** - `/in/WeinVinos/` - Upload-Ziel für Exports - `/out/` - (leer, keine Downloads) ## Notification-System (Tags) Zabbix Actions filtern nach **Tags** auf Triggern. Um Benachrichtigungen zu aktivieren, muss der Trigger das entsprechende Tag haben. | Tag | Ziel | |-----|------| | `Meldung_Webhook_VAE-Meldungen` | MS Teams VAE-Kanal | | `Meldung_Webhook_IFS-Meldungen` | MS Teams IFS-Kanal | | `Meldung_Webhook_ECOM-Meldungen` | MS Teams ECOM-Kanal | | `Meldung_Mail_Bereitschaft` | bereitschaft.it@vinos.de | | `Meldung_Mail_BI` | BI-Team | | `Meldung_Mail_HM` | HM_Monitoring@vinos.de | | `Meldung_RM_Monitoring` | RM_Monitoring@vinos.de | | `Meldung_Mail_Viki` | viki@vinos.de | **Tag zu Trigger hinzufügen (API):** ```json { "method": "trigger.update", "params": { "triggerid": "", "tags": [ {"tag": "existing_tag", "value": ""}, {"tag": "Meldung_Webhook_VAE-Meldungen", "value": ""} ] } } ``` **Wichtig:** Alle existierenden Tags müssen mit angegeben werden, sonst werden sie überschrieben! ## Development Workflow 1. API-Abfragen testen mit `curl` und `jq` 2. Bei komplexeren Abfragen: Immer zuerst die relevanten IDs ermitteln 3. Dokumentation aktualisieren bei neuen Erkenntnissen ## Pitfalls - **API-Version prüfen:** Zabbix 7.x hat viele Breaking Changes gegenüber 6.x - **SSL-Zertifikat:** `-sk` Flag bei curl verwenden (self-signed cert) - **Timestamps:** Zabbix liefert Unix-Timestamps, ggf. konvertieren