操作儀表板

簡介

AEM 6中的Operations Dashboard可協助系統運算子監控AEM系統運作狀況。 它還提供有關AEM相關方面的自動生成診斷資訊,並允許配置和運行獨立的維護自動化,以顯著減少項目操作和支援案例。 Operations Dashboard可以使用自訂的運行狀況檢查和維護任務進行擴展。 此外,Operations Dashboard資料可通過JMX從外部監控工具訪問。

操作控制面板:

  • 是一鍵式系統狀態,可幫助運營部門提高效率
  • 在單個集中位置提供系統運行狀況概觀
  • 減少查找、分析和修復問題的時間
  • 提供獨立的維護自動化,幫助顯著降低項目操作成本

可從「AEM歡迎」畫面前往​Tools - Operations​進行存取。

注意

為了能夠存取「操作控制面板」,登入的使用者必須是「操作者」使用者群組的一員。 如需詳細資訊,請參閱使用者、群組和存取權限管理的相關檔案。

健全狀態報表

Health Report系統可透過Sling Health Check提供AEM例項健康狀況的相關資訊。 您可以透過OSGI、JMX、HTTP要求(透過JSON)或透過觸控式UI來完成此作業。 它提供某些可設定計數器的測量值和臨界值,在某些情況下,將提供如何解決問題的資訊。

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

健康狀態檢查

健康報告​是一個卡片系統,用於指示特定產品區域的健康狀況是否良好。 這些卡片是Sling健康狀態檢查的視覺效果,可匯總來自JMX和其他來源的資料,並再次以MBean形式公開處理的資訊。 您也可以在JMX網頁主控台中​org.apache.sling.healthcheck​網域下檢查這些MBean。

健康報告介面可通過「AEM歡迎」螢幕上的​Tools - Operations - Health Reports​菜單或直接通過以下URL訪問:

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

chlimage_1-116

卡系統顯示三種可能狀態:OKWARN​和​CRITICAL。 狀態是規則和臨界值的結果,您可將滑鼠游標暫留在卡片上,然後按一下動作列中的齒輪圖示來設定:

chlimage_1-117

運行狀況檢查類型

AEM 6中有兩種健康狀況檢查:

  1. 個別健康狀況檢查
  2. 複合運行狀況檢查

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

複合運行狀況檢查​是一個檢查,用於從多個單個檢查中聚合資訊。

複合健康狀態檢查是使用​篩選標籤​來設定。 本質上,所有具有相同篩選標籤的單一檢查都會分組為複合健康狀態檢查。 只有當聚合的所有單次檢查也具有OK狀態時,複合運行狀況檢查才會具有OK狀態。

如何建立運行狀況檢查

在「操作控制面板」中,您可以直觀地顯示單個和複合運行狀況檢查的結果。

建立單個運行狀況檢查

建立個別健康檢查涉及兩個步驟:實作Sling健康狀況檢查,並在控制面板的設定節點中新增健康狀況檢查項目。

  1. 若要建立Sling健康狀況檢查,您需要建立實作Sling HealthCheck介面的OSGI元件。 您會將此元件新增至套件中。 元件的屬性將完全標識運行狀況檢查。 安裝元件後,將自動為運行狀況檢查建立JMX MBean。 如需詳細資訊,請參閱Sling健康狀況檢查檔案

    以OSGI服務元件註解撰寫的Sling健康狀態檢查元件範例:

    @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
        }
     }
    
    注意

    MBEAN_NAME屬性定義將為此運行狀況檢查生成的mbean的名稱。

  2. 建立運行狀況檢查後,需要建立新的配置節點,以便在Operations Dashboard介面中訪問該節點。 在此步驟中,必須知道運行狀況檢查的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
    注意

    以上資源路徑的建立方式如下:如果運行狀況檢查的mbean名稱為"test",請在路徑/system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck的末尾添加"test"

    因此,最終的路徑將是:

    /system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck/test

    注意

    請確定/apps/settings/granite/operations/hc路徑的下列屬性設為true:

    sling:configCollectionInherit

    sling:configPropertyInherit

    這將指示配置管理器將新配置與/libs中的現有配置合併。

建立複合運行狀況檢查

複合運行狀況檢查的角色是聚合多個共用一組公共功能的單個運行狀況檢查。 例如,安全複合運行狀況檢查將執行安全相關驗證的所有單個運行狀況檢查組合在一起。 建立複合檢查的第一步是新增OSGI設定。 若要在「操作控制面板」中顯示該節點,需要新增一個新的設定節點,就像進行簡單檢查時一樣。

  1. 前往OSGI主控台中的Web設定管理器。 您可以存取https://serveraddress:port/system/console/configMgr來執行此操作

  2. 搜尋名為​Apache Sling Composite Health Check​的項目。 找到後,請注意已有兩種設定可用:一個用於系統檢查,另一個用於安全檢查。

  3. 按配置右側的「+」按鈕建立新配置。 隨即出現新視窗,如下所示:

    chlimage_1-23

  4. 建立設定並儲存。 將使用新配置建立Mbean。

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

    • 名稱(hc.name): 複合運行狀況檢查的名稱。建議使用有意義的名稱。
    • 標籤(hc.tags): 此健康狀況檢查的標籤。如果此複合運行狀況檢查打算成為另一個複合運行狀況檢查的一部分(例如,在運行狀況檢查的層次結構中),請添加與此複合相關的標籤。
    • MBean名稱(hc.mbean.name): 將分配給此複合運行狀況檢查的JMX MBean的Mbean的名稱。
    • 篩選標籤(filter.tags): 這是複合健康狀態檢查專屬的屬性。這些是複合應匯總的標籤。 複合運行狀況檢查將聚合到其組下的所有運行狀況檢查,這些檢查具有任何與此複合的任何過濾器標籤匹配的標籤。 例如,具有篩選器標籤​test​和​check​的複合健康狀況檢查將匯總其標籤屬性(hc.tags)中具有​test​和​check​標籤的所有個別和複合健康狀況檢查。
    注意

    系統會為Apache Sling Composite Health Check的每個新設定建立新的JMX Mbean。**

  5. 最後,剛建立的複合運行狀況檢查條目需要添加到操作儀表板配置節點中。 此程式與個別健康狀況檢查的程式相同:需要在/apps/settings/granite/operations/hc下建立​nt:unstructured​類型的節點。 節點的資源屬性將由OSGI配置中​hc.mean.name​的值定義。

    例如,如果您建立了配置並將​hc.mbean.name​值設定為​diskusage,則配置節點將如下所示:

    • 名稱: Composite Health Check

      • 類型: nt:unstructured

    具有下列屬性:

    • 名稱: sling:resourceType

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

      • 類型: String
      • 值: /system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck/diskusage
    注意

    如果您建立邏輯上屬於預設已存在於控制面板中的複合檢查下的個別健康狀況檢查,則會在相應的複合檢查下自動捕獲和分組這些檢查。 因此,不需要為這些檢查建立新的配置節點。

    例如,如果您建立單個安全運行狀況檢查,則只需將"security"標籤指定給它,並且它已安裝,它將自動顯示在Operations Dashboard的Security Checks複合檢查下。

AEM提供的運行狀況檢查

zHealthcheck名稱 說明
查詢效能

此健康狀態檢查已在AEM 6.4中簡化,現在會檢查最近重構的Oak QueryStats MBean,更具體來說是SlowQueries 屬性。 如果統計資訊包含任何慢速查詢,則運行狀況檢查將返回警告。 否則,它將返回OK狀態。

此健康狀況檢查的MBean是org.apache.sling.healthcheck:name=querysStatus,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

已同步時鐘

此檢查僅與document nodestore clusters相關。 它會傳回下列狀態:

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

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

非同步處理索引

非同步索引檢查:

  • 如果至少有一個索引通道失敗,則返回關鍵狀態
  • 檢查lastIndexedTime中所有索引通道,並:
    • 如果超過2小時前,則返回關鍵狀態
    • 如果介於2小時到45分鐘前,則傳回警告狀態
    • 如果小於45分鐘前,則返回「確定」狀態
  • 如果未滿足這些條件,則返回「確定」狀態

「嚴重」和「警告」狀態閾值均可配置。 此健康狀況檢查的Mbean是org.apache.sling.healthcheck:name=asyncIndexHealthCheck,type=HealthCheck

注意: 此健康狀況檢查適用於AEM 6.4,並已支援至AEM 6.3.0.1。

大型 Lucene 索引

此檢查使用Lucene Index Statistics MBean公開的資料來標識大索引並返回:

  • a如果索引包含超過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開始,如果尚未到達第一個維護窗口,則它們將返回OK。

此健康狀況檢查的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

排程器健康情況檢查

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

此健康狀況檢查的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

代碼快取檢查

這是「運行狀況檢查」,用於驗證多個JVM條件,這些條件可觸發Java 7中存在的CodeCache錯誤:

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

minimum.code.cache.size臨界值可設定。 有關錯誤的詳細資訊,請檢查此頁

此健康狀況檢查的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

使用Nagios進行監控

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

  1. 在監控伺服器上安裝和安裝Nagios。

  2. 接下來,安裝Nagios Remote Plugin Executor(NRPE)。

    注意

    有關如何在您的系統上安裝Nagios和NRPE的詳細資訊,請參閱Nagios文檔

  3. 為AEM伺服器新增主機定義。 這可透過Nagios XI Web介面,使用Configuration Manager完成:

    1. 開啟瀏覽器並指向Nagios伺服器。
    2. 按頂部菜單中的​配置​按鈕。
    3. 在左窗格中,按​Advanced Configuration​下的​Core Config Manager
    4. 在​監視​部分下按​主機​連結。
    5. 添加主機定義:

    chlimage_1-118

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

    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檢查命令:

    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伺服器上的已用記憶體新增服務:

    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

診斷工具

操作儀表板還提供對診斷工具的訪問,這些工具可幫助查找和排除來自運行狀況檢查儀表板的警告的根本原因,並為系統操作員提供重要的調試資訊。

其最重要的功能包括:

  • 日誌消息分析器
  • 訪問堆和線程轉儲的功能
  • 請求和查詢效能分析器

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

chlimage_1-120

日誌消息

預設情況下,日誌消息用戶介面將顯示所有ERROR消息。 如果要顯示更多日誌消息,則需要使用相應的日誌級別配置記錄器。

記錄訊息會使用記憶體記錄中的附加程式,因此與記錄檔無關。 另一個結果是,更改此UI中的日誌級別將不會更改傳統日誌檔案中記錄的資訊。 在此UI中新增和移除記錄器只會影響記憶體記錄器中的。 另外,請注意,更改記錄器配置將反映在記憶體記錄器的將來 — 已記錄且不再相關的條目不會刪除,但類似的條目將來不會記錄。

您可以從UI的左上角齒輪按鈕提供記錄器設定,以設定記錄內容。 您可以在此添加、刪除或更新記錄器配置。 記錄器配置由​日誌級別(WARN / INFO / DEBUG)和​篩選器名稱​組成。 篩選器名稱​具有篩選日誌消息源的角色。 或者,如果記錄器應該捕獲指定級別的所有日誌消息,則篩選器名稱應為"root"。 設定記錄器的級別將觸發所有級別等於或高於指定級別的消息的捕獲。

範例:

  • 如果您計畫捕獲所有​ERROR​消息 — 無需配置。 預設會擷取所有ERROR訊息。

  • 如果您計畫捕獲所有​ERRORWARN​和​INFO​消息,則記錄器名稱應設定為:"root",且記錄器層級為:INFO

  • 如果您打算擷取來自特定套件(例如com.adobe.granite)的所有訊息,記錄器名稱應設為:"com.adobe.granite"和記錄器層級為:DEBUG(這將擷取所有​ERRORWARNINFO​和​DEBUG​訊息),如下圖所示。

chlimage_1-121

注意

您無法設定記錄器名稱以透過指定的篩選器僅擷取ERROR訊息。 預設情況下,將捕獲所有ERROR消息。

注意

日誌消息用戶介面未反映實際錯誤日誌。 除非您在UI中設定其他類型的記錄訊息,否則只會看到錯誤訊息。 有關如何顯示特定日誌消息的資訊,請參閱上述說明。

注意

診斷頁面中的設定不會影響記錄到記錄檔的內容,反之亦然。 因此,雖然錯誤記錄可能會擷取INFO訊息,但您可能不會在記錄訊息UI中看見。 此外,透過UI,可從特定套件擷取DEBUG訊息,而不會影響錯誤記錄。 有關如何配置日誌檔案的詳細資訊,請參閱Logging

注意

若使用AEM 6.4,維護工作會在「資訊」層級以更豐富的資訊格式立即記錄。這可讓您更清楚了解維護任務的狀態。

如果您使用第三方工具(如Splunk)來監視和響應維護任務活動,則可以使用以下日誌陳述式:

Log level: INFO
DATE+TIME [MaintanceLogger] Name=<MT_NAME>, Status=<MT_STATUS>, Time=<MT_TIME>, Error=<MT_ERROR>, Details=<MT_DETAILS>

請求效能

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

  1. 請求訪問/content下的資源
  2. 請求訪問/etc/design下的資源
  3. 副檔名為".html"的請求

chlimage_1-122

頁面隨即顯示:

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

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

查詢效能

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

頁面隨即顯示:

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

chlimage_1-123

說明查詢

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

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

功能

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

進入「說明查詢」UI後,您只需要輸入查詢,然後按​Explain​按鈕即可使用:

chlimage_1-124

「查詢說明」部分中的第一個條目是實際說明。 說明將顯示用於執行查詢的索引類型。

第二項是執行計畫。

在運行查詢之前,按一下​包含執行時間​框還將顯示在中執行查詢的時間量,以獲取可用於優化應用程式或部署的索引的詳細資訊。

chlimage_1-125

索引管理器

「索引管理器」的目的是促進索引管理,例如維護索引或查看其狀態。

可從歡迎螢幕中轉到​Tools - Operations - Diagnosis,然後按一下​Index Manager​按鈕,訪問它。

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

screen-shot_2019-06-18at154754

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

下載狀態ZIP

這會觸發下載包含系統狀態和設定之實用資訊的zip。 封存包含執行個體設定、套件組合清單、OSGI、Sling量度和統計資料,因此可能會產生大型檔案。 您可以使用​下載狀態ZIP​窗口來減少大型狀態檔案的影響。 該窗口可從以下位置訪問:AEM >工具>操作>診斷>下載狀態ZIP。

在此窗口中,您可以選擇要導出的內容(日誌檔案和線程轉儲)以及下載中包含的相對於當前日期的日誌天數。

download_status_zip

下載線程轉儲

這將觸發下載包含系統中存在之執行緒相關資訊的zip。 提供了有關每個線程的資訊,如其狀態、類載入器和堆棧跟蹤。

下載堆轉儲

您還可以下載堆的快照,以便稍後分析該快照。 請注意,這會觸發以數百兆位元組為單位的大型檔案下載。

自動維護任務

「自動維護任務」頁是一個位置,您可以在其中查看和跟蹤計畫定期執行的建議維護任務。 這些任務與運行狀況檢查系統整合。 也可以從介面手動執行任務。

若要進入「操作控制面板」中的「維護」頁,您需要從「AEM歡迎」螢幕轉到​「工具 — 操作 — 控制面板 — 維護」,或直接遵循此連結:

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

操作儀表板中提供以下任務:

  1. 位於​每日維護窗口​菜單下的​修訂清除​任務。
  2. Lucene二進位檔清除​任務,位於​每日維護窗口​菜單下。
  3. 位於​每週維護窗口​菜單下的​工作流清除​任務。
  4. 資料儲存垃圾收集​任務,位於​每週維護窗口​菜單下。
  5. 審核日誌維護​任務,位於​每週維護窗口​菜單下。
  6. 版本清除維護​任務,位於​每週維護窗口​菜單下。

每日維護時段的預設時間為2 AM到5 AM。 週六的上午1:00至2:00之間,將執行在每週維護窗口中運行的任務。

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

chlimage_1-126

注意

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

修訂清理

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

Lucene 二進位清理

使用Lucene二進位檔清除任務,可以清除lucene二進位檔,並降低執行中的資料存放區大小需求。 這是因為lucene的二進位流失率將每日重新申請,而非先前對成功資料儲存垃圾收集執行的相依性。

雖然維護任務是為了減少Lucene相關修訂垃圾,但在運行任務時,總體效率有所提高:

  • 每週執行資料儲存垃圾收集任務將更快完成
  • 也可能會略微改善整體AEM效能

您可以從以下位置訪問Lucene二進位檔清除任務:AEM >工具>操作>維護>每日維護窗口> Lucene二進位檔清除

資料存放庫廢棄項目收集

有關資料儲存垃圾收集的詳細資訊,請參閱專用的文檔頁

工作流清除

您也可以從維護控制面板清除工作流程。 要運行「工作流清除」任務,您需要:

  1. 按一下​每週維護窗口​頁。
  2. 在以下頁中,按一下​工作流清除​卡中的​播放​按鈕。
注意

有關「工作流維護」的詳細資訊,請參見此頁

審核日誌維護

有關「審核日誌維護」,請參閱單獨文檔頁。

版本清除

您可以安排「版本清除」維護任務以自動刪除舊版本。 因此,這將手動使用版本清除工具的需求降至最低。 您可以通過訪問​工具>操作>維護>每週維護窗口​並遵循以下步驟來計畫和配置「版本清除」任務:

  1. 按一下​Add​按鈕。

  2. 從下拉菜單中選擇「版本清除」

    version_purge_maintenancetask

  3. 要配置「版本清除」任務,請按一下新建立的「版本清除」維護卡上的​gears​表徵圖。

    version_purge_taskconfiguration

使用AEM 6.4​時,您可以依照以下步驟停止「版本清除」維護任務:

  • 自動 — 如果計畫維護窗口在任務完成之前關閉,則任務會自動停止。 下次維護視窗開啟時,就會繼續。
  • 手動 — 要手動停止任務,請在「版本清除」維護卡上按一下​Stop​表徵圖。 在下次執行時,該任務將安全地恢復。
注意

停止維護任務意味著暫停其執行,而不丟失已在進行中的作業的跟蹤。

注意

要優化儲存庫大小,應經常運行版本清除任務。 當流量有限時,應在工作時間之外排程該任務。

自定義維護任務

自訂維護任務可以作為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 必要

除了上述服務屬性外,JobConsumer介面的process()方法還需要通過添加應為維護任務執行的代碼來實現。 提供的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

服務部署後,會公開給Operations Dashboard UI。 您可以將其新增至其中一個可用的維護排程:

chlimage_1-127

這會在/apps/granite/operations/config/maintenance/schedule/taskname新增對應的資源。 如果任務與運行模式相關,則需要在該節點上設定granite.operations.conditions.runmode屬性,其中運行模式的值需要為此維護任務處於活動狀態。

系統綜覽

系統概述控制面板​顯示AEM執行個體的設定、硬體和運作狀況的概觀。 這表示系統健康狀態是透明的,所有資訊都會匯總到單一控制面板中。

注意

您也可以觀看此影片以了解「系統概述控制面板」的簡介。

如何訪問

要訪問「系統概述控制面板」,請導航至「工具>操作>系統概述」。

system_overview_dashboard

系統概述儀表板說明

下表說明了「系統概述控制面板」中顯示的所有資訊。 請記住,當沒有要顯示的相關資訊時(例如,備份未進行,沒有關鍵的運行狀況檢查),相應的部分將顯示「無條目」消息。

您也可以按一下控制面板右上角的​下載​按鈕,下載匯總控制面板資訊的JSON檔案。JSON端點為/libs/granite/operations/content/systemoverview/export.json,可用於curl指令碼中進行外部監控。

章節 顯示的資訊 什麼時候重要 連結至
健康狀態檢查
  • 處於「關鍵」狀態的檢查清單
  • 處於「警告」狀態的檢查清單
以視覺方式表示:
  • 關鍵檢查的紅色標籤
  • 警告檢查的橙色標籤
  • 運行狀況報告頁
維護任務
  • 失敗的任務清單
  • 當前正在運行的任務清單
  • 上次運行成功的任務清單
  • 從未運行的任務清單
  • 未排程的任務清單

視覺上表示:

  • 失敗任務的紅色標籤
  • 橘色標籤,用於執行任務(因可能影響效能)
  • 其他每個狀態的灰色標籤
  • 維護任務頁
系統
  • 作業系統和作業系統版本(例如Mac OS X)
  • 系統負載平均,從OperatingSystemMXBeanusable中檢索
  • 磁碟空間(位於主目錄所在的分區上)
  • 最大堆,由MemoryMXBean返回
N/A 不適用
例項
  • AEM版本
  • 運行模式清單
  • 執行個體的啟動日期
不適用 不適用
存放庫
  • oak版本
  • 節點儲存的類型(段Tar或文檔)
    • 如果類型為文檔,則顯示文檔儲存的類型(RDB或Mongo)
  • 如果有自訂資料存放區:
    • 對於檔案資料儲存,會顯示路徑
    • 對於S3資料存放區,會顯示S3儲存貯體的名稱
    • 對於共用的S3資料存放區,會顯示S3儲存貯體的名稱
    • 對於Azure資料儲存區,會顯示容器
  • 如果沒有自訂外部資料存放區,則會顯示指出此事實的訊息
不適用 不適用
發佈代理程式
  • 具有被阻止隊列的代理清單
  • 未配置代理的清單(「配置錯誤」)
  • 已暫停隊列處理的代理清單
  • 空閒代理的清單
  • 運行代理的清單(當前正在處理條目)

視覺上表示:

  • 被阻止的代理或配置錯誤的紅色標籤
  • 已暫停的代理的橙色標籤
  • 已暫停、空閒或正在運行的代理的灰色標籤
分發頁
複寫代理程式
  • 具有被阻止隊列的代理清單
  • 空閒代理的清單
  • 運行代理的清單(當前正在處理條目)

以視覺方式表示:

  • 被阻止代理的紅色標籤
  • 已暫停代理的灰色標籤
復寫頁面
工作流程
  • 工作流作業:
    • 失敗的工作流作業數(如果有)
    • 已取消的工作流作業數(如果有)
  • 工作流計數 — 處於指定狀態的工作流數(如果有):
    • 執行
    • 失敗
    • 暫停
    • 已中止

對於上述呈現的每個狀態,會執行查詢,限制為400毫秒。 在400毫秒時,將顯示截至該點為止獲得的條目數。

未解釋:

  • 使用者應調查何時有工作流程和工作處於非預期狀態。
「工作流失敗」頁
Sling 工作

Sling作業計數 — 處於指定狀態的作業數(如果有):

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

未解釋:

  • 使用者應調查何時有未預期狀態或計數較高的作業。
不適用
預估節點計數

估計數量:

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

從nodeCounterMBean獲取節點總數,其餘統計資訊從IndexInfoService獲取。

不適用 不適用
備份 如果是,則顯示「正在進行線上備份」。 不適用 不適用
索引

顯示:

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

如果線程轉儲中存在索引或查詢線程。

不適用 不適用

本頁內容