操作功能板 :headding-anchor:operations-dashboard
简介 :headding-anchor:introduction
AEM 6中的操作仪表板可帮助系统操作员一目了然地监控AEM系统运行状况。 它还提供有关AEM相关方面的自动生成诊断信息,并可让您配置和运行自包含的维护自动化,从而显着减少项目操作和支持案例。 操作功能板可通过自定义运行状况检查和维护任务进行扩展。 此外,可通过JMX从外部监控工具访问操作仪表板数据。
操作仪表板:
- 是一键式系统状态,可帮助运营部门提高效率
- 在单个集中位置提供系统运行状况概述
- 缩短查找、分析和修复问题的时间
- 提供独立的维护自动化,帮助显着降低项目运营成本
通过从AEM欢迎屏幕转到 工具 - 操作 可访问该区域。
健康报表 :headding-anchor:health-reports
运行状况报告系统通过Sling运行状况检查提供有关AEM实例的运行状况的信息。 可通过OSGI、JMX、HTTP请求(通过JSON)或通过Touch UI完成此操作。 它提供某些可配置计数器的测量值和阈值,有时提供有关如何解决问题的信息。
它具有若干功能,如下所述。
运行状况检查 :headding-anchor:health-checks
运行状况报告 是一个卡片系统,用于指示特定产品区域的运行状况是好还是坏。 这些卡片是Sling运行状况检查的可视化图表,用于聚合来自JMX和其他源的数据,并再次将处理过的信息作为MBean显示。 也可以在 org.apache.sling.healthcheck 域下的JMX Web控制台中检查这些MBean。
可通过AEM欢迎屏幕上的 工具 - 操作 - 运行状况报告 菜单或直接通过以下URL访问运行状况报告界面:
https://<serveraddress>:port/libs/granite/operations/content/healthreports/healthreportlist.html
卡片系统可能会显示三种状态:正常、警告 和 严重。 状态是规则和阈值的结果,可以通过将鼠标悬停在信息卡上,然后单击操作栏中的齿轮图标来配置这些规则和阈值:
运行状况检查类型 :headding-anchor:health-check-types
AEM 6中有两种类型的运行状况检查:
- 个人运行状况检查
- 复合运行状况检查
个人运行状况检查 是与状态卡相对应的单个运行状况检查。 可以使用规则或阈值配置各个运行状况检查,它们可以提供一个或多个提示和链接以解决已识别的运行状况问题。 让我们以“日志错误”检查为例:如果实例日志中存在ERROR条目,请在运行状况检查的详细信息页面上查找它们。 在页面顶部,您可以看到“诊断工具”部分中“日志消息”分析器的链接,该链接允许您更详细地分析这些错误并重新配置日志程序。
复合运行状况检查 是汇总来自多个单独检查的信息的检查。
复合运行状况检查是通过 筛选标记 配置的。 实质上,具有相同过滤器标记的所有单次检查都分组为复合运行状况检查。 仅当所有其聚合的单项检查的状态均为OK时,复合运行状况检查的状态才为OK。
如何创建运行状况检查 :headding-anchor:how-to-create-health-checks
在“操作”功能板中,您可以显示单个和复合运行状况检查的结果。
创建个人运行状况检查 :headding-anchor:creating-an-individual-health-check
创建单个运行状况检查涉及两个步骤:实施Sling运行状况检查和在功能板的配置节点中添加运行状况检查条目。
-
要创建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的名称。 -
创建运行状况检查后,必须创建新的配置节点,才能在操作功能板界面中访问该节点。 对于此步骤,需要知道运行状况检查的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
路径具有以下属性设置为true:sling:configCollectionInherit
sling:configPropertyInherit
此过程告知配置管理器将新配置与 /libs
中的现有配置合并。 -
创建复合运行状况检查 :headding-anchor:creating-a-composite-health-check
复合运行状况检查的作用是聚合多个单独的运行状况检查,这些检查共享一组常用功能。 例如,安全复合运行状况检查将执行安全相关验证的所有单独运行状况检查分组。 创建复合检查的第一步是添加OSGI配置。 要使它显示在“操作仪表板”中,必须以简单检查的方式添加新配置节点。
-
转到OSGI控制台中的Web配置管理器。 访问
https://serveraddress:port/system/console/configMgr
-
搜索名为 Apache Sling复合运行状况检查 的项目。 找到后,请注意已有两个配置可用:一个用于系统检查,另一个用于安全检查。
-
通过按配置右侧的“+”按钮创建配置。 将显示一个新窗口,如下所示:
-
创建配置并保存。 使用新配置创建Mbean。
每个配置属性的用途如下:
- 名称(hc.name): 复合运行状况检查的名称。 建议使用有意义的名称。
- 标记(hc.tags): 此运行状况检查的标记。 如果此复合运行状况检查要作为另一个复合运行状况检查(例如,在运行状况检查的层次结构中)的一部分,请添加此复合与之相关的标记。
- MBean名称(hc.mbean.name): 为此复合运行状况检查的JMX MBean指定的Mbean的名称。
- 筛选标记(filter.tags): 特定于复合运行状况检查的属性。 这些标记由复合聚合。 复合运行状况检查将在其组下聚合所有具有与此复合的任何过滤器标记匹配的标记的运行状况检查。 例如,具有筛选器标记 test 和 check 的组合运行状况检查聚合其标记属性(
hc.tags
)中具有任何 test 和 check 标记的所有单独和组合运行状况检查。
note note NOTE 为Apache Sling复合运行状况检查的每个新配置创建一个新的JMX Mbean。** -
最后,必须将已创建的复合运行状况检查条目添加到操作仪表板配置节点中。 此过程与单个运行状况检查的过程相同:必须在
/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
- 类型:
note note NOTE 如果创建逻辑上属于复合检查的各个运行状况检查(默认情况下,该复合检查已存在于仪表板中),则会在相应的复合检查下自动捕获和分组这些运行状况检查。 因此,无需为这些检查创建配置节点。 例如,如果您创建单独的安全运行状况检查,请为其分配“安全”标记,然后安装该标记。 它自动显示在“操作”操控板的“安全检查”复合检查下。 -
AEM提供的运行状况检查 :headding-anchor:health-checks-provided-with-aem
运行状况检查配置 :headding-anchor:health-check-configuration
默认情况下,对于现成的AEM实例,运行状况检查每60秒运行一次。
您可以使用OSGi配置 查询运行状况检查配置 (com.adobe.granite.queries.impl.hc.QueryHealthCheckMetrics)配置 Period。
使用外部服务进行监控 :headding-anchor:monitoring-with-external-services
可与外部技术或供应商集成。 有关相关详细信息,请参阅其文档。
诊断工具 :headding-anchor:diagnosis-tools
操作仪表板还提供对诊断工具的访问权限,这些工具可帮助查找并排除来自运行状况检查仪表板的警告的根本原因,并为系统操作员提供重要的调试信息。
其最重要的特征包括:
- 日志消息分析器
- 访问栈和线程转储的功能
- 请求和查询性能分析器
您可以从AEM欢迎屏幕转到 工具 — 操作 — 诊断 来访问“诊断工具”屏幕。 您还可以通过直接访问以下URL来访问屏幕: https://serveraddress:port/libs/granite/operations/content/diagnosis.html
日志消息 :headding-anchor:log-messages
日志消息用户界面默认显示所有ERROR消息。 如果要显示更多日志消息,请使用适当的日志级别配置日志程序。
日志消息使用内存中的日志附加器,因此与日志文件无关。 另一个后果是,更改此UI中的日志级别不会更改记录到传统日志文件中的信息。 在此UI中添加和删除记录器仅影响内存记录器。 此外,更改记录器配置将反映在内存记录器的未来中。 已记录且不再相关的条目不会被删除,但将来不会记录类似的条目。
您可以通过从UI的左上角齿轮按钮提供记录器配置来配置记录的内容。 在那里,您可以添加、删除或更新记录器配置。 记录器配置由 日志级别 (WARN / INFO / DEBUG)和 筛选器名称 组成。 筛选器名称 具有筛选要记录的日志消息源的角色。 或者,如果日志记录器应捕获指定级别的所有日志消息,则筛选器名称应为“root”。 设置记录器的级别将触发捕获级别等于或高于指定级别的所有消息。
示例:
-
如果您计划捕获所有 ERROR 消息,则无需配置。 默认情况下会捕获所有错误消息。
-
如果您计划捕获所有 ERROR、WARN 和 INFO 消息,则记录器名称应设置为“root”,记录器级别应设置为 INFO。
-
如果您计划捕获来自特定包(例如com.adobe.granite)的所有消息,则应将记录器名称设置为“com.adobe.granite”。 而且,记录器级别设置为 DEBUG (这样做会捕获所有 ERROR、WARN、INFO 和 DEBUG 消息),如下图所示。
Log level: INFO
DATE+TIME [MaintanceLogger] Name=<MT_NAME>, Status=<MT_STATUS>, Time=<MT_TIME>, Error=<MT_ERROR>, Details=<MT_DETAILS>
请求性能 :headding-anchor:request-performance
使用“请求性能”页可以分析处理的最慢的页面请求。 此页面上仅注册内容请求。 更具体地说,将捕获以下请求:
- 请求访问
/content
下的资源 - 请求访问
/etc/design
下的资源 - 具有
".html"
扩展名的请求
此时将显示页面:
- 发出请求的时间
- URL和请求方法
- 持续时间(以毫秒为单位)
默认情况下,会捕获最慢的20页请求,但可以在Configuration Manager中修改此限制。
查询性能 :headding-anchor:query-performance
使用“查询性能”页可以分析系统执行的最慢查询。 此信息由JMX Mbean中的存储库提供。 在Jackrabbit中,com.adobe.granite.QueryStat
JMX Mbean提供此信息,而在Oak存储库中,此信息由org.apache.jackrabbit.oak.QueryStats.
提供
此时将显示页面:
- 进行查询的时间
- 查询的语言
- 发出查询的次数
- 查询的语句
- 持续时间(以毫秒为单位)
说明查询 :headding-anchor:explain-query
对于任何给定的查询,Oak会尝试根据 oak:index 节点下的存储库中定义的Oak索引找出最佳执行方式。 Oak可能会根据查询选择不同的索引。 了解Oak如何执行查询是优化查询的第一步。
Explain查询是一种用于说明Oak如何执行查询的工具。 通过从AEM欢迎屏幕转到 工具 — 操作 — 诊断 可访问该区域。 然后,单击 查询性能 并切换到 解释查询 选项卡。
功能
- 支持Xpath、JCR-SQL和JCR-SQL2查询语言
- 报告所提供的查询的实际执行时间
- 检测较慢的查询,并警告可能较慢的查询
- 报告用于执行查询的Oak索引
- 显示实际的Oak查询引擎说明
- 提供慢速查询和常用查询的点击加载列表
进入Explain查询UI后,输入查询,然后按 Explain 按钮:
“查询说明”部分中的第一个条目是实际说明。 此说明显示了用于执行查询的索引类型。
第二个条目是执行计划。
在运行查询前勾选 包括执行时间 框也会显示查询运行的时间。 包含节点数 选项报告节点数。 该报告提供了可用于优化应用程序或部署的索引的更多信息。
索引管理器 :headding-anchor:the-index-manager
索引管理器的目的是促进索引管理,如维护索引或查看索引的状态。
通过从“欢迎屏幕”转到 工具 — 操作 — 诊断,然后单击 索引管理器 按钮可访问该区域。
也可以通过以下URL直接访问它: https://serveraddress:port/libs/granite/operations/content/diagnosistools/indexManager.html
UI可用于过滤表中的索引,方法是在屏幕左上角的搜索框中键入过滤条件。
下载状态ZIP :headding-anchor:download-status-zip
此操作会触发下载zip文件,其中包含有关系统状态和配置的有用信息。 存档包含实例配置、包列表、OSGI、Sling量度和统计数据,这可能会导致产生大文件。 您可以使用 下载状态ZIP 窗口来减少大型状态文件的影响。 可从以下位置访问该窗口:AEM >工具>操作>诊断>下载状态ZIP。
从该窗口中,您可以选择要导出的内容(日志文件和/或线程转储)以及相对于当前日期包含在下载中的日志天数。
下载线程转储 :headding-anchor:download-thread-dump
此操作会触发下载zip文件,其中包含有关系统中存在的线程的信息。 提供了有关每个线程的信息,例如其状态、类加载器和栈栈跟踪。
下载栈转储 :headding-anchor:download-heap-dump
您可以下载栈的快照以便稍后进行分析。 此操作会触发大型(数百MB)文件的下载。
自动维护任务 :headding-anchor:automated-maintenance-tasks
在“自动维护任务”页面中,您可以查看和跟踪计划定期执行的建议维护任务。 这些任务与运行状况检查系统集成。 任务也可以从界面手动执行。
要转到操作功能板中的“维护”页面,请从AEM欢迎屏幕转到 工具 — 操作 — 功能板 — 维护,或直接关注此链接:
https://serveraddress:port/libs/granite/operations/content/maintenance.html
“操作功能板”中提供了以下任务:
- 修订清理 任务,位于 每日维护窗口 菜单下。
- 位于 每日维护窗口 菜单下的 Lucene二进制文件清理 任务。
- 位于 每周维护时段 菜单下的 工作流清除 任务。
- 数据存储垃圾收集 任务,位于 每周维护时段 菜单下。
- 位于 每周维护窗口 菜单下的 审核日志维护 任务。
- 位于 每周维护时段 菜单下的 版本清除维护 任务。
- 项目清除 维护任务,位于 每周维护时段 菜单下;使用 添加 选项。
- 位于 每周维护时段 菜单下的 清除临时任务 维护任务;使用 添加 选项。
日常维护时段默认时间是凌晨2:00至凌晨5:00。配置为在每周维护窗口中运行的任务在星期六凌晨1:00到凌晨2:00之间运行。
您还可以通过按任意两个维护卡上的齿轮图标来配置时间安排:
修订清理 :headding-anchor:revision-clean-up
有关详细信息,请参阅修订清理。
Lucene 二进制文件清理 :headding-anchor:lucene-binaries-cleanup
通过使用Lucene二进制文件清理任务,您可以清除Lucene二进制文件并减少正在运行的数据存储大小要求。 每天回收Lucene的二进制流失,而不是早先依赖成功的数据存储垃圾收集运行。
尽管开发维护任务是为了减少Lucene相关的修订垃圾,但运行任务时普遍存在效率提高:
- 每周运行一次的数据存储垃圾收集任务可以更快地完成。
- 它也可能略微改善整体AEM性能。
您可以从 AEM > Tools > Operations > Maintenance > Daily Maintenance Window > Lucene Binaries Cleanup 访问Lucene二进制文件清理任务。
数据存储垃圾回收 :headding-anchor:data-store-garbage-collection
有关数据存储垃圾收集的详细信息,请参阅专用的数据存储垃圾收集文档页面。
工作流清除 :headding-anchor:workflow-purge
还可以从维护功能板中清除工作流。 要运行工作流清除任务,请执行以下操作:
- 单击 每周维护时段 页面。
- 在以下页面中,单击 工作流清除 信息卡中的 播放。
审核日志维护 :headding-anchor:audit-log-maintenance
有关审核日志维护,请参阅单独的文档页面。
版本清除 :headding-anchor:version-purge
您可以计划版本清除维护任务,以自动删除旧版本。 此操作将手动使用版本清除工具的需要降至最低。 您可以通过访问 Tools > Operations > Maintenance > Weekly Maintenance Window 并按照以下步骤来计划和配置版本清除任务:
-
单击 添加。
-
从下拉菜单中选择 版本清除。
-
要配置版本清除任务,请单击新创建的版本清除维护信息卡上的 齿轮 图标。
使用AEM 6.4,您可以按如下方式停止“版本清除”维护任务:
- 自动 — 如果计划的维护窗口在任务完成之前关闭,则任务会自动停止。 当下一个维护窗口打开时,它将恢复。
- 手动 — 要手动停止任务,请在“版本清除”维护卡上单击 停止 图标。 在下次执行时,任务将安全地恢复。
项目清除 :headding-anchor:project-purge
在 Adobe项目清除配置 (com.adobe.cq.projects.purge.Scheduler)下配置OSGI属性。
临时任务清除 :headding-anchor:purge-of-ad-hoc-tasks
在 临时任务清除 (com.adobe.granite.taskmanagement.impl.purge.TaskPurgeMaintenanceTask
)下配置OSGI属性。
自定义维护任务 :headding-anchor: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)
。 此外,它必须声明若干服务注册属性以作为维护任务进行检测,如下所示:
除了上述服务属性之外,JobConsumer
接口的process()
方法必须通过添加应为维护任务执行的代码来实现。 提供的JobExecutionContext
可用于输出状态信息,检查作业是否被用户停止并创建结果(成功或失败)。
对于不应在所有安装上运行维护任务的情况(例如,仅在发布实例上运行),您可以通过添加@Component(policy=ConfigurationPolicy.REQUIRE)
使服务需要配置才能处于活动状态。 然后,您可以将相应的配置标记为依赖于存储库中的运行模式。 有关详细信息,请参阅配置OSGi。
以下是自定义维护任务的示例,该任务从可配置的临时目录中删除过去24小时内修改过的文件:
src/main/java/com/adobe/granite/samples/maintenance/impl/DeleteTempFilesTask.java
experiencemanager-java-maintenancetask-sample- src/main/java/com/adobe/granite/samples/maintenance/impl/DeleteTempFilesTask.java
部署服务后,该服务将显示在操作功能板UI中。 您可以将其添加到某个可用的维护计划中:
此操作在/apps/granite/operations/config/maintenance/schedule
/taskname
处添加相应的资源。 如果任务依赖于运行模式,则必须在该节点上使用对此维护任务必须处于活动状态的运行模式值设置属性granite.operations.conditions.runmode。
系统概览 :headding-anchor:system-overview
系统概述仪表板 显示AEM实例的配置、硬件和运行状况的高级概述。 系统运行状况是透明的,所有信息都汇总在单个仪表板中。
如何访问 :headding-anchor:how-to-access
要访问系统概述仪表板,请导航到 工具>操作>系统概述。
系统概述仪表板说明 :headding-anchor:system-overview-dashboard-explained
下表描述了“系统概述仪表板”中显示的所有信息。 当没有要显示的相关信息(例如,备份未进行,没有关键的运行状况检查)时,相应的部分将显示“没有条目”消息。
您还可以通过单击仪表板右上角的 下载 按钮,下载摘要仪表板信息的JSON
文件。 JSON
终结点为/libs/granite/operations/content/systemoverview/export.json
,可以在curl
脚本中使用它进行外部监视。