Files
vinos_srv-monitor02/copilot-instructions.md
root d4af94c2b7 Doku erweitert: CRIF-Monitoring, Notification-Tags, SSH-Zugang
- CRIF Bürgel Export-Workflow dokumentiert (NAV → WinSCP → CRIF FTP)
- Notification-Tag-System erklärt (VAE, IFS, ECOM, Mail-Verteiler)
- SSH-Zugang zu SRV-JOB01 dokumentiert
- Bekannte Hosts erweitert

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 10:50:23 +01:00

212 lines
5.9 KiB
Markdown

# 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 <API_TOKEN>" \
-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": ["<TRIGGER_ID>"],
"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": ["<HOST_ID>"],
"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": "<TRIGGER_ID>",
"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