API-Referenz Log Manager
Die Schnittstelle unter dem Endpunkt logmanager/ bietet Zugriff auf die im Shopsystem erfassten Logs. Sie ermöglicht das Abrufen einzelner Logs oder ganzer Log-Listen sowie die gezielte Analyse durch Filterung nach Parametern wie Schweregrad, Subshop oder Zeitstempel.
Zusätzlich können Log-Gruppen erstellt und verwaltet werden, um spezifische Filterkriterien zu speichern und Benachrichtigungen bei neuen relevanten Einträgen zu erhalten.
Die API unterstützt damit sowohl die manuelle Analyse als auch eine automatisierte Überwachung von Systemereignissen.
Zur Nutzung der Schnittstellen sind entsprechende Zugriffsrechte erforderlich.
Inhaltsverzeichnis:
1. Unterstützte Methoden
Angabe aller unterstützten Methoden.
Befehl/Info | Endpunkte | GET | POST | PUT | DELETE |
|---|---|---|---|---|---|
Logs | logmanager/logs | ||||
Log-Gruppen | logmanager/groups |
2. Ressourcen: Felder in Logs
2.1 Wichtige Datenfelder in Logs
Logs im System basieren auf Daten aus Elasticsearch und unterliegen daher keiner starren Struktur. Dennoch gibt es zentrale Felder, die in nahezu allen Log-Einträgen vorkommen und für Filter, Sortierung oder Auswertung genutzt werden können.
Die folgende Übersicht listet die wichtigsten dieser Felder:
Name | Typ | Verwendung |
|---|---|---|
@timestamp | String | Zeitpunkt der Erstellung |
_id | String | Eindeutige ID des Logs |
app | String | Name des Programms, das das Log generiert hat (z.B. |
logger | String | Name des Loggers, der der Kategorisierung dient (z.B. |
msg | String | Die Nachricht des Logs |
sessionId (optional) | String | Eindeutige ID der Sitzung, in der das Log generiert wurde |
severity | String | Schweregrad des Logs, der der Kategorisierung dient. Mögliche Werte:
|
shopId | String | Der technische Name des Shops |
stageId (optional) | String | Stage, auf der das Log generierte wurde |
subshopId (optional) | String | Subshop, in dem das Log generiert wurde |
Hinweis: Weitere Felder können abhängig vom Ursprung und Kontext des Logs vorhanden sein. Die tatsächliche Struktur einzelner Log-Einträge kann abweichen.
Beispiel:
Der folgende Log-Eintrag stammt aus dem System und zeigt typische Felder, wie sie von Elasticsearch geliefert werden. Optional enthaltene Felder wie agent, host oder tags können je nach Ursprung des Logs variieren.
{
"@timestamp": "2025-05-07T06:51:15.148Z",
"@version": "1",
"_id": "KJGDqZYBCZfVknTATek6",
"agent": {
"ephemeral_id": "166b1b26-3479-44a0-abd5-01eb97dfde6a",
"hostname": "849eec2f201d",
"id": "1bac5950-93cd-45c0-83ef-96f0f835523b",
"name": "849eec2f201d",
"type": "filebeat",
"version": "7.17.3"
},
"app": "restapi",
"ecs": {
"version": "1.12.0"
},
"host": {
"name": "849eec2f201d"
},
"hostname": "db762f83481f",
"input": {
"type": "log"
},
"log": {
"file": {
"path": "/opt/ws/v9-logs/restapi/2025_05_07.log"
},
"offset": 4746
},
"logger": "restapi.controller.statistics",
"msg": "Failed to get yesterday's active visitors: {\"error\":{\"root_cause\":[{\"type\":\"index_not_found_exception\",\"reason\":\"no such index [visitors]\",\"resource.type\":\"index_or_alias\",\"resource.id\":\"visitors\",\"index_uuid\":\"_na_\",\"index\":\"visitors\"}],\"type\":\"index_not_found_exception\",\"reason\":\"no such index [visitors]\",\"resource.type\":\"index_or_alias\",\"resource.id\":\"visitors\",\"index_uuid\":\"_na_\",\"index\":\"visitors\"},\"status\":404}",
"severity": "err",
"shopId": "myshop",
"tags": [
"v9",
"beats_input_raw_event"
]
}
2.2 Programme, die Logs erzeugen
Das Feld app in einem Logeintrag gibt an, welches Programm oder welcher Dienst das Log erzeugt hat. Die folgende Übersicht listet die möglichen Programme auf, die in der Praxis als app-Wert erscheinen können – inklusive einer kurzen Beschreibung ihrer Aufgabe innerhalb des Shop-Systems.
Werte A - Z (app) | Beschreibung |
|---|---|
| Backend-Interface für die Shop-Verwaltung |
| Automatisierungsprozesse im Shop-System |
| Automatischer Dienst zur Ausführung und Zustellung serverseitiger HTTP-Benachrichtigungen (Asynchronous Server Side Events) |
| Verwaltung von Benachrichtigungen bei wieder verfügbaren Artikeln |
| Aktualisieren vom Cache |
| Verarbeitet automatisch Zahlungs-Capture-Dateien für Bestellungen, führt bei Bedarf Zahlungsaufforderungen an den Zahlungsanbieter durch und verwaltet Wiederholungsversuche sowie Fehlerbehandlung. |
| Prozess, der Produkte Kategorien mit regelbasierter Produktzuweisung automatisch zuordnet. |
| Interner Dienst, der auf die Aktualisierung von Konfigurationsdaten reagiert |
| Erstellung von Datenfeeds für Exporte und von Sitemaps |
| Automatische Bereinigung nicht mehr benötigter Daten |
| Überwachung von Hintergrundprogrammen |
| Umwandlung von HTML in E-Mails |
| Prüft, ob es ungenutzte Produktbilder gibt und ob referenzierte Bilder existieren. |
| Konvertiert Bilder in andere Formate |
| Import von Daten wie Produkten, Kundendaten etc. |
| Sicherung versendeter E-Mails |
| Versand von E-Mails aus dem System heraus |
| Prozess, der Double-Opt-In-E-Mails mit einer Einladung zur Newsletter-Anmeldung versendet. |
| Benachrichtigungsdienst für die App |
| Versand von Bewertungsanfragen |
| Logs aus der REST-API |
| Indizierung von Produkten für die Shopsuche |
| Allgemeiner Shop-Prozess (z. B. Warenkorb, Checkout, Navigation) |
| Monitoring der System-Points-Nutzung |
| Aggregation und Aufbereitung statistischer Daten |
| Kompiliert Templates, kann über die REST API gestartet werden |
3. Methoden für Logs
Über die nachfolgenden Endpunkte lassen sich Log-Einträge aus dem System abrufen. Die Logs enthalten detaillierte Informationen zu Ereignissen im Shop, wie z. B. Fehlermeldungen, Debug-Ausgaben oder sicherheitsrelevante Hinweise.
Einträge können gefiltert und sortiert sowie einzeln nach ihrer ID geladen werden.
Für den Zugriff auf diese Daten sind entsprechende Leseberechtigungen erforderlich.
3.1 GET logmanager/logs
Über diesen Endpunkt kann eine Liste mit Logeinträgen abgefragt werden.
Die Ergebnisse lassen sich nach Zeitstempel, Schweregrad (severity), Shop, Subshop, Logger, Session-ID oder weiteren Feldern filtern und sortieren. Standardmäßig wird nach dem Feld @timestamp sortiert. Für die Abfrage kann ein Zeitraum mit filter_gte[createdAt] und filter_lte[createdAt] angegeben werden. Der Zugriff ist auf maximal 300 Einträge pro Anfrage begrenzt, eine Paginierung erfolgt über nextPageToken.
Die maximale Anzahl an Ergebnissen beträgt 10.000 - auch bei Paginierung. Darüber hinausgehende Daten können nicht abgerufen werden.
Zur Verfügung stehen Logs verschiedener Anwendungen (z. B. shop, restapi) und Quellen (z. B. filebeat). Sie enthalten strukturierte Metadaten und Fehlermeldungen, die zur Analyse von Prozessen oder Fehlern im Shop dienen. Um die tatsächlichen Logdateien oder Pfade zu ermitteln, kann das Feld log.file.path genutzt werden.
Beispiel
Zugriff auf bis zu 100 Logs aller Art im Zeitraum 2025.03.24–2025.04.24
https://www.<ihr-shop>.de/admin/api/v1/logmanager/logs?size=100&sort=@timestamp:asc&filter_eq[severity]=debug&filter_eq[severity]=info&filter_eq[severity]=warning&filter_eq[severity]=err&filter_eq[severity]=crit&filter_gte[createdAt]=2025-03-24T00:00:00.371Z&filter_lte[createdAt]=2025-04-23T23:59:59.371Z&filter_eq[subshopId]=deutschAntwort:
{
"endReached": false,
"items": [
{
"@timestamp": "2025-04-04T13:41:51.097Z",
"@version": "1",
"_id": "9e2uHpYBZKNjyb2oXatY",
"agent": {
"ephemeral_id": "70e334c2-f5ac-4599-aa32-dd5dc7d7551d",
"hostname": "9f46d9c66ba8",
"id": "1bac5950-93cd-45c0-83ef-96f0f835523b",
"name": "9f46d9c66ba8",
"type": "filebeat",
"version": "7.17.3"
},
"app": "shop",
"ecs": {
"version": "1.12.0"
},
"host": {
"name": "9f46d9c66ba8"
},
"hostname": "f87daf6dd2fe",
"input": {
"type": "log"
},
"log": {
"file": {
"path": "/opt/ws/v9-logs/shop/2025_04_04.log"
},
"offset": 5825
},
"logger": "form",
"msg": "Missing recaptcha parameters:\nverifyUrl='https://www.google.com/re...",
"sessionId": "973dda5db818b2a57942baed66f27f0939f78ee162b6bb65490e8fea3772791e",
"severity": "crit",
"shopId": "myshop",
"stageId": "3",
"subshopId": "deutsch",
"tags": [
"v9",
"beats_input_raw_event"
]
},
{
"@timestamp": "2025-04-09T13:17:57.461Z",
"@version": "1",
"_id": "iu7LHpYBZKNjyb2o-KEm",
"agent": {
"ephemeral_id": "70e334c2-f5ac-4599-aa32-dd5dc7d7551d",
"hostname": "9f46d9c66ba8",
"id": "1bac5950-93cd-45c0-83ef-96f0f835523b",
"name": "9f46d9c66ba8",
"type": "filebeat",
"version": "7.17.3"
},
"app": "shop",
"ecs": {
"version": "1.12.0"
},
"host": {
"name": "9f46d9c66ba8"
},
"hostname": "f87daf6dd2fe",
"input": {
"type": "log"
},
"log": {
"file": {
"path": "/opt/ws/v9-logs/shop/2025_04_09.log"
},
"offset": 85186
},
"logger": "product",
"msg": "Meta title field of the product is not a string",
"sessionId": "269300aab23352c10324f82817bcb12aaf433e325425753b3c89018cee7fc0fd",
"severity": "err",
"shopId": "myshop",
"stageId": "3",
"subshopId": "deutsch",
"tags": [
"v9",
"beats_input_raw_event"
]
},
{
"@timestamp": "2025-04-03T07:41:46.882Z",
"@version": "1",
"_id": "Hd7LYZYBUuEsdVP_P_eb",
"agent": {
"ephemeral_id": "71484722-483c-4c99-9436-b470708d50c7",
"hostname": "0d81d1bd24c9",
"id": "1bac5950-93cd-45c0-83ef-96f0f835523b",
"name": "0d81d1bd24c9",
"type": "filebeat",
"version": "7.17.3"
},
"app": "restapi",
"ecs": {
"version": "1.12.0"
},
"host": {
"name": "0d81d1bd24c9"
},
"hostname": "2d3c543a9bfd",
"input": {
"type": "log"
},
"log": {
"file": {
"path": "/opt/ws/v9-logs/restapi/2025_04_03.log"
},
"offset": 93145
},
"logger": "data.products.repository",
"msg": "Generating XML for combination",
"severity": "info",
"shopId": "myshop",
"stageId": "3",
"subshopId": "deutsch",
"tags": [
"v9",
"beats_input_raw_event"
]
}
],
"nextPageToken": "MTAw",
"totalCount": 10000
}Filterfelder:
logger (wenn nicht spezifiziert - alle), createdAt (statt @timestamp), weitere Felder eines Logs wie subshopId, severity, app
Sortierfelder:
Es ist möglich, Logs nach unterschiedlichen Feldern zu sortieren (z.B. nach sessionId.keyword), aber standardmäßig wird nur die Sortierung nach @timestamp genutzt.
Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Logs . |
400 Bad Request | "invalidValue" |
|
400 Bad Request | "invalidCharacters" |
|
400 Bad Request | "unknownDataField" | Ein Filter- oder Sortierfeld ist ungültig. |
400 Bad Request | "unknownOperation" | Ein Filtertyp ist ungültig. |
400 Bad Request | "syntaxError" |
|
503 Service Unavailable | "internalError" | Logs konnten nicht geladen werden. |
3.2 GET logmanager/logs/{id}
Diese Methode lädt ein einzelnes Log-Ereignis anhand seiner ID.
Es werden alle zugehörigen Felder wie Zeitstempel, Quelle, Schweregrad, Nachricht und Kontextinformationen zurückgegeben.
Für die Nutzung dieser Methode müssen entsprechende Leserechte für Logs vorhanden sein.
Beispiel:
https://www.<ihr-shop>.de/admin/api/v1/logmanager/logs/4-yUHpYBZKNjyb2okM3PAntwort:
{
"@timestamp": "2025-04-01T15:38:07.934Z",
"@version": "1",
"agent": {
"ephemeral_id": "70e334c2-f5ac-4599-aa32-dd5dc7d7551d",
"hostname": "9f46d9c66ba8",
"id": "1bac5950-93cd-45c0-83ef-96f0f835523b",
"name": "9f46d9c66ba8",
"type": "filebeat",
"version": "7.17.3"
},
"app": "shop",
"ecs": {
"version": "1.12.0"
},
"host": {
"name": "9f46d9c66ba8"
},
"hostname": "f87daf6dd2fe",
"input": {
"type": "log"
},
"log": {
"file": {
"path": "/opt/ws/v9-logs/shop/2025_04_01.log"
},
"offset": 0
},
"logger": "router",
"msg": "Path '/favicon.ico' not known",
"sessionId": "8fd2e99fb7fe7da9c35f0685b8381f0ab6ac05ff159a0767e2f3b2e899d7aadf",
"severity": "info",
"shopId": "myshop",
"stageId": "3",
"subshopId": "deutsch",
"tags": [
"v9",
"beats_input_raw_event"
]
}Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Logs. |
404 Not Found |
| Das Log wurde nicht gefunden. |
503 Service Unavailable | "internalError" | Das Log konnte nicht geladen werden. |
4. Methoden für Log-Gruppen
Über die folgenden Endpunkte lassen sich Log-Gruppen im Shop-System erstellen, abrufen, aktualisieren und löschen. Log-Gruppen definieren, welche Arten von Logs beobachtet werden sollen – z. B. nach Schweregrad, Subshop oder Quelle – und bilden damit die Grundlage für gezielte Auswertungen und Benachrichtigungen.
Zusätzlich können Benachrichtigungseinstellungen einer Gruppe konfiguriert werden, um über neue Log-Einträge regelmäßig informiert zu werden.
Zur Nutzung der Schnittstellen sind entsprechende Rechte zum Verwalten von Logs erforderlich.
4.1 GET logmanager/groups
Mit diesem Endpunkt lassen sich Log-Gruppen abfragen. Eine Log-Gruppe bündelt bestimmte Log-Einträge anhand eines konfigurierbaren Filters, z. B. nach Schweregrad oder Zeitraum. Die Ergebnisliste kann über Filter- und Sortierparameter gezielt eingeschränkt werden.
Für den Zugriff auf diese Daten sind entsprechende Leseberechtigungen erforderlich.
Beispiel:
https://www.<ihr-shop>.de/admin/api/v1/logmanager/groups?size=100
&filter_gte[createdAt]=2025-03-25T00:00:00.913Z
&filter_lte[createdAt]=2025-04-25T23:59:59.913ZAntwort:
{
"endReached": true,
"items": [
{
"createdAt": "2025-04-23T16:03:37.000Z",
"description": "myDescription",
"filter": {
"or": []
},
"id": 4,
"name": "myGroup",
"notificationId": 3
}
],
"nextPageToken": "MA",
"totalCount": 1
}Filterfelder:
id, name, description, notificationId, filter, createdAt
Sortierfelder:
id, name, description, createdAt
Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Logs. |
400 Bad Request | "invalidValue" |
|
400 Bad Request | "invalidCharacters" |
|
400 Bad Request | "unknownDataField" | Ein Filter- oder Sortierfeld ist ungültig. |
400 Bad Request | "unknownOperation" | Ein Filtertyp ist ungültig. |
400 Bad Request | "syntaxError" |
|
4.2 GET logmanager/groups/{id}
Mit diesem Endpunkt kann eine einzelne Log-Gruppe anhand ihrer ID abgerufen werden.
Die Log-Gruppe enthält Metadaten wie Name, Beschreibung, Erstellungszeitpunkt, Filter und einen optionalen Verweis auf eine Benachrichtigungskonfiguration.
Für den Zugriff sind entsprechende Leseberechtigungen erforderlich.
Beispiel:
https://www.<ihr-shop>.de/admin/api/v1/logmanager/groups/4Antwort:
{
"createdAt": "2025-04-23T16:03:37.000Z",
"description": "myDescription",
"filter": {
"or": []
},
"id": 4,
"name": "myGroup",
"notificationId": 3
}Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Logs. |
400 Bad Request | "invalidValue" |
|
4.3 GET logmanager/groups/{id}/logs
Mit diesem Endpunkt kann eine Liste von Logs abgerufen werden, die zu einer bestimmten Log-Gruppe gehören. Die ID der Log-Gruppe muss in der URL übergeben werden.
Die Abfrage unterstützt Filterung, Sortierung sowie die Paginierung über die Parameter from, size, sort und pageToken.
Für den Zugriff müssen entsprechende Leseberechtigungen vorhanden sein.
Beispiel:
https://www.<ihr-shop>.de/admin/api/v1/logmanager/groups/3/logs?size=100
&filter_gte[createdAt]=2025-03-24T00:00:00.186Z
&filter_lte[createdAt]=2025-04-25T23:59:59.186ZAntwort:
{
"endReached": false,
"items": [
{
"@timestamp": "2025-04-11T09:35:24.646Z",
"@version": "1",
"_id": "6ckRXZYBlnEc1Y7xhdd4",
"agent": {
"ephemeral_id": "823e4491-dab9-468c-98d4-d5303323ee16",
"hostname": "0d81d1bd24c9",
"id": "1bac5950-93cd-45c0-83ef-96f0f835523b",
"name": "0d81d1bd24c9",
"type": "filebeat",
"version": "7.17.3"
},
"app": "shop",
"ecs": {
"version": "1.12.0"
},
"host": {
"name": "0d81d1bd24c9"
},
"hostname": "391a58954768",
"input": {
"type": "log"
},
"log": {
"file": {
"path": "/opt/ws/v9-logs/shop/2025_04_11.log"
},
"offset": 94691
},
"logger": "shop.parseView",
"msg": "RenderView Time 72703 us",
"sessionId": "b831971cb73728321b979bdd49906512fdc48efd4be5022011abecd4bec9da89",
"severity": "debug",
"shopId": "myshop",
"tags": [
"v9",
"beats_input_raw_event"
]
},
...
],
"nextPageToken": "MTAw",
"totalCount": 10000
}Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Logs. |
400 Bad Request | "invalidValue" |
|
400 Bad Request | "invalidCharacters" |
|
400 Bad Request | "unknownDataField" | Ein Filter- oder Sortierfeld ist ungültig. |
400 Bad Request | "unknownOperation" | Ein Filtertyp ist ungültig. |
400 Bad Request | "syntaxError" |
|
404 Not Found |
| Die Log-Gruppe wurde nicht gefunden. |
503 Service Unavailable | "internalError" | Logs konnten nicht geladen werden. |
4.4 GET logmanager/groups/{id}/notifications
Mit diesem Endpunkt können die Benachrichtigungseinstellungen einer bestimmten Log-Gruppe abgerufen werden. Dazu gehören u. a. die Empfänger, der Benachrichtigungszeitraum und der Zeitpunkt des letzten Versands. Die ID der Log-Gruppe muss in der URL übergeben werden.
Für den Zugriff sind entsprechende Leseberechtigungen erforderlich.
Beispiel:
https://www.<ihr-shop>.de/admin/api/v1/logmanager/groups/3/notificationsAntwort:
{
"createdAt": "2025-04-23T15:08:56.000Z",
"creator": 1,
"enabled": true,
"filter": {
"or": []
},
"id": 2,
"lastSentTimestamp": "2025-04-23T15:08:17.000Z",
"logGroupId": 3,
"notificationPeriod": 1440,
"recipients": {
"accounts": [
{
"enabled": true,
"id": 1
}
],
"emails": []
},
"startDate": "2025-04-23T15:08:17.000Z",
"subject": "asdf"
}Fehlercodes:
Fehler | Typ |
|---|
© 2025 WEBSALE AG | Impressum | Datenschutz