Ein Hinweis vorweg:
Das aktuelle Skript überwacht Warnungen und Fehler im JTL-Shopabgleich anhand von Sync.tDbeSLogeintrag und sendet pro Abgleichssitzung nur eine E-Mail.
Es wurde getestet mit JTL Wawi 2.0.3. Eine Haftung ist natürlich ausgeschlossen
Da JTL-Wawi von Haus aus keine einfache E-Mail-Benachrichtigung für Shopabgleich-Warnungen bietet, habe ich eine kleine Überwachung per PowerShell erstellt.
Sync.tDbeSLogeintrag
Überwacht werden alle Einträge mit:
nSchweregrad >= 64
Dadurch werden sowohl Warnungen als auch schwerwiegende Fehler erkannt.
JTL Shopabgleich Überwachung
powershell.exe
Argumente:
-ExecutionPolicy Bypass -File "C:\Scripts\JTL-Shopabgleich-Warnung.ps1"
Starten in:
C:\Scripts
Das aktuelle Skript überwacht Warnungen und Fehler im JTL-Shopabgleich anhand von Sync.tDbeSLogeintrag und sendet pro Abgleichssitzung nur eine E-Mail.
Es wurde getestet mit JTL Wawi 2.0.3. Eine Haftung ist natürlich ausgeschlossen
Ich hatte das Problem, dass Shopabgleich-Warnungen und Fehler oft erst Stunden später bemerkt wurden. Daher habe ich eine kleine PowerShell-Überwachung gebaut, die direkt die JTL-Logtabelle Sync.tDbeSLogeintrag überwacht und bei nSchweregrad >= 64 automatisch eine E-Mail verschickt. Vielleicht hilft es dem einen oder anderen. Die Lösung funktioniert unabhängig von Workflows oder externen Monitoring-Systemen.
Da JTL-Wawi von Haus aus keine einfache E-Mail-Benachrichtigung für Shopabgleich-Warnungen bietet, habe ich eine kleine Überwachung per PowerShell erstellt.
Voraussetzungen
- JTL-Wawi mit SQL Server
- PowerShell
- SMTP-Zugang für den Mailversand
- Windows Aufgabenplanung
SQL-Tabelle
Die Meldungen werden aus folgender Tabelle gelesen:Sync.tDbeSLogeintrag
Überwacht werden alle Einträge mit:
nSchweregrad >= 64
Dadurch werden sowohl Warnungen als auch schwerwiegende Fehler erkannt.
1. PowerShell-Skript
Datei z.B. speichern unter: C:\Scripts\JTL-Shopabgleich-Warnung.ps1
Code:
$Server = "SERVERNAME\INSTANZ" $Database = "eazybusiness" $Empfaenger = "empfaenger@domain.de" $Absender = "absender@domain.de" $SmtpServer = "smtp.domain.de" $SmtpPort = 587 $SmtpUser = "smtp-benutzer" $SmtpPass = "PASSWORT" $StateFile = "C:\Scripts\LastJtlWarning.txt" $Query = @" SELECT TOP 1 kSyncLogsitzung, MAX(dZeitpunkt) AS LetzteWarnung, COUNT(*) AS AnzahlWarnungen, MAX(cMeldung) AS Beispielmeldung FROM Sync.tDbeSLogeintrag WHERE dZeitpunkt > DATEADD(MINUTE,-10,GETDATE()) AND nSchweregrad >= 64 GROUP BY kSyncLogsitzung ORDER BY MAX(dZeitpunkt) DESC; "@ $Result = Invoke-Sqlcmd -ServerInstance $Server -Database $Database -Query $Query if (-not $Result) { exit } $CurrentSession = $Result.kSyncLogsitzung $LastSession = "" if (Test-Path $StateFile) { $LastSession = Get-Content $StateFile } if ($CurrentSession -eq $LastSession) { exit } $Body = @" JTL Shop-Abgleich Warnung oder Fehler erkannt Sitzung: $($Result.kSyncLogsitzung) Zeitpunkt: $($Result.LetzteWarnung) Anzahl Meldungen: $($Result.AnzahlWarnungen) Beispielmeldung: $($Result.Beispielmeldung) "@ $SecurePass = ConvertTo-SecureString $SmtpPass -AsPlainText -Force $Cred = New-Object System.Management.Automation.PSCredential ($SmtpUser, $SecurePass) Send-MailMessage -From $Absender -To $Empfaenger -Subject "JTL Shop-Abgleich Warnung/Fehler (Sitzung $CurrentSession)" -Body $Body -SmtpServer $SmtpServer -Port $SmtpPort -UseSsl -Credential $Cred Set-Content -Path $StateFile -Value $CurrentSession
2. Aufgabenplanung einrichten
Neue Aufgabe erstellen
Name:JTL Shopabgleich Überwachung
Trigger
- Einmal
- Wiederholen alle: 5 Minuten
- Dauer: Unbegrenzt
Aktion
Programm:powershell.exe
Argumente:
-ExecutionPolicy Bypass -File "C:\Scripts\JTL-Shopabgleich-Warnung.ps1"
Starten in:
C:\Scripts
Funktionsweise
- Prüft alle 5 Minuten auf neue Warnungen oder Fehler.
- Erkennt alle Einträge mit nSchweregrad >= 64.
- Sendet eine E-Mail mit der Fehlermeldung.
- Speichert die zuletzt gemeldete kSyncLogsitzung.
- Dadurch wird pro fehlerhaftem Abgleich nur eine einzige E-Mail versendet.
Hinweise
- Die Lösung wurde mit JTL-Wawi und Microsoft SQL Server getestet.
- Falls der SQL-Server eine benannte Instanz verwendet, muss der Instanzname im Parameter $Server angegeben werden.
- SMTP-Zugangsdaten müssen entsprechend angepasst werden.
- Das Skript kann problemlos erweitert werden, um mehrere Empfänger oder Teams-Benachrichtigungen zu unterstützen.