Files
vinos_srv-monitor02/copilot-instructions.md
root c2112820f5 Doku komplett überarbeitet: Quick Reference, Checklisten, SSH-Befehle
Neue Inhalte:
- Inhaltsverzeichnis für schnelle Navigation
- Quick Reference mit API-Methoden, Host-IDs, Trigger-IDs
- Combined Query für Probleme+Hosts (Einschritt-Abfrage)
- Windows Zabbix Agent Pfade
- Wichtige Item-Keys mit Bedeutung dokumentiert
- Netzlaufwerk-Pfade (NAV-Schnittstellen)
- Troubleshooting-Checklisten (MSSQL, Tasks, Interfaces)
- SSH-Befehle Sammlung für SRV-JOB01
- Scheduled Tasks Inventar
- Erweiterte Pitfalls

Ziel: Schnellere Problemlösung für zukünftige Agenten

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

13 KiB

VINOS Zabbix Server (srv-monitor02) - Copilot Instructions

Inhaltsverzeichnis

  1. Mandatory Rules
  2. System Overview
  3. Quick Reference
  4. API-Zugriff
  5. Bekannte Hosts
  6. Netzlaufwerk-Pfade
  7. Troubleshooting-Checklisten
  8. Bekannte Probleme & Lösungen
  9. Notification-System
  10. SSH-Befehle Sammlung
  11. Pitfalls

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
  • Bei trigger.update mit tags: ALLE existierenden Tags mit angeben, sonst werden sie überschrieben!

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

Quick Reference

API-Methoden Schnellübersicht

Aufgabe Methode Wichtige Parameter
Aktuelle Probleme problem.get recent: true
Problem → Host trigger.get triggerids: [X], selectHosts
Alle feuernden Trigger trigger.get only_true: true, active: true
Host suchen host.get search: {name: "..."}
Items eines Hosts item.get hostids: [X]
Trigger aktivieren/deaktivieren trigger.update triggerid, status
Tag hinzufügen trigger.update triggerid, tags: [...]

Host-ID Schnellreferenz

Host HostID Typ
SRV-DB12 REMA Datenbank 10786 MSSQL
SRV-JOB01 10636 Windows/Tasks

Wichtige Trigger-IDs

TriggerID Name Host Kategorie
44829 processing_backup_monitoring_hours_crif SRV-JOB01 Interface/CRIF
47905 MSSQL Job 'Backup_tgl.Subplan_1' SRV-DB12 Datenbank
47907 MSSQL Job 'Backup_Log.Subplan_1' SRV-DB12 Datenbank

API-Zugriff

Authentifizierung (Zabbix 7.x)

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
  • apiinfo.version OHNE Authorization Header aufrufen

Nützliche Abfragen

Alle feuernden Trigger MIT Host-Informationen (Einschritt-Abfrage):

{
  "method": "trigger.get",
  "params": {
    "output": ["triggerid", "description", "priority", "lastchange"],
    "only_true": true,
    "active": true,
    "expandDescription": true,
    "selectHosts": ["hostid", "host", "name"],
    "selectItems": ["itemid", "name", "key_", "lastvalue"],
    "selectTags": "extend",
    "sortfield": "lastchange",
    "sortorder": "DESC",
    "limit": 30
  }
}

Dies zeigt alle aktuell feuernden Trigger direkt mit Host-Namen - effizienter als problem.get + trigger.get!

Aktuelle Probleme (nur IDs):

{
  "method": "problem.get",
  "params": {
    "output": "extend",
    "recent": true,
    "sortfield": ["eventid"],
    "sortorder": "DESC",
    "limit": 30
  }
}

Hinweis: objectid im Result = Trigger-ID

Trigger-Details mit Host:

{
  "method": "trigger.get",
  "params": {
    "output": "extend",
    "triggerids": ["<TRIGGER_ID>"],
    "expandDescription": true,
    "selectHosts": ["hostid", "host", "name"],
    "selectItems": ["itemid", "name", "key_", "lastvalue"],
    "selectTags": "extend"
  }
}

Host-ID ermitteln:

{
  "method": "host.get",
  "params": {
    "output": ["hostid", "host", "name"],
    "search": {"name": "SRV-JOB"}
  }
}

Items eines Hosts abfragen:

{
  "method": "item.get",
  "params": {
    "output": ["itemid", "name", "key_", "lastvalue", "lastclock"],
    "hostids": ["<HOST_ID>"],
    "search": { "key_": "suchbegriff" }
  }
}

Bekannte Hosts

Host HostID Typ Beschreibung SSH-Zugang
SRV-DB12 REMA Datenbank 10786 MSSQL Wartungspläne, Backups -
SRV-JOB01 10636 Windows Scheduled Tasks, WinSCP, CRIF vinos\rwi@srv-job01

Windows Zabbix Agent Pfade

Server Agent Version Config-Pfad
SRV-JOB01 Agent 2 C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf
Standard Win Agent 2 C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf
Standard Win Agent 1 C:\Program Files\Zabbix Agent\zabbix_agentd.conf

UserParameter finden:

Get-Content "C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf" | Select-String "UserParameter"

Wichtige Item-Keys (UserParameters)

Item Key Host Bedeutung Return
processing_backup_monitoring_hours_crif SRV-JOB01 CRIF Backup-Alter 0=OK, 1=Fehler (keine Datei <1 Tag)
processing_import_monitoring_crif SRV-JOB01 CRIF Import Status 0=OK, 1=Fehler
mssql.job.runstatus[*] DB-Server SQL Job Status 0=Fehler, 1=OK
mssql.job.lastrunstatusmessage[*] DB-Server SQL Job Fehlermeldung Text

Netzlaufwerk-Pfade

NAV-Schnittstellen

UNC-Pfad Zweck
\\vinos.local\sys\nav\interfaces\ Alle NAV-Schnittstellen (Root)
\\vinos.local\sys\nav\interfaces\CRIFBuergel\ CRIF Bürgel Export
\\vinos.local\sys\nav\interfaces\CRIFBuergel\exp\ Pending Exports (NAV legt hier ab)
\\vinos.local\sys\nav\interfaces\CRIFBuergel\backup\ Erfolgreiche Exports (nach Upload)
\\vinos.local\sys\nav\interfaces\CRIFBuergel\log\ WinSCP Transfer-Logs
\\vinos.local\sys\nav\interfaces\HVB\ HVB Schnittstelle

Externe Systeme

System Host Port Pfad Zweck
CRIF Bürgel ftp.crif.de 22 (SFTP) /in/WeinVinos/ Export-Upload

Troubleshooting-Checklisten

MSSQL Job schlägt fehl

  1. Zabbix-Problem analysieren (objectid = Trigger-ID)
  2. mssql.job.lastrunstatusmessage Item prüfen für Fehlermeldung
  3. Fehlercode recherchieren:
    • 0x534 = Account nicht im AD auflösbar → Job-Besitzer ändern
  4. Job-Besitzer in SSMS prüfen: SQL Server Agent → Jobs → Properties
  5. Job-History in SSMS prüfen
  6. Nach Fix: Manuell Job starten zum Verifizieren (Rechtsklick → Start Job)
  7. Zabbix-Problem sollte sich automatisch schließen nach erfolgreichem Lauf

Scheduled Task schlägt fehl (Windows)

# 1. Task-Status prüfen
ssh 'vinos\rwi@srv-job01' "Get-ScheduledTask -TaskName 'TASKNAME' | Select-Object TaskName, State"

# 2. Letzte Ausführung und Result
ssh 'vinos\rwi@srv-job01' "Get-ScheduledTaskInfo -TaskName 'TASKNAME' | Select-Object LastRunTime, LastTaskResult, NextRunTime"

# 3. Task manuell starten
ssh 'vinos\rwi@srv-job01' "Start-ScheduledTask -TaskName 'TASKNAME'"

LastTaskResult Codes:

  • 0 = Erfolg
  • 1 = Fehler (allgemein)
  • 267009 = Task läuft noch

Interface-Export fehlt (CRIF, HVB, etc.)

  1. Export-Ordner prüfen: Dateien vorhanden?
    ssh 'vinos\rwi@srv-job01' "Get-ChildItem '\\vinos.local\sys\nav\interfaces\CRIFBuergel\exp'"
    
  2. Backup-Ordner prüfen: Wann war letzte erfolgreiche Datei?
    ssh 'vinos\rwi@srv-job01' "Get-ChildItem '\\vinos.local\sys\nav\interfaces\CRIFBuergel\backup' | Sort-Object LastWriteTime -Descending | Select-Object -First 5 Name, LastWriteTime"
    
  3. NAV Aufgabenwarteschlange prüfen (häufigste Ursache!)
  4. WinSCP/Transfer-Log prüfen:
    ssh 'vinos\rwi@srv-job01' "Get-Content '\\vinos.local\sys\nav\interfaces\CRIFBuergel\log\2026-01_Transfer-FilesWinSCP.log' | Select-Object -Last 30"
    
  5. SFTP-Verbindung manuell testen (Config: C:\Tasks\crifbuergel\CRIF-config.xml)

Zabbix-Problem bleibt nach Fix offen

  1. Item-Wert prüfen - hat sich der lastvalue geändert?
  2. lastclock prüfen - wann wurde zuletzt abgefragt?
  3. Problem-Status prüfen: r_eventid vorhanden = resolved
  4. Bei Item-Type "Active": Warten auf nächsten Agent-Push
  5. Seite refreshen (F5) - UI-Cache

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: SQL Server kann Job-Besitzer nicht im AD auflösen (User gelöscht/deaktiviert).

Lösung - Job-Besitzer auf sa ändern:

USE msdb;
GO
EXEC dbo.sp_update_job
    @job_name = N'Backup_tgl.Subplan_1',
    @owner_login_name = N'sa';
GO

Oder via SSMS: Job Properties → General → Owner → sa

Nach Fix: Manuell Job starten, Zabbix-Problem schließt automatisch.

CRIF Bürgel Export-Monitoring (processing_backup_monitoring_hours_crif)

Trigger: Prüft ob in \\vinos.local\sys\nav\interfaces\CRIFBuergel\backup Dateien jünger als 1 Tag sind.

Ablauf des CRIF-Exports:

  1. NAV/Business Central erstellt CL_*.dat.zip in \CRIFBuergel\exp\
  2. Scheduled Task Transfer-FilesWinSCP (SRV-JOB01, 02:00) lädt zu ftp.crif.de hoch
  3. Nach Upload: Dateien werden nach \CRIFBuergel\backup\ verschoben

Häufigste Ursache: NAV Aufgabenwarteschlange läuft nicht!

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.

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_Mail_HM_Mo-Fr_9-1730 HM nur Werktags 9-17:30
Meldung_RM_Monitoring RM_Monitoring@vinos.de
Meldung_Mail_Viki viki@vinos.de

Tag zu Trigger hinzufügen (API):

{
  "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!

Aktuelle Tags eines Triggers abfragen:

{
  "method": "trigger.get",
  "params": {
    "triggerids": ["<TRIGGER_ID>"],
    "selectTags": "extend"
  }
}

SSH-Befehle Sammlung (SRV-JOB01)

Scheduled Tasks

# Alle aktiven Tasks auflisten
ssh 'vinos\rwi@srv-job01' "Get-ScheduledTask | Where-Object {\$_.State -ne 'Disabled'} | Select-Object TaskName, State, TaskPath | Format-Table -AutoSize"

# Task-Details mit letzter Ausführung
ssh 'vinos\rwi@srv-job01' "Get-ScheduledTaskInfo -TaskName 'Transfer-FilesWinSCP' -TaskPath '\Crifbürgel\'"

# Task manuell starten
ssh 'vinos\rwi@srv-job01' "Start-ScheduledTask -TaskName 'Transfer-FilesWinSCP' -TaskPath '\Crifbürgel\'"

# Task-Actions anzeigen (was wird ausgeführt)
ssh 'vinos\rwi@srv-job01' "(Get-ScheduledTask -TaskName 'Transfer-FilesWinSCP').Actions | Select-Object Execute, Arguments"

Dateien und Ordner

# Dateien auflisten mit Datum
ssh 'vinos\rwi@srv-job01' "Get-ChildItem '\\vinos.local\sys\nav\interfaces\CRIFBuergel\backup' | Sort-Object LastWriteTime -Descending | Select-Object -First 10 Name, LastWriteTime, Length"

# Prüfen ob Ordner leer ist
ssh 'vinos\rwi@srv-job01' "if ((Get-ChildItem 'PFAD' | Measure-Object).Count -eq 0) { 'LEER' } else { 'Dateien vorhanden' }"

# Log-Datei lesen (letzte 30 Zeilen)
ssh 'vinos\rwi@srv-job01' "Get-Content 'LOGPFAD' | Select-Object -Last 30"

Zabbix Agent

# Agent-Config lesen
ssh 'vinos\rwi@srv-job01' "Get-Content 'C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf'"

# UserParameter finden
ssh 'vinos\rwi@srv-job01' "Get-Content 'C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf' | Select-String 'UserParameter'"

# Agent-Service Status
ssh 'vinos\rwi@srv-job01' "Get-Service *zabbix* | Select-Object Name, Status, StartType"

Scheduled Tasks Inventar (SRV-JOB01)

Task Name TaskPath Zeitplan Zweck
Transfer-FilesWinSCP \Crifbürgel\ 02:00 täglich CRIF Export Upload zu ftp.crif.de
Remove-Oldfiles.ps1 \Crifbürgel\ 18:00 täglich Alte CRIF-Backups löschen (>30 Tage)

Pitfalls

  • API-Version: Zabbix 7.x hat Breaking Changes gegenüber 6.x
  • SSL-Zertifikat: -sk Flag bei curl verwenden (self-signed cert)
  • Timestamps: Zabbix liefert Unix-Timestamps, konvertieren mit date -d @TIMESTAMP
  • Tags überschreiben: Bei trigger.update immer ALLE Tags angeben
  • PowerShell Escaping: Bei SSH zu Windows auf $ und Quotes achten (\$ verwenden)
  • Active Items: Wert aktualisiert sich erst beim nächsten Agent-Push, nicht sofort