操作仪表板

简介

AEM 6中的操作仪表板可帮助系统操作员一目了然地监控AEM系统运行状况。 它还提供有关AEM相关方面的自动生成的诊断信息,并允许配置和运行自包含的维护自动化,以显着减少项目操作和支持案例。 “操作”仪表板可通过自定义运行状况检查和维护任务进行扩展。 此外,操作仪表板数据可以通过JMX从外部监视工具访问。

操作仪表板:

  • 是一键式系统状态,可帮助运营部门提高效率
  • 在一个集中的位置提供系统运行状况概述
  • 缩短查找、分析和修复问题的时间
  • 提供自带的维护自动化功能,有助于显着降低项目运营成本

可以从AEM欢迎屏幕转至​Tools - Operations​访问它。

注意

要能够访问“操作”仪表板,登录用户必须是“操作员”用户组的一部分。 有关详细信息,请参阅用户、组和访问权限管理的相关文档。

健康报表

运行状况报告系统通过Sling运行状况检查提供有关AEM实例运行状况的信息。 这可以通过OSGI、JMX、HTTP请求(通过JSON)或通过触屏UI来完成。 它优惠某些可配置计数器的度量值和阈值,在某些情况下,它将优惠有关如何解决该问题的信息。

它具有以下几个功能。

运行状况检查

运行状况报告​是一个卡系统,表明特定产品区域的运行状况良好或不良。 这些卡是Sling运行状况检查的可视化,它将来自JMX和其他源的数据聚合,并再次将处理的信息显示为MBean。 这些MBean还可以在JMX Web控制台中的​org.apache.sling.healthcheck​域下进行检查。

运行状况报告界面可通过AEM欢迎屏幕上的​工具 - 操作 - 运行状况报告​菜单访问,或直接通过以下URL访问:

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

chlimage_1-414

卡系统显示三种可能的状态:确定警告​和​关键。 这些状态是规则和阈值的结果,可以通过将鼠标悬停在卡上并单击操作栏中的齿轮图标来配置规则和阈值:

chlimage_1-415

运行状况检查类型

AEM 6中有两种类型的运行状况检查:

  1. 个人运行状况检查
  2. 综合运行状况检查

单个运行状况检查​是与状态卡对应的单个运行状况检查。 单个运行状况检查可以配置规则或阈值,并且它们可以提供一个或多个提示和链接来解决已识别的运行状况问题。 让我们以“日志错误”检查为例:如果实例日志中有ERROR项,您将在运行状况检查的详细信息页面上找到它们。 在页面顶部,您将在“诊断工具”部分看到指向“日志消息”分析器的链接,该链接使您能够更详细地分析这些错误并重新配置日志程序。

复合运行状况检查​是一个检查,它聚合了多个单独检查中的信息。

综合运行状况检查是使用​过滤器标签​来配置的。 本质上,具有相同过滤器标签的所有单个检查都将分组为复合运行状况检查。 仅当聚合的所有单个检查都具有“OK”状态时,“Composite Health Check”(综合运行状况检查)才会具有“OK”状态。

如何创建运行状况检查

在“操作”仪表板中,您可以直观地显示单个运行状况检查和复合运行状况检查的结果。

创建单个运行状况检查

创建单个运行状况检查涉及两个步骤:实施Sling运行状况检查,并在仪表板的配置节点中添加运行状况检查项。

  1. 要创建Sling运行状况检查,您需要创建一个实现Sling HealthCheck界面的OSGI组件。 您将将此组件添加到捆绑包中。 组件的属性将完全标识运行状况检查。 安装该组件后,将自动为运行状况检查创建JMX MBean。 有关详细信息,请参阅Sling运行状况检查文档

    Sling运行状况检查组件示例(使用OSGI服务组件注释编写):

    @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. 创建运行状况检查后,需要创建新的配置节点,以便在“操作”仪表板界面中访问该节点。 对于此步骤,必须知道运行状况检查的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-63

  4. 创建配置并保存。 将使用新配置创建Mbean。

    每个配置属性的用途如下:

    • 名称(hc.name): 复合运行状况检查的名称。建议使用有意义的名称。
    • 标记(hc.tags):此 运行状况检查的标记。如果此复合运行状况检查旨在成为另一个复合运行状况检查的一部分(例如,在运行状况检查的层次结构中),请添加此复合所关联的标记。
    • MBean名称(hc.mbean.name): 将给此复合运行状况检查的JMX MBean的Mbean的名称。
    • 过滤器标签(filter.tags): 这是特定于复合运行状况检查的属性。这些是合成应聚合的标记。 复合运行状况检查将在其组下聚合所有具有任何与此复合的任何过滤器标签匹配的标签的运行状况检查。 例如,具有过滤器标签​test​和​check​的复合健康检查将聚合其标签属性(hc.tags)中具有任何​test​和​check​标签的所有个人和复合健康检查。
    注意

    将为Apache Sling Composite运行状况检查的每个新配置创建一个新的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”标签,它就已安装,它将自动显示在“操作”仪表板的“安全检查”复合检查下。

随AEM提供的运行状况检查

zHealthcheck名称 描述
查询性能

在AEM 6.4中,此运行状况检查已简化,现在检查最近重构的Oak QueryStats MBean,更具体地说是SlowQueries 属性。 如果统计数据包含任何慢速查询,运行状况检查将返回警告。 否则,返回“确定”状态。

此运行状况检查的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=OvertationQueueLengthHealthCheck,type=HealthCheck

查询遍历限制

查询遍历限制检查QueryEngineSettings MBean,更确切地说是LimitInMemoryLimitReads属性,并返回以下状态:

  • 如果其中一个限制等于或高于 Integer.MAX_VALUE
  • 如果其中一个限制低于10000(Oak的推荐设置),则返回“警告”状态
  • 如果无法检索QueryEngineSettings或任何限制,则返回“严重”状态

此运行状况检查的Mbean为org.apache.sling.healthcheck:name=queryTraveralLimitsBundle,type=HealthCheck

同步的时钟

此检查仅与文档nodestore群集相关。 它返回以下状态:

  • 当实例时钟不同步并超过预定义的低阈值时,返回“警告”状态
  • 当实例时钟不同步并超过预定义的高阈值时,返回“关键”状态

此运行状况检查的Mbean为org.apache.sling.healthcheck:name=slingDiscoveryOakSynchronizedCloks,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公开的数据来标识大索引并返回:

  • 如果有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 Jobs会检查在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条件,这些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界面使用配置管理器来完成:

    1. 打开浏览器并指向Nagios服务器。
    2. 按顶部菜单中的​配置​按钮。
    3. 在左窗格中,按​高级配置​下的​核心配置管理器
    4. 按​监视​部分下的​主机​链接。
    5. 添加主机定义:

    chlimage_1-416

    以下是主机配置文件的示例,如果您使用的是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 check命令:

    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-417

诊断工具

操作仪表板还提供对诊断工具的访问,这些工具可以帮助查找和排除来自运行状况检查仪表板的警告的根本原因,并为系统操作员提供重要的调试信息。

其最重要的功能包括:

  • 日志消息分析器
  • 能够访问堆和线程转储
  • 请求和查询性能分析器

可从AEM欢迎屏幕转至​工具 — 操作 — 诊断,进入诊断工具屏幕。 您还可以通过直接访问以下URL来访问屏幕:https://serveraddress:port/libs/granite/operations/content/diagnosis.html

chlimage_1-418

日志消息

默认情况下,日志消息用户界面将显示所有ERROR消息。 如果要显示更多日志消息,您需要配置具有相应日志级别的记录器。

日志消息使用内存日志附加器,因此与日志文件无关。 另一个结果是更改此UI中的日志级别不会更改传统日志文件中记录的信息。 在此UI中添加和删除记录器将仅影响内存记录器。 另外,请注意,更改记录器配置将反映在内存记录器的将来 — 不删除已记录且不再相关的条目,但类似条目将来不会记录。

您可以通过在UI中从左上角的齿轮按钮提供记录器配置来配置记录器。 您可以在此处添加、删除或更新记录器配置。 记录器配置由​日志级别(WARN / INFO / DEBUG)和​过滤器名称​组成。 筛选器名称​具有筛选日志消息源的角色。 或者,如果记录器应捕获指定级别的所有日志消息,则过滤器名称应为“root”。 设置记录器的级别将触发所有消息的捕获,其级别等于或高于指定的级别。

示例:

  • 如果您计划捕获所有​ERROR​消息 — 不需要配置。 默认情况下会捕获所有ERROR消息。

  • 如果计划捕获所有​ERRORWARN​和​INFO​消息,应将记录器名称设置为:"root",记录器级别为:信息

  • 如果您计划捕获来自某个包的所有消息(例如com.adobe.granite) — 应将记录器名称设置为:“com.adobe.granite”和记录器级别:DEBUG(这将捕获所有​ERRORWARNINFO​和​DEBUG​消息),如下图所示。

chlimage_1-419

注意

无法设置记录器名称以通过指定的过滤器仅捕获ERROR消息。 默认情况下,将捕获所有ERROR消息。

注意

日志消息用户界面不反映实际错误日志。 除非您在UI中配置其他类型的日志消息,否则只会显示错误消息。 有关如何显示特定日志消息的信息,请参阅上面的说明。

注意

诊断页面中的设置不会影响记录到日志文件的内容,反之亦然。 因此,尽管错误日志可能会捕获INFO消息,但您可能在日志消息UI中看不到这些消息。 此外,通过UI,可以从某些包中捕获DEBUG消息,而不会影响错误日志。 有关如何配置日志文件的详细信息,请参阅日志记录

注意

在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>

请求性能

“请求性能”页允许分析处理的最慢页面请求。 此页面上只会注册内容请求。 具体而言,将捕获以下请求:

  1. 访问/content下的资源的请求
  2. 访问/etc/design下的资源的请求
  3. 具有".html"扩展的请求

chlimage_1-420

此时将显示页面:

  • 发出请求的时间
  • URL和请求方法
  • 持续时间(以毫秒为单位)

默认情况下,捕获最慢的20个页面请求,但可以在配置管理器中修改此限制。

查询性能

“查询性能”页允许分析系统执行的最慢查询。 此信息由JMX Mbean中的存储库提供。 在Jackrabbit中,com.adobe.granite.QueryStat JMX Mbean提供此信息,而在Oak存储库中,它由org.apache.jackrabbit.oak.QueryStats.提供

此时将显示页面:

  • 创建查询的时间
  • 查询语
  • 发布查询的次数
  • 查询
  • 持续时间(以毫秒为单位)

chlimage_1-421

说明查询

对于任何给定查询,Oak都会尝试根据存储库中​oak:index​节点下定义的Oak索引找出最佳执行方式。 根据查询,Oak可以选择不同的索引。 了解Oak如何执行查询是优化查询的第一步。

“解释查询”是一个工具,用于解释Oak如何执行查询。 可以通过从AEM欢迎屏幕转至​工具 — 操作 — 诊断,然后单击​查询性能​并切换至​说明查询​选项卡来访问它。

功能

  • 支持Xpath、JCR-SQL和JCR-SQL2查询语言
  • 报告提供查询的实际执行时间
  • 检测慢速查询并警告可能慢速的查询
  • 报告用于执行查询的Oak索引
  • 显示实际Oak查询引擎说明
  • 提供慢速和常用查询的点击加载列表

进入解释查询UI后,只需输入查询并按​说明​按钮即可使用:

chlimage_1-422

“查询说明”部分中的第一个条目是实际说明。 说明将显示用于执行查询的索引类型。

第二个条目是执行计划。

在运行查询之前,按​包含执行时间​框键还将显示查询的执行时间,以便提供可用于优化应用程序或部署的索引的详细信息。

chlimage_1-423

索引管理器

索引管理器的目的是促进索引管理,如维护索引或查看索引的状态。

可从欢迎屏幕转至​工具 — 操作 — 诊断,然后单击​索引管理器​按钮访问。

也可以通过以下URL直接访问它:https://serveraddress:port/libs/granite/operations/content/diagnosistools/indexManager.html

chlimage_1-424

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点到5点。 配置为在每周维护窗口中运行的任务将在星期六的上午1点到凌晨2点之间执行。

您还可以通过按任意两个维护卡上的齿轮图标来配置时间:

chlimage_1-425

注意

自AEM 6.1起,还可以将现有维护窗口配置为每月运行。

修订清理

有关执行AEM 6.4的修订清理的详细信息,请参阅此专用文章🔗

Lucene 二进制文件清理

通过使用Lucene二进制文件清理任务,可以清除lucene二进制文件并减少运行中的数据存储大小要求。 这是因为Lucene的二进制服务器服务器服务器服务器将每天重新申请,而不是以前对成功运行数据存储垃圾收集的依赖性。

虽然开发维护任务是为了减少与Lucene相关的修改垃圾,但运行任务时总体效率有所提高:

  • 每周执行数据存储垃圾收集任务将更快地完成
  • 它还可能略微提高AEM的整体性能

您可以从以下位置访问Lucene二进制文件清理任务:AEM >工具>操作>维护>每日维护窗口> Lucene二进制文件清理

数据存储垃圾收集

有关数据存储垃圾收集的详细信息,请参阅专用的文档页面

工作流清除

工作流也可以从维护仪表板中清除。 要运行“工作流清除”任务,您需要:

  1. 单击​每周维护窗口​页。
  2. 在下一页中,单击​工作流清除​卡中的​播放​按钮。
注意

有关工作流维护的详细信息,请参阅此页

审核日志维护

有关“审核日志维护”,请参阅单独的文档页。

版本清除

您可以计划“版本清除”维护任务,以自动删除旧版本。 因此,这使手动使用版本清除工具的需要降至最低。 您可以访问​“工具”>“操作”>“维护”>“每周维护窗口”​并执行以下步骤来计划和配置“版本清除”任务:

  1. 单击​添加​按钮。

  2. 从下拉菜单中选择​版本清除

    version_purge_maintenancetask

  3. 要配置“版本清除”任务,请单击新创建的“版本清除”维护卡上的​gears​图标。

    version_purge_taskconfiguration

在AEM 6.4中,您可以按如下方式停止版本清除维护任务:

  • 自动 — 如果计划的维护窗口在任务完成之前关闭,则任务会自动停止。 在下一个维护窗口打开时,它将恢复。
  • 手动 — 要手动停止任务,请在“版本清除”维护卡上单击​停止​图标。 下次执行时,任务将安全地恢复。
注意

停止维护任务意味着暂停其执行,而不丢失对已在进行的作业的跟踪。

注意

为了优化存储库大小,您应经常运行版本清除任务。 任务应在业务时间以外安排,当流量有限时。

自定义维护任务

自定义维护任务可以作为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

部署服务后,它将暴露在“操作”仪表板UI中,并可以添加到某个可用的维护计划中:

chlimage_1-426

这将在/apps/granite/operations/config/maintenance/schedule/taskname添加相应的资源。 如果任务与运行模式相关,则需要在该节点上设置granite.operations.conditions.runmode属性,并设置运行模式的值,这些值对于此维护任务需要处于活动状态。

系统概览

系统概述仪表板​显示AEM实例的配置、硬件和运行状况的高级概述。 这意味着系统运行状况是透明的,所有信息都会聚集到一个仪表板中。

注意

您还可以观看此视频,了解“系统概述”仪表板的简介。

如何访问

要访问“系统概述”仪表板,请导航到​“工具”>“操作”>“系统概述”

system_overview_仪表板

系统概述仪表板说明

下表描述了“系统概述”仪表板中显示的所有信息。 请记住,当没有要显示的相关信息(例如,备份未进行,没有关键的运行状况检查)时,相应部分将显示“无条目”消息。

您还可以通过单击仪表板右上角的​下载​按钮来下载汇总仪表板信息的JSON文件。JSON端点是/libs/granite/operations/content/systemoverview/export.json,可在curl脚本中用于外部监视。

区域 显示哪些信息 什么时候至关重要 链接到
运行状况检查
  • 处于“关键”状态的检查列表
  • 处于“警告”状态的检查列表
可视指示:
  • 关键检查的红色标签
  • 用于警告检查的橙色标签
  • 运行状况报告页
维护任务
  • 一列表失败的任务
  • 当前运行的列表任务
  • 在上次运行中成功的列表任务
  • 一列表从未运行的任务
  • 未计划的列表任务

以可视方式指示:

  • 失败任务的红色标记
  • 用于运行任务的橙色标签(因为它们可能影响性能)
  • 其他所有状态的灰色标签
  • 维护任务页
系统
  • 操作系统和操作系统版本(例如Mac OS X)
  • 系统负载平均值,从OperatingSystemMXBeanusable检索
  • 磁盘空间(在主目录所在的分区上)
  • 最大堆,由MemoryMXBean返回
不适用 不适用
实例
  • AEM版本
  • 列表运行模式
  • 实例启动的日期
不适用 不适用
存储库
  • Oak版
  • 节点存储的类型(区段Tar或文档)
    • 如果类型为文档,则显示文档存储的类型(RDB或Mongo)
  • 如果存在自定义数据存储:
    • 对于文件数据存储区,将显示路径
    • 对于S3数据存储,将显示S3存储桶的名称
    • 对于共享的S3数据存储,将显示S3存储桶的名称
    • 对于Azure容器存储,将显示
  • 如果没有自定义外部数据存储,则显示指示此事实的消息
不适用 不适用
分发代理
  • 具有被阻止队列的代理的列表
  • 列表配置错误的代理(“配置错误”)
  • 暂停队列处理的代理列表
  • 一列表空闲代理
  • 运行代理的列表(当前正在处理条目)

以可视方式指示:

  • 被阻止的代理或配置错误的红色标记
  • 暂停的代理的橙色标签
  • 暂停、空闲或运行代理的灰色标记
分发页
复制代理
  • 具有被阻止队列的代理的列表
  • 一列表空闲代理
  • 运行代理的列表(当前正在处理条目)

可视指示:

  • 被阻止的代理的红色标签
  • 暂停代理的灰色标记
复制页
工作流
  • 工作流作业:
    • 失败的工作流作业数(如果有)
    • 已取消的工作流作业数(如果有)
  • 工作流计数 — 处于给定状态的工作流数(如果有):
    • 运行
    • 失败
    • 暂停
    • 中止

对于以上显示的每种状态,将执行查询,限制为400毫秒。 在400毫秒时,将显示到该点为止获取的条目数。

未解释:

  • 当工作流和作业处于意外状态时,用户应进行调查。
“工作流失败”页
Sling 作业

Sling作业计数 — 处于给定状态的作业数(如果有):

  • 失败
  • 排队
  • 已取消
  • 活动

未解释:

  • 当存在处于意外状态或计数较高的作业时,用户应进行调查。
不适用
预计节点计数

估计数:

  • 资产
  • 标记
  • 可授权
  • 节点总数

节点总数从nodeCounterMBean获取,其余统计信息则从IndexInfoService获取。

不适用 不适用
备份 如果出现这种情况,则显示“正在进行联机备份”。 不适用 不适用
索引

显示:

  • "正在进行索引"
  • "正在进行查询"

如果线程转储中存在索引或查询线程。

不适用 不适用

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now