Allgemeine Protokolle in AEM
In diesem Dokument werden gängige Protokolleinträge und ihre Bedeutung sowie deren Umgang beschrieben.
Beschreibung description
Umgebung
Adobe Experience Manager
Problem/Symptome
Was sind häufige Protokolleinträge, was bedeuten sie und wie man mit ihnen umgeht?
Weitere Informationen finden Sie im Handbuch Adobe Managed Services Dispatcher im Handbuch AEM Tutorials.
Auflösung resolution
GLOB-Warnung
Beispiel für einen Protokolleintrag:
[ Fri Jul 20 03:35:09 2018] [ W] [ pid 8300 (tid 139937910880384)] /etc/httpd/conf/publish-filters.any:5: Allowing requests with globs is considered unsafe. Please consult the documentation at 'https://www.adobe.com/go/docs_dispatcher_config_de' on how to use attributes method/url/query/protocol/path/selectors/extension/suffix instead.
Seit Dispatcher-Modell 4.2.x halten sie Menschen davon ab, die folgenden Übereinstimmungstypen in ihrer Filterdatei zu verwenden:
/0041 { /type "allow" /glob "* *.css *" } ## enable css
Stattdessen ist es besser, die neue Syntax zu verwenden, wie:
/0041 { /type "allow" /url "*.css" } ## enable css
Oder noch besser, es gibt keine Übereinstimmung bei einem Platzhalter:
/0041 { /type "allow" /extension "css" } ## enable css
Wenn Sie eine der vorgeschlagenen Methoden durchführen, wird diese Fehlermeldung aus den Protokollen entfernt.
Zurückweisungen filtern
Hinweis:
Diese Einträge werden nicht immer angezeigt, selbst wenn Zurückweisungen erfolgen, wenn die Protokollebene zu niedrig festgelegt ist. Legen Sie sie auf Info oder Debuggen fest, um sicherzustellen, dass Sie sehen können, ob die Filter die Anfragen ablehnen.
Beispiel für einen Protokolleintrag:
[ Fri Jul 20 17:25:48 2018] [ D] [ pid 25939 (tid 139937517123328)] Filter rejects: GET /libs/granite/core/content/login.html HTTP/1.1
oder:
[ Fri Jul 20 22:16:55 2018] [ I] [ pid 128803] "GET /system/console/" ! - 8ms [ publishfarm/-]
Achtung:
Verstehen Sie, dass die Regeln des Dispatchers zum Filtern dieser Anfrage festgelegt wurden. In diesem Fall wurde die Seite, die besucht werden sollte, absichtlich abgelehnt, und wir würden nichts damit machen wollen.
Wenn Ihr Protokoll wie der folgende Eintrag aussieht:
[ Fri Jul 20 17:26:47 2018] [ D] [ pid 20051 (tid 139937517123328)] Filter rejects: GET /etc/designs/exampleco/fonts/montserrat-regular/montserrat-regular-webfont.eot HTTP/1.1
Dadurch wissen wir, dass unsere Design-Datei .eot blockiert wird, und wir werden das beheben wollen.
Daher sollten wir uns unsere Filterdatei ansehen und die folgende Zeile hinzufügen, um .eot-Dateien durchzulassen
/0011 { /type "allow" /method "GET" /extension 'eot' /path "/etc/designs/*" }
Dies würde die Datei durchlassen und die Protokollierung stoppen.
Wenn Sie sehen möchten, was herausgefiltert wird, können Sie diesen Befehl in Ihrer Protokolldatei ausführen:
$ grep "Filter rejects\|\!" /var/log/httpd/dispatcher.log | awk 'match($0, /\/.*\//, m){ print m[ 0] }' | awk '{ print $1 }'| sort | uniq -c | sort -rn
Zeitüberschreitungen ab Render
Beispielprotokolleintrag für Socket-Zeitüberschreitung:
[ Fri Jul 20 22:31:15 2018] [ W] [ pid 3648] Unable to connect socket to 10.43.3.40:4502: Connection timed out
[ Fri Jul 20 22:31:15 2018] [ W] [ pid 3648] Unable to connect to any backend in farm authorfarm
Dies tritt auf, wenn Sie im Abschnitt „Renderings“ Ihrer Farm die falsche IP-Adresse konfiguriert haben. Diese oder die AEM-Instanz reagiert nicht mehr bzw. hört nicht mehr zu, und der Dispatcher kann sie nicht erreichen.
Überprüfen Sie Ihre Firewall-Regeln und stellen Sie sicher, dass die AEM-Instanz ordnungsgemäß ausgeführt wird.
Beispielprotokolleinträge für Gateway-Zeitüberschreitung:
[ Fri Jul 20 22:32:42 2018] [ I] [ pid 3648] "GET /favicon.ico" 502 - 54034ms [ authorfarm/-]
[ Fri Jul 20 22:35:45 2018] [ I] [ pid 3648] "GET /favicon.ico" 503 - 54234ms [ authorfarm/-]
Dies bedeutet, dass die AEM-Instanz über einen offenen Socket verfügte, den sie erreichen konnte, und mit der Antwort eine Zeitüberschreitung auftrat. Das bedeutet, dass Ihre AEM-Instanz zu langsam oder zu fehlerhaft war und der Dispatcher seine konfigurierten Zeitüberschreitungseinstellungen im Abschnitt Rendern der Farm erreicht hat. Erhöhen Sie entweder die Einstellung für die maximale Wartezeit oder verbessern Sie den Zustand Ihrer AEM-Instanz.
Zwischenspeicherungsebene
Beispiel für einen Protokolleintrag:
[ Fri Jul 20 23:00:19 2018] [ I] [ pid 16004 (tid 140134145820416)] Current cache hit ratio: 87.94 %
Das bedeutet, dass das Abrufen von der Render-Ebene im Vergleich zum Cache gemessen wird. Sie möchten über 80 Prozent aus dem Cache erreichen und sollten der Hilfe folgen hier:
Um diese Zahl so hoch wie möglich zu bekommen.
Hinweis:
Selbst wenn Sie Ihre Cache-Einstellungen in der Farm-Datei haben, um alles zwischenzuspeichern, werden Sie möglicherweise zu oft oder zu aggressiv geleert, was zu einer geringeren prozentualen Cache-Trefferquote führen kann
Fehlendes Verzeichnis
Beispiel für einen Protokolleintrag:
[ Fri Jul 20 14:02:43 2018] [ E] [ pid 4728 (tid 140662586435328)] Unable to create parent directory /mnt/var/www/author/libs/dam/content/asseteditors/formitems.overlay.infinity.json/application: Not a directory
Dies wird normalerweise angezeigt, wenn ein Element abgerufen wird, während gleichzeitig ein Cache gelöscht wird.
Der Ordner oder das Stammverzeichnis des Dokuments verfügt über ungültige Berechtigungen oder über den falschen SELinux-Dateikontext für den Ordner, der Apache daran hindert, die neuen erforderlichen Unterordner zu erstellen.
Überprüfen Sie bei Berechtigungsproblemen die Berechtigungen des Dokumentstamms und stellen Sie sicher, dass sie in etwa wie folgt aussehen:
dispatcher$ ls -la
Vanity-URL nicht gefunden
Beispiel für einen Protokolleintrag:
[ Thu Sep 27 17:35:11 2018] [ D] [ pid 18936] Checking vanity URLs
[ Thu Sep 27 17:35:11 2018] [ D] [ pid 18936] Vanity URL file (/tmp/vanity_urls) not found, fetching...
[ Thu Sep 27 17:35:11 2018] [ W] [ pid 18936] Unable to fetch vanity URLs from 10.43.0.42:4503/libs/granite/dispatcher/content/vanityUrls.html: remote server returned: HTTP/1.1 404 Not Found
Dieser Fehler tritt auf, wenn Sie Ihren Dispatcher so konfiguriert haben, dass er den dynamischen automatischen Filter zum Zulassen von Vanity-URLs verwendet, die Einrichtung jedoch nicht abgeschlossen haben, indem Sie das Paket auf dem AEM-Renderer installiert haben.
Um dies zu beheben, installieren Sie bitte das Vanity URL Feature Pack auf der AEM-Instanz und lassen Sie zu, dass es von der anonymen Benutzerin bzw. dem anonymen Benutzer bereit ist. Details hier
Eine funktionierende Vanity-URL-Einrichtung sieht wie folgt aus:
[ Thu Sep 27 17:40:29 2018] [ D] [ pid 21844] Checking vanity URLs
[ Thu Sep 27 17:40:29 2018] [ D] [ pid 21844] Vanity URL file (/tmp/vanity_urls) not found, fetching...
[ Thu Sep 27 17:40:29 2018] [ D] [ pid 21844] Loaded 18 vanity URLs from file /tmp/vanity_urls
Fehlende Farm
Beispiel für einen Protokolleintrag:
[ Wed Nov 13 17:17:26 2019] [ W] [ pid 19173:tid 140542738364160] No farm matches host 'we-retail.com', selected last farm 'publishfarm'
Dieser Fehler zeigt an, dass von allen in /etc/httpd/conf.dispatcher.d/enabled_fields/ verfügbaren Farm-Dateien im Abschnitt /virtualhost kein übereinstimmender Eintrag gefunden wurde.
Die Farm-Dateien stimmen mit dem Traffic überein, basierend auf dem Domain-Namen oder Pfad, mit dem die Anfrage kam. Es wird eine globale Übereinstimmung verwendet, und wenn sie nicht übereinstimmt, haben Sie entweder Ihre Farm nicht richtig konfiguriert, den Eintrag in die Farm eingegeben oder den Eintrag vollständig fehlt. Wenn die Farm keine Einträge aufweist, wird standardmäßig die letzte Farm verwendet, die im Stapel der Farm-Dateien enthalten ist. In diesem Beispiel war es 999_ams_publish_farm.any, der als generischer Name von publishfarm bezeichnet wird.
Im Folgenden finden Sie eine Beispiel-Farm-Datei /etc/httpd/conf.dispatcher.d/enabled_farms/300_weretail_publish_farm.any , die reduziert wurde, um die relevanten Teile hervorzuheben.
Element bereitgestellt von
Beispiel für einen Protokolleintrag:
[ Tue Nov 26 16:41:34 2019] [ I] [ pid 9208 (tid 140112092391168)] "GET /content/we-retail/us/en.html" - + 24034ms [ publishfarm/0]
Die Seite wurde über die GET-HTTP-Methode für den Inhalt /content/we-retail/us/en.html abgerufen und dauerte 24034 Millisekunden. Der Teil, auf den wir achten wollten, ist ganz am Ende [ publishfarm/0] . Sie werden sehen, dass es auf die Publishfarm abzielte und mit ihr übereinstimmte. Die Anfrage wurde von Render 0 abgerufen, was bedeutet, dass diese Seite von AEM angefordert und dann zwischengespeichert werden musste. Fordern wir nun diese Seite erneut an und sehen wir, was mit dem Protokoll passiert