AEM中的通用記錄檔
檔案將說明常見的記錄專案及其意義,以及如何解決它們。
說明 description
環境
Adobe Experience Manager
問題/症狀
什麼是常見的記錄專案、其含義以及如何處理。
如需詳細資訊,請依照AEMTutorials指南中的AdobeManaged Services Dispatcher手冊操作。
解決方法 resolution
GLOB警告
範例記錄專案:
[ 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_tw' on how to use attributes method/url/query/protocol/path/selectors/extension/suffix instead.
自Dispatcher模型4.2.x起,他們就不再鼓勵使用者在其篩選器檔案中使用下列型別的相符專案:
/0041 { /type "allow" /glob "* *.css *" } ## enable css
最好改用新語法,例如:
/0041 { /type "allow" /url "*.css" } ## enable css
或者,最好根本不以萬用字元比對器比對:
/0041 { /type "allow" /extension "css" } ## enable css
執行其中一種建議的方法都會從記錄中移除該錯誤訊息。
篩選拒絕
注意:
如果記錄層級設定得太低,即使發生拒絕,也不會始終顯示這些專案。 將其設為「資訊」或「除錯」,以確保您可以檢視篩選器是否拒絕請求。
範例記錄專案:
[ Fri Jul 20 17:25:48 2018] [ D] [ pid 25939 (tid 139937517123328)] Filter rejects: GET /libs/granite/core/content/login.html HTTP/1.1
或:
[ Fri Jul 20 22:16:55 2018] [ I] [ pid 128803] "GET /system/console/" ! - 8ms [ publishfarm/-]
警告:
瞭解Dispatcher的規則已設定為篩選掉該請求。 在此情況下,嘗試瀏覽的頁面會被有意拒絕,我們對此不必執行任何動作。
如果您的記錄檔看起來像這個專案:
[ 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
這讓我們知道我們的設計檔案.eot已被封鎖,我們將要修正此問題。
因此,我們應該檢視篩選器檔案,並新增下列行來允許.eot檔案通過
/0011 { /type "allow" /method "GET" /extension 'eot' /path "/etc/designs/*" }
這將允許檔案通過並停止記錄。
如果您想檢視篩選掉的內容,可以在記錄檔上執行此命令:
$ grep "Filter rejects\|\!" /var/log/httpd/dispatcher.log | awk 'match($0, /\/.*\//, m){ print m[ 0] }' | awk '{ print $1 }'| sort | uniq -c | sort -rn
轉譯器的 逾時
通訊端逾時範例記錄專案:
[ 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
當您在伺服器陣列的renders區段中設定錯誤的IP位址時,就會發生這種情況。 該AEM執行個體停止回應或偵聽,Dispatcher無法存取它。
檢查防火牆規則,確認AEM執行個體正在執行且狀況良好。
閘道逾時範例記錄專案:
[ 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/-]
這表示AEM執行個體有一個開啟的通訊端,它可以透過回應觸及並逾時。 這表示您的AEM執行個體太慢或不健康,而且Dispatcher在陣列的轉譯區段中已達到其設定的逾時設定。 請增加逾時設定或讓AEM執行個體正常運作。
快取層級
範例記錄專案:
[ Fri Jul 20 23:00:19 2018] [ I] [ pid 16004 (tid 140134145820416)] Current cache hit ratio: 87.94 %
這表示會測量您從轉譯器層級和從快取擷取的差異。 您想要從快取中達到80%以上,您應該依照說明這裡:
讓此數目儘可能高。
注意:
即使您在陣列檔案中有快取設定來快取所有內容,您可能會過於頻繁或過於積極地排清,這可能會導致發生快取命中率的百分比降低
遺失目錄
記錄專案範例:
[ 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
這通常會在擷取專案時同時進行快取清除時顯示。
該目錄或檔案根目錄的許可權不正確,或資料夾上的SELinux檔案內容錯誤,拒絕Apache建立所需的新子目錄來進行快取。
有關許可權問題,請檢視主目錄的許可權,確保其內容與以下內容類似:
dispatcher$ ls -la
找不到虛名URL
記錄專案範例:
[ 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
當您已將Dispatcher設定為使用動態自動篩選來允許虛名URL,但尚未透過在AEM轉譯器上安裝套件完成設定時,會發生此錯誤。
若要修正此問題,請在AEM執行個體上安裝虛名URL功能套件,並允許匿名使用者準備就緒。 詳細資訊在此
有效的虛名URL設定如下所示:
[ 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
缺少陣列
記錄專案範例:
[ Wed Nov 13 17:17:26 2019] [ W] [ pid 19173:tid 140542738364160] No farm matches host 'we-retail.com', selected last farm 'publishfarm'
此錯誤表示在/etc/httpd/conf.dispatcher.d/enabled_farms/中可用的所有伺服器陣列檔案中,無法從/virtualhost區段找到相符的專案。
伺服器陣列檔案會根據要求所傳入的網域名稱或路徑來比對流量。 這會使用glob比對,如果不相符,表示您未正確設定陣列、在陣列中輸入專案,或專案完全遺失。 當陣列不符合任何專案時,其預設為陣列檔案棧疊中包含的最後一個陣列。 在此範例中,它是999_ams_publish_farm.any,此名稱是publishfarm的一般名稱。
以下是範例伺服器陣列檔案/etc/httpd/conf.dispatcher.d/enabled_farms/300_weretail_publish_farm.any ,已縮減以強調顯示相關部分。
個提供自 的專案
記錄專案範例:
[ Tue Nov 26 16:41:34 2019] [ I] [ pid 9208 (tid 140112092391168)] "GET /content/we-retail/us/en.html" - + 24034ms [ publishfarm/0]
透過GEThttp方法為內容/content/we-retail/us/en.html擷取頁面,耗時24034毫秒。 我們要注意的部份位於最後 [ publishfarm/0] 。 您會看到鎖定並符合publishfarm。 請求是從轉譯器0擷取,這表示必須從AEM請求此頁面,然後將其快取。 現在,讓我們再次要求此頁面,並檢視記錄的情況