Assets 監控最佳實務

從Adobe Experience Manager(AEM)Assets的角度來看,監控應包括觀察和報告下列程式和技術:

  • 系統CPU

  • 系統記憶體使用

  • 系統磁碟IO和IO等待時間

  • 系統網路IO

  • 用於:

    • 堆利用率
    • 非同步程式,例如工作流程
  • OSGi控制台運行狀況檢查

通常,AEM Assets可透過兩種方式進行監控:即即時監控和長期監控。

即時監視

您應在開發的效能測試階段或高負載情況下執行即時監控,以了解環境的效能特性。 通常應使用一套工具來執行即時監控。 以下是一些建議:

  • Visual VM:Visual VM使您能夠查看詳細的Java VM資訊,包括CPU使用量、Java記憶體使用量。此外,它可讓您取樣並評估在執行個體上執行的程式碼。

  • 排名:Top是開啟儀表板的Linux命令,該儀表板顯示使用情況統計資訊,包括CPU、記憶體和IO使用情況。它提供執行個體上所發生情況的概觀。

  • 頂端:Htop是互動式程式檢視器。除了Top提供的功能外,它還提供詳細的CPU和記憶體使用。 Htop可以在大多數使用yum install htopapt-get install htop的Linux系統上安裝。

  • Iotop:Iotop是磁碟IO使用情況的詳細儀表板。它顯示的條形和儀表,用於描述使用磁碟IO的過程及其使用量。 使用yum install iotopapt-get install iotop,Iotop可安裝在大多數Linux系統上。

  • Iftop:Iftop顯示有關乙太網/網路使用的詳細資訊。Iftop會針對使用乙太網的實體顯示每個通訊通道的統計資料,以及其使用的頻寬量。 Iftop可以安裝在使用yum install iftopapt-get install iftop的大多數Linux系統上。

  • Java飛行記錄器(JFR):來自Oracle的商業工具,可在非生產環境中自由使用。 如需詳細資訊,請參閱如何使用Java飛行記錄器診斷CQ執行階段問題

  • AEM error.log檔案:您可以調查AEM error.log檔案,以取得系統中記錄之錯誤的詳細資訊。 使用命令tail -F quickstart/logs/error.log標識應調查的錯誤。

  • 工作流程主控台:運用工作流程主控台來監控延遲或卡住的工作流程。

通常,您會一起使用這些工具,以取得有關AEM例項效能的完整概念。

注意

這些工具是標準工具,不直接受Adobe支援。 他們不需要額外的授權。

chlimage_1-142 chlimage_1-143

長期監測

對AEM例項進行長期監控時,會監視受即時監控的相同部分,持續較長時間。 也包含定義環境專屬的警報。

日誌聚合和報告

有數種工具可用於匯總日誌,例如Splunk™和Elastic Search/Logstash/Kabana(ELK)。 若要評估AEM執行個體的正常運作時間,請務必了解系統專屬的記錄事件,並根據這些事件建立警報。 對您的開發和操作實踐有良好的了解,可幫助您更好地了解如何調整日誌聚合過程以生成關鍵警報。

環境監控

環境監控包括監控下列項目:

  • 網路吞吐量
  • 磁碟IO
  • 記憶體
  • CPU利用率
  • JMX MBean
  • 外部網站

您需要外部工具,例如NewRelic™和AppDynamics™來監視每個項目。 使用這些工具,您可以定義系統特有的警報,例如高系統利用率、工作流備份、運行狀況檢查失敗或未驗證的網站訪問。 Adobe不建議使用任何特定工具而非其他工具。 尋找適合您的工具,並運用它來監控討論的項目。

內部應用程式監控

內部應用程式監控包括監控構成AEM堆疊的應用程式元件,包括JVM、內容存放庫,以及透過平台上建置的自訂應用程式程式碼進行監控。 一般來說,它通過JMX Mbeans來執行,這些JMX Mbeans可以直接由許多流行的監控解決方案進行監控,如SolarWinds™、HP OpenView™、Hyperic™、Zabbix™等。 對於不支援直接連接到JMX的系統,可以編寫shell指令碼以提取JMX資料,並以它們本來理解的格式將其公開到這些系統。

預設情況下不啟用對JMX Mbeans的遠程訪問。 有關通過JMX進行監視的詳細資訊,請參閱使用JMX技術進行監視和管理

在許多情況下,需要基線來有效監視統計資料。 要建立基線,請在預定時段內的正常工作條件下觀察系統,然後識別正常度量。

JVM監視

與任何基於Java的應用程式堆棧一樣,AEM取決於通過基礎Java虛擬機提供給它的資源。 您可以透過JVM公開的Platform MXBean來監視其中許多資源的狀態。 有關MXBean的詳細資訊,請參閱使用平台MBean伺服器和平台MXBean

以下是可監視JVM的一些基線參數:

記憶體

  • MBean: lava.lang:type=Memory
  • URL:/system/console/jmx/java.lang:type=Memory
  • 例項:所有伺服器
  • 警報閾值:當堆或非堆記憶體利用率超過相應最大記憶體的75%時。
  • 警報定義:系統記憶體不足或代碼中出現記憶體洩漏。 分析線程轉儲以達到定義。

注意:此Bean提供的資訊以位元組表示。

線程

  • MBean:java.lang:type=Threading
  • URL:/system/console/jmx/java.lang:type=Threading
  • 例項:所有伺服器
  • 警報閾值:當線程數大於基線的150%時。
  • 警報定義:要麼存在活動的失控進程,要麼低效操作消耗了大量資源。 分析線程轉儲以達到定義。

AEM監視

AEM也會透過JMX公開一組統計資料和操作。 這些功能有助於評估系統運行狀況並在潛在問題影響用戶之前找出這些問題。 如需詳細資訊,請參閱AEM JMX MBean上的documentation

以下是您可監控的AEM基線參數:

復寫代理

  • MBean:com.adobe.granite.replication:type=agent,id=”<AGENT_NAME>”

  • URL:/system/console/jmx/com.adobe.granite.replication:type=agent,id="<AGENT_NAME>"

  • 例項:一個製作和所有發佈執行個體(適用於排清代理)

  • 警報閾值:當QueueBlocked值為true或QueueNumEntries值大於基線的150%時。

  • 警報定義:系統中是否存在阻止的隊列,表明複製目標已關閉或無法訪問。 網路或基礎架構問題通常會導致過多的條目排隊,從而對系統效能產生負面影響。

注意:對於MBean和URL參數,請用 <AGENT_NAME> 要監視的複製代理的名稱替換。

會話計數器

  • MBean:org.apache.jackrabbit.oak:id=7,name="OakRepository Statistics",type="RepositoryStats"
  • URL:/system/console/jmx/org.apache.jackrabbit.oak:id=7,name="OakRepository Statistics",type="RepositoryStats"
  • 例項:所有伺服器
  • 警報閾值:開啟的工作階段超過基線超過50%時。
  • 警報定義:工作階段可透過程式碼開啟,且永不關閉。 隨著時間的推移,這可能會緩慢發生,最終導致系統記憶體洩漏。 雖然系統上的工作階段數應會有所波動,但不應持續增加。

健康狀態檢查

操作儀表板中可用的運行狀況檢查具有用於監視的相應JMX MBean。 但是,您可以編寫自定義運行狀況檢查以公開其他系統統計資訊。

以下是有助於監控的現成可用健康狀態檢查:

  • 系統檢查

    • MBean:org.apache.sling.healthcheck:name=systemchecks,type=HealthCheck
    • URL:/system/console/jmx/org.apache.sling.healthcheck:name=systemchecks,type=HealthCheck
    • 例項:一個作者,所有發佈伺服器
    • 警報閾值:狀態不確定時
    • 警報定義:其中一個度量的狀態為「警告」或「嚴重」。 檢查日誌屬性,了解問題原因的詳細資訊。
  • 復寫佇列

    • MBean:org.apache.sling.healthcheck:name=replicationQueue,type=HealthCheck
    • URL:/system/console/jmx/org.apache.sling.healthcheck:name=replicationQueue,type=HealthCheck
    • 例項:一個作者,所有發佈伺服器
    • 警報閾值:狀態不確定時
    • 警報定義:其中一個度量的狀態為「警告」或「嚴重」。 檢查日誌屬性,以了解有關導致此問題的隊列的詳細資訊。
  • 回應效能

    • MBean:org.apache.sling.healthcheck:name=requestsStatus,type=HealthCheck
    • URL:/system/console/jmx/org.apache.sling.healthcheck:name=requestsStatus,type=HealthCheck
    • 例項:所有伺服器
    • 警報持續時間:狀態不確定時
    • 警報定義:其中一個度量的狀態為「警告」或「關鍵」。 檢查日誌屬性,以了解有關導致此問題的隊列的詳細資訊。
  • 查詢效能

    • MBean:org.apache.sling.healthcheck:name=queriesStatus,type=HealthCheck
    • URL:/system/console/jmx/org.apache.sling.healthcheck:name= queriesStatus,type=HealthCheck
    • 例項:一個作者,所有發佈伺服器
    • 警報閾值:狀態不確定時
    • 警報定義:一個或多個查詢在系統中運行緩慢。 檢查日誌屬性,以了解有關導致問題的查詢的詳細資訊。
  • 作用中組合

    • MBean:org.apache.sling.healthcheck:name=inactiveBundles,type=HealthCheck
    • URL:/system/console/jmx/org.apache.sling.healthcheck:name=inactiveBundles,type=HealthCheck
    • 例項:所有伺服器
    • 警報閾值:狀態不確定時
    • 警報定義:系統上存在非活動或未解析的OSGi捆綁。 檢查log屬性,以取得造成問題的套件組合的詳細資訊。
  • 日誌錯誤

    • MBean:org.apache.sling.healthcheck:name=logErrorHealthCheck,type=HealthCheck
    • URL:/system/console/jmx/org.apache.sling.healthcheck:name=logErrorHealthCheck,type=HealthCheck
    • 例項:所有伺服器
    • 警報閾值:狀態不確定時
    • 警報定義:記錄檔中有錯誤。 檢查日誌屬性,了解問題原因的詳細資訊。

常見問題和解決方案

在監控過程中,如果您遇到問題,您可以執行以下一些疑難排解工作,以解決AEM例項的常見問題:

  • 如果使用TarMK,請經常執行Tar壓縮。 有關詳細資訊,請參閱維護儲存庫
  • 檢查OutOfMemoryError日誌。 有關詳細資訊,請參閱分析記憶體問題
  • 檢查日誌中是否有對未索引查詢、樹遍歷或索引遍歷的任何引用。 這表示未索引的查詢或未充分索引的查詢。 有關優化查詢和索引效能的最佳實踐,請參閱查詢和索引的最佳實踐
  • 使用工作流程主控台來確認您的工作流程是否如預期般執行。 如有可能,將多個工作流程簡化為單一工作流程。
  • 重新訪問即時監視,並查找任何特定資源的其他瓶頸或高消費者。
  • 調查來自用戶端網路的輸出點,以及到AEM例項網路(包括調度程式)的入口點。 這些經常是瓶頸區。 如需詳細資訊,請參閱資產網路考量事項
  • 更新您的AEM伺服器。 您的AEM例項可能大小不足。 Adobe客戶服務可協助您識別伺服器的大小是否不足。
  • 檢查access.logerror.log檔案,以了解是否有問題發生的前後條目。 尋找可能表示自訂程式碼異常的模式。 將它們新增至您監視的事件清單。

本頁內容