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>
13 KiB
VINOS Zabbix Server (srv-monitor02) - Copilot Instructions
Inhaltsverzeichnis
- Mandatory Rules
- System Overview
- Quick Reference
- API-Zugriff
- Bekannte Hosts
- Netzlaufwerk-Pfade
- Troubleshooting-Checklisten
- Bekannte Probleme & Lösungen
- Notification-System
- SSH-Befehle Sammlung
- 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.updatemittags: 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
selectHostsbeiproblem.getnicht mehr unterstütztapiinfo.versionOHNE 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
- Zabbix-Problem analysieren (
objectid= Trigger-ID) mssql.job.lastrunstatusmessageItem prüfen für Fehlermeldung- Fehlercode recherchieren:
0x534= Account nicht im AD auflösbar → Job-Besitzer ändern
- Job-Besitzer in SSMS prüfen: SQL Server Agent → Jobs → Properties
- Job-History in SSMS prüfen
- Nach Fix: Manuell Job starten zum Verifizieren (Rechtsklick → Start Job)
- 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= Erfolg1= Fehler (allgemein)267009= Task läuft noch
Interface-Export fehlt (CRIF, HVB, etc.)
- Export-Ordner prüfen: Dateien vorhanden?
ssh 'vinos\rwi@srv-job01' "Get-ChildItem '\\vinos.local\sys\nav\interfaces\CRIFBuergel\exp'" - 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" - NAV Aufgabenwarteschlange prüfen (häufigste Ursache!)
- 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" - SFTP-Verbindung manuell testen (Config:
C:\Tasks\crifbuergel\CRIF-config.xml)
Zabbix-Problem bleibt nach Fix offen
- Item-Wert prüfen - hat sich der
lastvaluegeändert? lastclockprüfen - wann wurde zuletzt abgefragt?- Problem-Status prüfen:
r_eventidvorhanden = resolved - Bei Item-Type "Active": Warten auf nächsten Agent-Push
- 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:
- NAV/Business Central erstellt
CL_*.dat.zipin\CRIFBuergel\exp\ - Scheduled Task
Transfer-FilesWinSCP(SRV-JOB01, 02:00) lädt zuftp.crif.dehoch - 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:
-skFlag bei curl verwenden (self-signed cert) - Timestamps: Zabbix liefert Unix-Timestamps, konvertieren mit
date -d @TIMESTAMP - Tags überschreiben: Bei
trigger.updateimmer 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