操作功能板 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. 复合运行状况检查

An 个人运行状况检查 是与状态卡对应的单个运行状况检查。 可以使用规则或阈值配置各个运行状况检查,它们可以提供一个或多个提示和链接以解决已识别的运行状况问题。 让我们以“日志错误”检查为例:如果实例日志中存在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配置管理器。 访问 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 值(即事件被删除时)
  • 如果符合以下条件,则返回Warn 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聚类. 它会返回以下状态:

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

此运行状况检查的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:

  • 如果索引中的文档超过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小时的长时间运行的活动作业,则返回Critical
  • 如果存在已排队的作业,并且最后完成的作业时间早于1小时,则返回Critical

只能配置已排队作业的最大数量参数,其默认值为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

活动包

活动包检查所有包的状态,并且:

  • 如果有任何捆绑包未处于活动状态或(从延迟激活开始),则返回警告状态
  • 它忽略忽略列表中的捆绑包状态

ignore list参数是可配置的。

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

代码缓存检查

运行状况检查验证多个JVM条件,这些条件可能会触发Java™ 7中存在的CodeCache错误:

  • 如果实例在Java™ 7上运行,并且启用了代码缓存刷新,则返回Warn
  • 如果实例在Java™ 7上运行,并且保留的代码缓存大小小于最小阈值(默认值为90 MB),则返回Warn

minimum.code.cache.size 阈值可配置。 有关Bug的详细信息,请参见 然后搜索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服务器的主机定义。 您可以使用Configuration Manager通过Nagios XI Web界面完成此任务:

    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的左上角齿轮按钮提供记录器配置来配置记录的内容。 在那里,您可以添加、删除或更新记录器配置。 日志记录器配置由 日志级别 (警告/信息/调试)和 筛选器名称. 此 筛选器名称 具有筛选被记录的日志消息的源的角色。 或者,如果日志记录器应捕获指定级别的所有日志消息,则过滤器名称应为''“。 设置记录器的级别将触发捕获级别等于或高于指定级别的所有消息。

示例:

  • 如果您计划捕获所有 错误 消息 — 无需配置。 默认情况下会捕获所有错误消息。

  • 如果您计划捕获所有 错误警告信息 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语句:
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中的存储库提供。 在杰克拉比, com.adobe.granite.QueryStat JMX Mbean提供此信息,而在Oak存储库中,此信息由提供 org.apache.jackrabbit.oak.QueryStats.

此时将显示页面:

  • 进行查询的时间
  • 查询的语言
  • 发出查询的次数
  • 查询的语句
  • 持续时间(以毫秒为单位)

chlimage_1-123

说明查询 explain-query

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

Explain查询是一种说明Oak如何执行查询的工具。 可以通过以下位置访问它: 工具 — 操作 — 诊断 从AEM欢迎屏幕。 然后,单击 查询性能 并切换到 说明查询 选项卡。

功能

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

进入Explain查询UI后,输入查询,然后按 说明 按钮:

chlimage_1-124

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

第二个条目是执行计划。

勾选 包括执行时间 运行查询之前的框还会显示运行查询所用的时间。 此 包括节点数 选项报告节点计数。 该报告提供了可用于优化应用程序或部署的索引的更多信息。

chlimage_1-125

索引管理器 the-index-manager

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

通过从“Welcome Screen(欢迎屏幕)”转到​ Tools - Operations - Diagnosis ​,然后单击 索引管理器 按钮。

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

index_manager

UI可用于过滤表中的索引,方法是在屏幕左上角的搜索框中键入过滤条件。

下载状态ZIP download-status-zip

此操作会触发下载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 用于外部监视的脚本。

分区
显示哪些信息
什么时候重要
链接到
运行状况检查
  • 处于“严重”状态的检查列表
  • 处于警告状态的检查列表

以可视方式指示:

  • 严重检查的红色标记
  • 用于警告检查的橙色标记
  • “运行状况报表”页面
维护任务
  • 失败的任务列表
  • 当前正在运行的任务列表
  • 上次运行中成功的任务列表
  • 从未运行的任务列表
  • 未计划的任务列表

以可视方式指示:

  • 失败任务的红色标记
  • 用于运行任务的橙色标记(因为它们可能会影响性能)
  • 每个其他状态的灰色标记
  • “维护任务”页
系统
不适用
不适用
实例
  • AEM版本
  • 运行模式列表
  • 启动实例的日期
不适用
不适用
存储库
  • Oak版本

  • 节点存储的类型(区段Tar或文档)

    • 如果类型为文档,则显示文档存储的类型(RDB或Mongo)
  • 如果有自定义数据存储:

    • 对于文件数据存储,将显示路径
    • 对于S3数据存储,将显示S3存储段的名称
    • 对于共享的S3数据存储,将显示S3存储段的名称
    • 对于Azure数据存储,将显示容器
  • 如果没有自定义外部数据存储,则会显示一条消息,指示此事实

不适用
不适用
分发代理
  • 具有被阻止队列的代理列表
  • 错误配置的代理列表(“配置错误”)
  • 队列处理已暂停的代理列表
  • 空闲代理的列表
  • 正在运行的代理(当前正在处理条目)列表

以可视方式指示:

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

以可视方式指示:

  • 被阻止代理的红色标记
  • 暂停代理的灰色标记
复制页面
工作流
  • 工作流作业:

    • 失败的工作流作业数(如果有)
    • 已取消的工作流作业数(如果有)
  • 工作流计数 — 给定状态(如果有)的工作流数量:

    • 正在运行
    • 失败
    • 已暂停
    • 已中止

对于上面显示的每个状态,将执行查询,限制为400毫秒。 在400毫秒时,会显示截至该时间为止获得的条目数。

未解释:

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

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

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

未解释:

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

预计数量:

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

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

不适用
不适用
备份
显示“正在进行联机备份”(如果是)。
不适用
不适用
索引

显示:

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

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

不适用
不适用
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2