操作控制面板 operations-dashboard

簡介 introduction

AEM 6中的操作儀表板可協助系統操作員快速監視AEM系統健康狀況。 此外,還能提供AEM相關方面自動產生的診斷資訊,並讓您設定和執行完整的維護自動化,大幅減少專案操作和支援案例。 操作控制面板可以透過自訂健康情況檢查和維護任務進行擴展。 此外,您也可透過JMX從外部監視工具存取操作控制面板資料。

操作控制面板:

  • 是一鍵式系統狀態,可協助營運部門提高效率
  • 在單一集中位置提供系統健康概觀
  • 縮短尋找、分析和修正問題的時間
  • 提供獨立的維護自動化,協助大幅降低專案營運成本

您可以前往「 」存取 工具 - 作業 從AEM歡迎畫面。

NOTE
若要存取操作控制面板,登入使用者必須屬於「操作員」使用者群組。 如需詳細資訊,請參閱以下說明檔案: 使用者、群組和存取權管理.

健全狀態報表 health-reports

健康狀態報告系統透過Sling健康狀態檢查提供AEM執行個體的健康狀態資訊。 您可以透過OSGI、JMX、HTTP請求(透過JSON)或透過Touch UI完成此操作。 它提供某些可設定計數器的測量值和臨界值,有時也提供如何解決問題的資訊。

它有幾項功能,如下所述。

健康狀態檢查 health-checks

健康狀態報表 是一套卡片系統,可指出特定產品區域的健康情況好或壞。 這些卡片是Sling健康情況檢查的視覺效果,其會彙總來自JMX和其他來源的資料,並再次以MBean公開處理的資訊。 這些MBean也可以在以下位置檢查: JMX Web主控台,位於 org.apache.sling.healthcheck 網域。

健康狀態報告介面可透過以下方式存取: 工具 - 作業 - 健康狀態報表 「AEM歡迎」畫面上的功能表,或直接透過下列URL進行:

https://<serveraddress>:port/libs/granite/operations/content/healthreports/healthreportlist.html

chlimage_1-116

卡片系統會顯示三種可能的狀態: 確定警告關鍵. 狀態是規則和臨界值的結果,您可以將滑鼠移至卡片上,然後按一下動作列中的齒輪圖示即可設定這些規則和臨界值:

chlimage_1-117

健康情況檢查型別 health-check-types

AEM 6中有兩種健康狀態檢查型別:

  1. 個別健康情況檢查
  2. 複合健康狀態檢查

一個 個人健康情況檢查 是與狀態卡相對應的單一健康情況檢查。 個別健康情況檢查可以使用規則或臨界值來設定,而且它們可以提供一或多個提示和連結來解決已識別的健康情況問題。 以「記錄錯誤」檢查為例:如果執行個體記錄中存在ERROR專案,請在健康狀態檢查的詳細資訊頁面中找到。 在頁面頂端,您可以在診斷工具區段中看到「記錄訊息」分析器的連結,讓您更詳細地分析這些錯誤,並重新設定記錄器。

A 複合健康狀態檢查 是彙總來自數個個別檢查的資訊的檢查。

複合健康狀態檢查的設定是使用 篩選標籤. 本質上,具有相同篩選器標籤的所有單一檢查都會分組為複合健康狀態檢查。 只有當所有要彙總的單一檢查的狀態都為OK時,複合健康狀態檢查的狀態才會為OK。

如何建立健康情況檢查 how-to-create-health-checks

在「操作控制面板」中,您可以顯示個別和複合健康情況檢查的結果。

建立個人健康狀態檢查 creating-an-individual-health-check

建立個別健康情況檢查涉及兩個步驟:實作Sling健康情況檢查和在控制面板的設定節點中新增健康情況檢查專案。

  1. 若要建立Sling健康情況檢查,請建立實作Sling健康情況檢查介面的OSGI元件。 將此元件新增至套件組合中。 元件的屬性可完整識別健康狀態檢查。 安裝元件後,系統會自動建立JMX MBean以進行健康狀態檢查。 請參閱 Sling健康情況檢查檔案 以取得詳細資訊。

    使用OSGI服務元件附註編寫的Sling健康情況檢查元件範例:

    code language-java
    @Component(service = HealthCheck.class,
    property = {
        HealthCheck.NAME + "=Example Check",
        HealthCheck.TAGS + "=example",
        HealthCheck.TAGS + "=test",
        HealthCheck.MBEAN_NAME + "=exampleHealthCheckMBean"
    })
     public class ExampleHealthCheck implements HealthCheck {
        @Override
        public Result execute() {
            // health check code
        }
     }
    
    note note
    NOTE
    MBEAN_NAME 屬性定義為此健康狀態檢查產生的mbean的名稱。
  2. 建立健康狀態檢查之後,必須建立新的設定節點,才能在操作儀表板介面中存取它。 對於此步驟,必須知道健康狀態檢查的JMX Mbean名稱( MBEAN_NAME 屬性)。 若要建立健康狀態檢查的設定,請開啟CRXDE並新增節點(型別 nt:unstructured),路徑如下: /apps/settings/granite/operations/hc

    應在新節點上設定下列屬性:

    • 名稱: sling:resourceType

      • 型別: String
      • 值: granite/operations/components/mbean
    • 名稱: resource

      • 型別: String
      • 值: /system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck/exampleHealthCheck
    note note
    NOTE
    上述資源路徑的建立如下所示:如果健康情況檢查的mbean名稱為「test」,請在路徑結尾新增「test」 /system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck
    所以最終路徑如下:
    /system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck/test
    note note
    NOTE
    確定 /apps/settings/granite/operations/hc path的下列屬性設定為true:
    sling:configCollectionInherit
    sling:configPropertyInherit
    此程式會告知設定管理員要將新設定與中的現有設定合併 /libs.

建立複合健康狀態檢查 creating-a-composite-health-check

複合健康狀態檢查的作用是彙總共用一組通用功能的數個個別健康狀態檢查。 例如,「安全性複合健康情況檢查」會將執行安全性相關驗證的所有個別健康情況檢查分組。 建立複合檢查的第一步是新增OSGI設定。 若要將其顯示在操作儀表板中,必須以簡單檢查相同的方式新增新的配置節點。

  1. 前往OSGI主控台中的Web Configuration Manager。 存取 https://serveraddress:port/system/console/configMgr

  2. 搜尋以下名稱的專案: Apache Sling複合健康狀態檢查. 找到之後,請注意已有兩個組態可供使用:一個用於「系統檢查」,另一個用於「安全性檢查」。

  3. 按組態右側的「+」按鈕來建立組態。 新視窗隨即顯示,如下所示:

    chlimage_1-23

  4. 建立設定並儲存。 Mbean會以新組態建立。

    每個設定屬性的用途如下:

    • 名稱(hc.name): 複合健康狀態檢查的名稱。 建議使用有意義的名稱。
    • 標籤(hc.tags): 此健康狀態檢查的標籤。 如果此複合健康狀態檢查要成為另一個複合健康狀態檢查(例如在健康狀態檢查的階層中)的一部分,請新增此複合相關的標籤。
    • MBean名稱(hc.mbean.name): 為此複合健康狀態檢查的JMX MBean指定的Mbean名稱。
    • 篩選標籤(filter.tags): 複合健康情況檢查專屬的屬性。 這些標籤會由複合專案彙總。 複合健康狀態檢查會在其群組下彙總所有具有符合此複合之任何篩選標籤的健康狀態檢查。 例如,含有篩選標籤的複合健康情況檢查 測試check,彙總具有下列任何一項的所有個別和複合健康情況檢查: 測試check 標籤屬性中的標籤( hc.tags)。
    note note
    NOTE
    系統會為Apache Sling複合健康狀態檢查的每個新設定建立新的JMX Mbean。**
  5. 最後,已建立的複合健康狀態檢查專案必須新增至「操作控制面板」組態節點。 此程式與個別健康情況檢查的程式相同:型別的節點 nt:unstructured 必須建立於 /apps/settings/granite/operations/hc. 節點的資源屬性是由的值所定義 hc.mean.name 在OSGI設定中。

    例如,如果您建立了組態並設定 hc.mbean.name 值至 磁碟使用情況,設定節點如下:

    • 名稱: Composite Health Check

      • 型別: nt:unstructured

    具有以下屬性:

    • 名稱: sling:resourceType

      • 型別: String
      • 值: granite/operations/components/mbean
    • 名稱: resource

      • 型別: String
      • 值: /system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck/diskusage
    note note
    NOTE
    如果您建立邏輯上屬於複合檢查的個別健康情況檢查(預設情況下已存在於儀表板中),則會自動擷取這些檢查,並將其分組在個別複合檢查下。 因此,不需要為這些檢查建立設定節點。
    例如,如果您建立個別安全性健康情況檢查,請將其指派給「安全性「 」標籤完成,並已安裝。 它會自動顯示在「操作圖示板」的「安全性檢查」複合檢查下。

AEM提供的健康情況檢查 health-checks-provided-with-aem

運行狀況檢查名稱
說明
查詢效能

此健康情況檢查已簡化 在AEM 6.4中,現在會檢查最近重構的 Oak QueryStats MBean,更具體地說 SlowQueries 屬性。 如果統計資料包含任何緩慢查詢,則健康狀態檢查會傳回警告。 否則,會傳回OK狀態。

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=queriesStatus,type=HealthCheck.

觀測佇列長度

「觀察佇列長度」會反複執行所有事件接聽程式和背景觀察程式,並比較其 queueSize 至其 maxQueueSize 和:

  • 若符合下列條件,則會傳回「嚴重」狀態: queueSize 值超過 maxQueueSize 值(即事件會被捨棄的時間)
  • 如果 queueSize 值超過 maxQueueSize * WARN_THRESHOLD (預設值為0.75)

每個佇列的長度上限分別來自不同的設定(Oak和AEM),且無法透過此健康狀態檢查設定。 此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=ObservationQueueLengthHealthCheck,type=HealthCheck.

查詢周遊限制

查詢周遊限制檢查 QueryEngineSettings MBean,更具體地說 LimitInMemoryLimitReads 屬性,並傳回下列狀態:

  • 如果其中一個限制等於或大於 Integer.MAX_VALUE
  • 如果其中一個限制低於10000 (Oak的建議設定),則傳回「警告」狀態
  • 若符合下列條件,則會傳回「嚴重」狀態: QueryEngineSettings 或無法擷取任何限制

此健康狀態檢查的Mbean為 org.apache.sling.healthcheck:name=queryTraversalLimitsBundle,type=HealthCheck.

已同步時鐘

此檢查僅適用於 檔案節點存放區叢集. 它會傳回以下狀態:

  • 當執行個體時鐘不同步並超過預先定義的低臨界值時,會傳回警告狀態
  • 當執行個體時鐘不同步並超過預先定義的高臨界值時,會傳回「嚴重」狀態

此健康狀態檢查的Mbean為 org.apache.sling.healthcheck:name=slingDiscoveryOakSynchronizedClocks,type=HealthCheck.

非同步處理索引

非同步索引檢查:

  • 如果至少一個索引通道失敗,則傳回「關鍵」狀態

  • 檢查 lastIndexedTime 對於所有索引通道和:

    • 如果超過2小時前,則傳回「嚴重」狀態
    • 如果2小時到45分鐘前還處於警告狀態,則會傳回警告狀態
    • 如果小於45分鐘前,則傳回「正常」狀態
  • 如果不符合這些條件,則會傳回OK狀態

「嚴重」和「警告」狀態臨界值均可設定。 此健康狀態檢查的Mbean為 org.apache.sling.healthcheck:name=asyncIndexHealthCheck,type=HealthCheck.

注意: 此健康情況檢查可與AEM 6.4搭配使用,且已反向移植至AEM 6.3.0.1。

大型 Lucene 索引

此檢查使用下列專案公開的資料: Lucene Index Statistics 識別大型索引和傳回的MBean:

  • 如果索引中有超過10億份檔案,則為警告狀態
  • a如果索引中有超過15億份檔案,則為嚴重狀態

臨界值是可設定的,健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=largeIndexHealthCheck,type=HealthCheck。

注意: 此檢查適用於AEM 6.4,並已反向移植至AEM 6.3.2.0。

系統維護

「系統維護」是一種複合檢查,如果所有維護工作都按設定執行,則會傳回「確定」。 請記住:

  • 每個維護任務都會隨附相關的健康狀態檢查
  • 如果未將任務新增至維護期間,其健康狀態檢查會傳回「嚴重」
  • 設定「稽核記錄」和「工作流程清除」維護作業,或將其從維護視窗中移除。 如果未進行設定,這些工作會在第一次嘗試執行時失敗,因此「系統維護」檢查會傳回「嚴重」狀態。
  • 使用AEM 6.4,另外也會檢查 Lucene二進位檔維護 任務
  • 在AEM 6.2和更低版本上,系統維護檢查會在啟動後立即傳回「警告」狀態,因為工作永遠不會執行。 從6.3開始,如果尚未到達第一個維護時段,則會傳回「確定」。

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=systemchecks,type=HealthCheck.

復寫佇列

此檢查會反複執行復寫代理程式並檢視其佇列。 對於佇列頂端的專案,檢查會檢視代理程式重試復寫的次數。 如果代理程式重試的復寫超過的值, numberOfRetriesAllowed 引數,則會傳回警告。 此 numberOfRetriesAllowed 引數是可設定的。

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=replicationQueue,type=HealthCheck.

Sling 工作

「Sling工作」會檢查JobManager中佇列的作業數目,並將其與 maxNumQueueJobs 臨界值,以及:

  • 若超過 maxNumQueueJobs 在佇列中
  • 如果長期執行中的作用中工作早於1小時,則傳回「嚴重」
  • 如果有佇列的工作,而且最後完成的工作時間超過1小時,則會傳回「嚴重」

僅可設定佇列作業的最大數量引數,其預設值為1000。

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=slingJobs,type=HealthCheck.

要求效能

此檢查會檢視 granite.request.metrics.timer Sling量度和:

  • 如果第75個百分位值超過嚴重臨界值(預設值為500毫秒),則傳回「嚴重」
  • 如果第75個百分位值超過警告臨界值(預設值為200毫秒),則傳回警告

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=requestsStatus,type=HealthCheck.

日誌錯誤

如果記錄中有錯誤,此檢查會傳回「警告」狀態。

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=logErrorHealthCheck,type=HealthCheck.

磁碟空間

磁碟空間檢查會檢視 FileStoreStats MBean,會擷取節點存放區的大小以及節點存放區分割區上可用的磁碟空間量,並且:

  • 如果可用磁碟空間與存放庫大小的比率小於警告臨界值(預設值為10),則傳回警告
  • 如果可用磁碟空間與存放庫大小的比率小於嚴重臨界值(預設值為2),則傳回「嚴重」

這兩個臨界值都是可設定的。 此檢查僅適用於具有區段存放區的執行個體。

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=DiskSpaceHealthCheck,type=HealthCheck.

排程器健康情況檢查

如果執行個體有執行超過60秒的Quartz工作,此檢查會傳回警告。 可設定可接受的持續時間臨界值。

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=slingCommonsSchedulerHealthCheck,type=HealthCheck.

安全性檢查

安全性檢查是一種複合檢查,可彙總多個安全性相關檢查的結果。 這些個別健康情況檢查可解決 安全性檢查清單檔案頁面。 此檢查在執行個體啟動時,可作為安全冒煙測試使用。

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=securitychecks,type=HealthCheck

作用中組合

使用中的組合會檢查所有組合的狀態,並且:

  • 如果有任何套件組合未作用中或(從延遲啟動開始),則傳回「警告」狀態
  • 它會忽略忽略清單中的套件組合狀態

忽略清單引數是可設定的。

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=inactiveBundles,type=HealthCheck.

程式碼快取檢查

健康情況檢查會驗證可能觸發Java™ 7中出現CodeCache錯誤的多個JVM條件:

  • 如果執行個體在Java™ 7上執行,並啟用程式碼快取排清,則會傳回Warn
  • 如果執行個體在Java™ 7上執行,且保留的程式碼快取大小小於最小臨界值(預設值為90 MB),則會傳回「警告」

minimum.code.cache.size 臨界值是可設定的。 如需有關錯誤的詳細資訊,請參閱 然後搜尋Bug ID 8012547.

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=codeCacheHealthCheck,type=HealthCheck.

資源搜尋路徑錯誤

檢查路徑中是否有任何資源 /apps/foundation/components/primary 和:

  • 如果下有子節點,則傳回警告 /apps/foundation/components/primary

此健康狀態檢查的MBean為 org.apache.sling.healthcheck:name=resourceSearchPathErrorHealthCheck,type=HealthCheck.

健康狀態檢查設定 health-check-configuration

根據預設,對於現成可用的AEM執行個體,健康情況檢查每60秒執行一次。

您可以設定 期間 使用 OSGi設定 查詢健康狀態檢查設定 (com.adobe.granite.queries.impl.hc.QueryHealthCheckMetrics)。

使用Nagios進行監視 monitoring-with-nagios

健康情況檢查儀表板可以透過Granite JMX Mbeans與Nagios整合。 以下範例說明如何新增一項檢查,顯示執行AEM之伺服器上已使用的記憶體。

  1. 在監視伺服器上設定並安裝Nagios。

  2. 接著,安裝Nagios遠端外掛程式執行程式(NRPE)。

    note note
    NOTE
    如需如何在系統上安裝Nagios和NRPE的詳細資訊,請參閱 Nagios檔案.
  3. 新增AEM伺服器的主機定義。 您可以透過Nagios XI Web Interface,使用Configuration Manager來完成這項工作:

    1. 開啟瀏覽器並指向Nagios伺服器。
    2. 按下 設定 上方功能表中的按鈕。
    3. 在左窗格中,按下 核心設定管理員進階設定.
    4. 按下 主機 連結至 監視 區段。
    5. 新增主機定義:

    chlimage_1-118

    以下是主機設定檔案的範例,以備您使用Nagios Core時使用:

    code language-xml
    define host {
       address 192.168.0.5
       max_check_attempts 3
       check_period 24x7
       check-command check-host-alive
       contacts admin
       notification_interval 60
       notification_period 24x7
    }
    
  4. 在AEM伺服器上安裝Nagios和NRPE。

  5. 安裝 check_http_json 外掛程式。

  6. 在兩個伺服器上定義一般JSON檢查命令:

    code language-xml
    define command{
    
        command_name    check_http_json-int
    
        command_line    /usr/lib/nagios/plugins/check_http_json --user "$ARG1$" --pass "$ARG2$" -u 'https://$HOSTNAME$:$ARG3$/$ARG4$' -e '$ARG5$' -w '$ARG6$' -c '$ARG7$'
    
    }
    
  7. 新增AEM伺服器上已使用記憶體的服務:

    code language-xml
    define service {
    
        use generic-service
    
        host_name my.remote.host
    
        service_description AEM Author Used Memory
    
        check_command  check_http_json-int!<cq-user>!<cq-password>!<cq-port>!system/sling/monitoring/mbeans/java/lang/Memory.infinity.json!{noname}.mbean:attributes.HeapMemoryUsage.mbean:attributes.used.mbean:value!<warn-threshold-in-bytes>!<critical-threshold-in-bytes>
    
        }
    
  8. 檢查您的Nagios儀表板是否有新建立的服務:

    chlimage_1-119

診斷工具 diagnosis-tools

「操作控制面板」也提供診斷工具的存取權,這些工具可協助尋找和疑難排解健康情況檢查控制面板所產生警告的根本原因,並提供系統操作員的重要除錯資訊。

其最重要的功能包括:

  • 記錄訊息分析器
  • 存取棧積和執行緒傾印的功能
  • 請求和查詢效能分析器

您可以前往「 」,存取「診斷工具」畫面 工具 — 作業 — 診斷 從AEM歡迎畫面。 您也可以直接存取下列URL來存取畫面: https://serveraddress:port/libs/granite/operations/content/diagnosis.html

chlimage_1-120

記錄訊息 log-messages

記錄訊息使用者介面預設會顯示所有ERROR訊息。 如果您想要顯示更多日誌訊息,請以適當的日誌層級設定日誌程式。

記錄訊息使用記憶體中的記錄附加器,因此與記錄檔無關。 另一個後果是變更此UI中的記錄層級不會變更記錄到傳統記錄檔案中的資訊。 在此UI中新增和移除記錄器只會影響記憶體記錄器。 此外,變更記錄器設定會反映在記憶體記錄器的未來。 已記錄且不再相關的專案不會刪除,但日後不會再記錄類似的專案。

您可以從UI的左上角齒輪按鈕提供記錄器設定,以設定要記錄的內容。 在那裡,您可以新增、移除或更新記錄器設定。 記錄器設定是由 記錄層級 (警告/資訊/偵錯)及 篩選器名稱. 此 篩選器名稱 具有篩選記錄日誌訊息來源的角色。 或者,如果記錄器應擷取指定層級的所有記錄訊息,則篩選器名稱應為"「。 設定記錄器的層級,會觸發擷取層級等於或高於指定層級的所有訊息。

範例:

  • 如果您計畫擷取所有 錯誤 訊息 — 不需要設定。 預設會擷取所有ERROR訊息。

  • 如果您計畫擷取所有 錯誤警告資訊 messages — 記錄器名稱應設為: "",而記錄器層級為: 資訊.

  • 如果您打算擷取來自特定套件(例如com.adobe.granite)的所有訊息,記錄器名稱應設為: "com.adobe.granite"。 而且,記錄器層級設定為: 偵錯 (這麼做會擷取所有 錯誤警告資訊、和 偵錯 訊息),如下圖所示。

chlimage_1-121

NOTE
您不能設定記錄器名稱,以透過指定的篩選器僅擷取錯誤訊息。 依預設,會擷取所有ERROR訊息。
NOTE
記錄訊息使用者介面未反映實際的錯誤記錄。 除非您在UI中設定其他型別的記錄訊息,否則您只會看到錯誤訊息。 如需如何顯示特定記錄訊息,請參閱上述指示。
NOTE
診斷頁面中的設定不會影響記錄到記錄檔的內容,反之亦然。 因此,雖然錯誤記錄可能會擷取INFO訊息,但您可能會在記錄訊息UI中看不到。 此外,透過UI也可以從特定套件擷取DEBUG訊息,而不會影響錯誤記錄。 如需如何設定記錄檔的詳細資訊,請參閱 記錄.
NOTE
使用AEM 6.4,維護任務會立即從INFO層級以詳細資訊豐富的格式登出。 此工作流程可讓您更清楚地瞭解維護任務的狀態。
如果您使用協力廠商工具(例如Splunk)來監控和回應維護任務活動,您可以使用以下記錄陳述式:
Log level: INFO
DATE+TIME [MaintanceLogger] Name=<MT_NAME>, Status=<MT_STATUS>, Time=<MT_TIME>, Error=<MT_ERROR>, Details=<MT_DETAILS>

要求效能 request-performance

「要求效能」頁面可讓您分析處理的最慢的頁面要求。 此頁面上只會註冊內容要求。 更具體來說,會擷取下列請求:

  1. 要求存取下的資源 /content
  2. 要求存取下的資源 /etc/design
  3. 具有下列專案的請求: ".html" 副檔名

chlimage_1-122

頁面隨即顯示:

  • 提出要求的時間
  • URL和要求方法
  • 持續時間(毫秒)

依預設,會擷取最慢的20個頁面請求,但可以在Configuration Manager中修改限制。

查詢效能 query-performance

「查詢效能」頁面可讓您分析系統執行的最慢查詢。 此資訊由JMX Mbean中的存放庫提供。 在Jackrabbit中, com.adobe.granite.QueryStat JMX Mbean提供此資訊,而在Oak存放庫中,此資訊由提供 org.apache.jackrabbit.oak.QueryStats.

頁面隨即顯示:

  • 進行查詢的時間
  • 查詢的語言
  • 查詢的發出次數
  • 查詢的陳述式
  • 持續時間(毫秒)

chlimage_1-123

說明查詢 explain-query

對於任何特定查詢,Oak會嘗試根據下方的存放庫中定義的Oak索引,找出最佳執行方式 oak:index 節點。 根據查詢的不同,Oak可能會選擇不同的索引。 瞭解Oak如何執行查詢是最佳化查詢的第一步。

Explain Query是一種說明Oak如何執行查詢的工具。 您可以前往「 」存取 工具 — 作業 — 診斷 從AEM歡迎畫面。 然後,按一下 查詢效能 並切換至 說明查詢 標籤。

功能

  • 支援Xpath、JCR-SQL和JCR-SQL2查詢語言
  • 報告所提供查詢的實際執行時間
  • 偵測緩慢的查詢,並就可能緩慢的查詢發出警告
  • 報告用於執行查詢的Oak索引
  • 顯示實際Oak查詢引擎說明
  • 提供慢速和熱門查詢的點按載入清單

進入Explain查詢UI後,輸入查詢,然後按 說明 按鈕:

chlimage_1-124

「查詢說明」區段中的第一個專案是實際說明。 說明會顯示用來執行查詢的索引型別。

第二個專案是執行計畫。

勾選 包含執行時間 方塊中也會顯示執行查詢的時間。 此 包含節點計數 選項會報告節點計數。 該報告會提供詳細資訊,可用於為您的應用程式或部署最佳化索引。

chlimage_1-125

索引管理員 the-index-manager

Index Manager的目的是方便索引管理,例如維護索引或檢視其狀態。

從「歡迎畫面」前往​ 工具 — 作業 — 診斷,然後按一下 索引管理員 按鈕。

您也可以從以下URL直接存取: https://serveraddress:port/libs/granite/operations/content/diagnosistools/indexManager.html

index_manager

UI可用來篩選表格中的索引,方法是在畫面左上角的搜尋方塊中輸入篩選條件。

下載狀態ZIP download-status-zip

這個動作會觸發下載壓縮檔,其中包含有關系統狀態和設定的實用資訊。 封存包含執行個體設定、套件組合清單、OSGI、Sling量度和統計資料,可能會產生大型檔案。 您可以使用來減少大型狀態檔案的影響 下載狀態ZIP ​視窗。 視窗可從下列位置存取:AEM >工具>作業>診斷>下載狀態ZIP。

在此視窗中,您可以選取要匯出的專案(記錄檔和/或對話串傾印),以及相對於目前日期包含在下載中的記錄天數。

download_status_zip

下載執行緒傾印 download-thread-dump

此動作會觸發下載zip ,其中包含系統中存在的對話串的相關資訊。 會提供每個執行緒的相關資訊,例如其狀態、類別載入器以及棧疊追蹤。

下載棧積傾印 download-heap-dump

您可以下載棧積的快照以便稍後分析。 此動作會觸發下載大型(數百MB)檔案。

自動維護任務 automated-maintenance-tasks

「自動維護任務」頁面可供您檢視及追蹤排定定期執行的建議維護任務。 這些工作已與「健康情況檢查」系統整合。 任務也可以從介面手動執行。

若要前往操作控制面板中的「維護」頁面,請從AEM歡迎畫面,前往 工具 — 作業 — 控制面板 — 維護,或直接追蹤此連結:

https://serveraddress:port/libs/granite/operations/content/maintenance.html

「操作儀表板」中有以下工作:

  1. 修訂清除 ​任務,位於 每日維護期間 功能表。
  2. Lucene二進位清理 任務,位於 每日維護期間 功能表。
  3. 工作流程清除 任務,位於 每週維護期間 功能表。
  4. 資料存放區記憶體回收 任務,位於 每週維護期間 功能表。
  5. 稽核記錄維護 任務,位於 每週維護期間 功能表。
  6. 版本清除維護 任務,位於 每週維護期間 功能表。

每日維護期間的預設時間為凌晨2:00至下午5:00。設定在每週維護期間執行的工作,會在星期六上午1:00到凌晨2:00之間執行。

您也可以按兩個維護卡片上的齒輪圖示來設定計時:

chlimage_1-126

NOTE
自AEM 6.1起,現有的維護時段也可設定為每月執行。

修訂清理 revision-clean-up

如需有關執行修訂清除的詳細資訊, 請參閱此專屬文章.

Lucene 二進位清理 lucene-binaries-cleanup

使用Lucene二進位檔案清理工作,您可以清除Lucene二進位檔案並降低執行中的資料存放區大小要求。 Lucene的二進位流失率會每天回收,而非先前依賴成功的專案 資料存放區記憶體回收 執行。

雖然開發維護任務是為了減少與Lucene相關的修訂垃圾,但在執行任務時普遍提高了效率:

  • 每週執行資料存放區記憶體回收工作可以更快完成。
  • 它也可能稍微改善整體AEM效能。

您可存取Lucene二進位清理工作,位置如下: AEM >工具>作業>維護>每日維護視窗> Lucene二進位清理.

資料存放庫廢棄項目收集 data-store-garbage-collection

如需資料存放區記憶體回收的詳細資訊,請參閱專用 檔案頁面.

工作流程清除 workflow-purge

您也可以從維護控制面板中清除工作流程。 若要執行「工作流程永久刪除」作業,請執行下列步驟:

  1. 按一下 每週維護期間 頁面。
  2. 在下一頁中,按一下 播放工作流程清除 卡片。
NOTE
如需有關工作流程維護的詳細資訊,請參閱 此頁面.

稽核記錄維護 audit-log-maintenance

有關稽核記錄維護,請參閱 個別的檔案頁面。

版本清除 version-purge

您可以排定「版本永久刪除」維護作業,以自動刪除舊版本。 此動作將手動使用 版本清除工具. 您可以存取「 」,以排程並設定「版本永久刪除」工作 工具>作業>維護>每週維護視窗 並依照下列步驟進行:

  1. 按一下 新增.

  2. 選擇 版本清除 (從下拉式功能表)。

    version_purge_maintenancetask

  3. 若要設定「版本清除」工作,請按一下 齒輪 圖示新建立的「版本清除」維護卡片上。

    version_purge_taskconfiguration

使用AEM 6.4,您可以停止「版本清除」維護任務,如下所示:

  • 自動 — 如果排程的維護視窗在任務完成之前關閉,任務會自動停止。 當下一個維護視窗開啟時,它會繼續。
  • 手動 — 若要手動停止工作,請在「版本清除」維護卡上,按一下 停止 圖示。 在下次執行時,工作將會安全地繼續。
NOTE
停止維護工作表示暫停其執行而不會失去已進行中工作的追蹤。
CAUTION
最佳化您應經常執行版本清除工作的存放庫大小。 當流量有限時,應該將任務排程在營業時間以外。

自訂維護任務 custom-maintenance-tasks

自訂維護任務可以實作為OSGi服務。 由於維護任務基礎架構以Apache Sling的作業處理為基礎,因此維護任務必須實施Java™介面 [org.apache.sling.event.jobs.consumer.JobExecutor](https://sling.apache.org/apidocs/sling7/org/apache/sling/event/jobs/consumer/JobExecutor.html). 此外,它必須宣告數個服務註冊屬性以偵測為維護任務,如下所示:

服務屬性名稱
說明
範例
類型
granite.maintenance.isStoppable
定義使用者是否可以停止工作的布林值屬性。 如果任務宣告它可停止,它必須在執行期間檢查它是否停止,然後相應地採取行動。 預設值為false。
true
選用
granite.maintenance.mandatory
定義工作是否為必要且必須定期執行的布林值屬性。 如果任務為必要任務,但目前不在任何使用中的排程視窗中,則健康狀態檢查會報告此錯誤。 預設值為false。
true
選用
granite.maintenance.name
任務的唯一名稱 — 該名稱用於引用任務,只是簡單名稱。
MyMaintenanceTask
必填
granite.maintenance.title
為此任務顯示的標題
我的特殊維護任務
必填
job.topics
維護任務的唯一主題。
Apache Sling作業處理會啟動具有此主題的作業,以執行維護任務,而當任務針對此主題註冊時,就會開始執行。
主題的開頭必須是 com/adobe/granite/maintenance/job/
com/adobe/granite/maintenance/job/MyMaintenanceTask
必填

除了上述服務屬性外, process() 方法 JobConsumer 介面必須透過新增應為維護任務執行的程式碼來實作。 提供的 JobExecutionContext 可用來輸出狀態資訊、檢查工作是否由使用者停止並建立結果(成功或失敗)。

如果維護任務不應該在所有安裝上執行(例如,只應在發佈執行個體上執行),您可以透過新增來讓服務需要設定為作用中 @Component(policy=ConfigurationPolicy.REQUIRE). 然後,您可以根據設定將設定標籤為從屬於存放庫中的執行模式。 如需詳細資訊,請參閱 設定OSGi.

以下是自訂維護任務的範例,該任務會從過去24小時內修改過的可設定暫存目錄中刪除檔案:

src/main/java/com/adobe/granite/samples/maintenance/impl/DeleteTempFilesTask.java

/*

* #%L

* sample-maintenance-task

* %%

* Copyright (C) 2014 Adobe

* %%

* Licensed under the Apache License, Version 2.0 (the "License");

* you may not use this file except in compliance with the License.

* You may obtain a copy of the License at

*

* https://www.apache.org/licenses/LICENSE-2.0

*

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS,

* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

* #L%

*/

``

package com.adobe.granite.samples.maintenance.impl;

``

import java.io.File;

import java.util.Calendar;

import java.util.Collection;

import java.util.Map;

``

import org.apache.commons.io.FileUtils;

import org.apache.commons.io.filefilter.IOFileFilter;

import org.apache.commons.io.filefilter.TrueFileFilter;

import org.apache.felix.scr.annotations.Activate;

import org.apache.felix.scr.annotations.Component;

import org.apache.felix.scr.annotations.Properties;

import org.apache.felix.scr.annotations.Property;

import org.apache.felix.scr.annotations.Service;

import org.apache.sling.commons.osgi.PropertiesUtil;

import org.apache.sling.event.jobs.Job;

import org.apache.sling.event.jobs.consumer.JobConsumer;

import org.apache.sling.event.jobs.consumer.JobExecutionContext;

import org.apache.sling.event.jobs.consumer.JobExecutionResult;

import org.apache.sling.event.jobs.consumer.JobExecutor;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

``

import com.adobe.granite.maintenance.MaintenanceConstants;

``

@Component(metatype = true,

label = "Delete Temp Files Maintenance Task",

description = "Maintatence Task which deletes files from a configurable temporary directory which have been modified in the last 24 hours.")

@Service

@Properties({

@Property(name = MaintenanceConstants.PROPERTY_TASK_NAME, value = "DeleteTempFilesTask", propertyPrivate = true),

@Property(name = MaintenanceConstants.PROPERTY_TASK_TITLE, value = "Delete Temp Files", propertyPrivate = true),

@Property(name = JobConsumer.PROPERTY_TOPICS, value = MaintenanceConstants.TASK_TOPIC_PREFIX

+ "DeleteTempFilesTask", propertyPrivate = true) })

public class DeleteTempFilesTask implements JobExecutor {

``

private static final Logger log = LoggerFactory.getLogger(DeleteTempFilesTask.class);

``

@Property(label = "Temporary Directory", description="Temporary Directory. Defaults to the java.io.tmpdir system property.")

private static final String PROP_TEMP_DIR = "temp.dir";

``

private File tempDir;

``

@Activate

private void activate(Map<string, object=""> properties) {

this.tempDir = new File(PropertiesUtil.toString(properties.get(PROP_TEMP_DIR),

System.getProperty("java.io.tmpdir")));

}

``

@Override

public JobExecutionResult process(Job job, JobExecutionContext context) {

log.info("Deleting old temp files from {}.", tempDir.getAbsolutePath());

Collection<file> files = FileUtils.listFiles(tempDir, new LastModifiedBeforeYesterdayFilter(),

TrueFileFilter.INSTANCE);

int counter = 0;

for (File file : files) {

log.debug("Deleting file {}.", file.getAbsolutePath());

counter++;

file.delete();

// TODO - capture the output of delete() and do something useful with it

}

return context.result().message(String.format("Deleted %s files.", counter)).succeeded();

}

``

/**

* IOFileFilter which filters out files which have been modified in the last 24 hours.

*

*/

private static class LastModifiedBeforeYesterdayFilter implements IOFileFilter {

``

private final long minTime;

``

private LastModifiedBeforeYesterdayFilter() {

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DATE, -1);

this.minTime = cal.getTimeInMillis();

}

``

@Override

public boolean accept(File dir, String name) {

// this method is never actually called.

return false;

}

``

@Override

public boolean accept(File file) {

return file.lastModified() <= this.minTime;

}

}

``

}

<file></string,>

experiencemanager-java-maintenancetask-sample- src/main/java/com/adobe/granite/samples/maintenance/impl/DeleteTempFilesTask.java

部署服務後,它會公開至操作控制面板UI。 您可以將其新增到其中一個可用的維護排程:

chlimage_1-127

此動作會在/apps/granite/operations/config/maintenance/新增對應的資源schedule/taskname. 如果工作依執行模式而定,必須使用該維護工作必須啟動的執行模式值在該節點上設定屬性granite.operations.conditions.runmode。

系統綜覽 system-overview

系統總覽儀表板 顯示AEM執行個體的組態、硬體及健康情況的高階概觀。 系統健康狀態是透明的,所有資訊都會彙總在單一儀表板中。

NOTE
您也可以 觀看此影片 以瞭解「系統總覽儀表板」的簡介。

如何存取 how-to-access

若要存取系統總覽儀表板,請導覽至 「工具」>「作業」>「系統概述」.

system_overview_dashboard

說明系統總覽儀表板 system-overview-dashboard-explained

下表說明「系統總覽儀表板」中顯示的所有資訊。 當沒有可顯示的相關資訊(例如,備份未進行中,沒有重要的健康情況檢查)時,個別區段會顯示「沒有專案」訊息。

您也可以下載 JSON 按一下「 」以摘要儀表板資訊 下載 按鈕來顯示控制板右上角的按鈕。 此 JSON 端點為 /libs/granite/operations/content/systemoverview/export.json 並且可用於 curl 外部監視指令碼。

區段
顯示哪些資訊
何時重要
連結至
健康狀態檢查
  • 處於嚴重狀態的檢查清單
  • 處於警告狀態的檢查清單

以視覺顯示:

  • 嚴重檢查的紅色標籤
  • 用於警告檢查的橙色標籤
  • 健康狀態報表頁面
維護任務
  • 失敗的任務清單
  • 目前正在執行的工作清單
  • 上次執行成功的作業清單
  • 從未執行過的作業清單
  • 未排程的工作清單

以視覺顯示:

  • 失敗任務的紅色標籤
  • 用於執行任務的橘色標籤(因為這些可能會影響效能)
  • 每個其他狀態的灰色標籤
  • 維護作業頁面
系統
  • 作業系統和作業系統版本(例如macOS X)
  • 系統平均負載,擷取自 OperatingSystemMXBeanusable
  • 磁碟空間(位於主目錄所在的分割區)
  • 棧積上限,由傳回 MemoryMXBean
N/A
N/A
執行個體
  • AEM版本
  • 執行模式清單
  • 執行個體開始的日期
N/A
N/A
存放庫
  • Oak版本

  • 節點存放區型別(區段Tar或檔案)

    • 如果型別是document,則會顯示檔案存放區的型別(RDB或Mongo)
  • 如果有自訂資料存放區:

    • 若為檔案資料存放區,則會顯示路徑
    • 若為S3資料存放區,會顯示S3儲存貯體的名稱
    • 如果是共用的S3資料存放區,則會顯示S3儲存貯體的名稱
    • 對於Azure資料存放區,會顯示容器
  • 如果沒有自訂外部資料存放區,則會顯示一則訊息,指出此事實

N/A
N/A
發佈代理程式
  • 具有封鎖佇列的代理程式清單
  • 設定錯誤的代理程式清單(「設定錯誤」)
  • 佇列處理暫停的代理程式清單
  • 閒置代理程式清單
  • 執行中代理程式(目前正在處理專案)的清單

以視覺顯示:

  • 封鎖的代理程式或設定錯誤的紅色標籤
  • 暫停代理的橘色標籤
  • 用於暫停、閒置或執行中的代理程式的灰色標籤
發佈頁面
複寫代理程式
  • 具有封鎖佇列的代理程式清單
  • 閒置代理程式清單
  • 執行中代理程式(目前正在處理專案)的清單

以視覺顯示:

  • 已封鎖代理程式的紅色標籤
  • 暫停代理程式的灰色標籤
復寫頁面
工作流程
  • 工作流程工作:

    • 失敗的工作流程工作數目(如果有的話)
    • 已取消的工作流程工作數目(如果有的話)
  • 工作流程計數 — 指定狀態的工作流程數量(如果有的話):

    • 執行中
    • 失敗
    • 已暫停
    • 已中止

會針對上方呈現的每個狀態執行查詢,限製為400毫秒。 在400毫秒時,會顯示截至該時間所取得的專案數。

未解譯:

  • 當有工作流程和工作處於非預期狀態時,使用者應進行調查。
工作流程失敗頁面
Sling 工作

Sling工作計數 — 指定狀態的工作數(如果有的話):

  • 失敗
  • 已排入佇列
  • 已取消
  • 作用中

未解譯:

  • 當有工作處於非預期狀態或具有高計數時,使用者應進行調查。
不適用
預估節點計數

預估數量:

  • 頁面
  • 資產
  • 標記
  • 可授權專案
  • 節點總數

節點總數是從nodeCounterMBean取得,其餘的統計資料是從IndexInfoService取得。

N/A
N/A
備份
顯示「線上備份進行中」(如果有的話)。
N/A
N/A
建立索引

顯示:

  • 「正在編制索引」
  • "正在進行查詢"

如果索引或查詢對話串存在於對話串傾印中。

N/A
N/A
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2