AEM 6中的“操作功能板”可帮助系统操作员一目了然地监控AEM系统运行状况。 它还提供有关AEM相关方面的自动生成的诊断信息,并允许配置和运行自包含的维护自动化,以显着减少项目操作和支持案例。 操作功能板可通过自定义运行状况检查和维护任务进行扩展。 此外,操作功能板数据可通过JMX从外部监控工具访问。
操作功能板:
可通过转到 工具 - 操作 从AEM欢迎屏幕中。
要能够访问“操作功能板”,登录用户必须是“操作员”用户组的一部分。 有关更多信息,请参阅 用户、组和访问权限管理.
运行状况报告系统通过Sling运行状况检查提供有关AEM实例运行状况的信息。 这可以通过OSGI、JMX、HTTP请求(通过JSON)或通过触屏UI来完成。 它提供某些可配置计数器的测量值和阈值,在某些情况下,将提供有关如何解决该问题的信息。
它具有以下几项功能:
的 运行状况报告 是指在特定产品领域表明健康或健康不良的卡系统。 这些卡片是Sling运行状况检查的可视化图表,用于聚合来自JMX和其他源的数据,并再次将处理的信息显示为MBean。 这些MBean还可以在 JMX Web控制台,在 org.apache.sling.healthcheck 域。
可以通过 工具 - 操作 - 运行状况报告 菜单,或直接通过以下URL:
https://<serveraddress>:port/libs/granite/operations/content/healthreports/healthreportlist.html
卡系统会公开三种可能的状态: 确定, 警告 和 关键. 状态是规则和阈值的结果,可通过将鼠标悬停在卡上,然后单击操作栏中的齿轮图标来配置它们:
AEM 6中有两种类型的运行状况检查:
安 单个运行状况检查 是与状态卡对应的单个运行状况检查。 单个运行状况检查可以配置规则或阈值,并且它们可以提供一个或多个提示和链接以解决已识别的运行状况问题。 让我们以“日志错误”检查为例:如果实例日志中存在ERROR条目,则将在运行状况检查的详细信息页面上找到它们。 在页面顶部,您将在诊断工具部分看到指向“日志消息”分析器的链接,该链接将使您能够更详细地分析这些错误并重新配置日志记录器。
A 复合运行状况检查 是用于聚合多个单独检查中的信息的检查。
复合运行状况检查配置了 过滤标记. 实质上,具有相同过滤器标记的所有单个检查都将分组为复合运行状况检查。 仅当聚合的所有单个检查也具有“OK”状态时,复合运行状况检查才具有“OK”状态。
在“操作功能板”中,您可以显示单个和复合运行状况检查的结果。
创建单个运行状况检查涉及两个步骤:实施Sling运行状况检查并在功能板的配置节点中为运行状况检查添加一个条目。
要创建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的名称。
创建运行状况检查后,需要创建一个新的配置节点,以使其可在操作功能板界面中访问。 对于此步骤,需要知道运行状况检查的JMX Mbean名称( MBEAN_NAME
属性)。 要为运行状况检查创建配置,请打开CRXDE并添加新节点(类型为 nt:非结构化): /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”,则在路径末尾添加“test” /system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck
因此,最终的路径是:
/system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck/test
确保 /apps/settings/granite/operations/hc
路径的以下属性设置为true:
sling:configCollectionInherit
sling:configPropertyInherit
这将告知配置管理器将新配置与现有配置合并 /libs
.
复合运行状况检查的作用是聚合多个共享一组通用功能的单独运行状况检查。 例如,安全复合运行状况检查将执行安全相关验证的所有单个运行状况检查分组在一起。 创建复合检查的第一步是添加新的OSGi配置。 要使其显示在操作功能板中,需要添加新的配置节点,这与我们进行简单检查的方式相同。
转到OSGI控制台中的Web配置管理器。 您可以通过访问 https://serveraddress:port/system/console/configMgr
搜索名为的条目 Apache Sling复合运行状况检查. 在找到该配置后,请注意已有两种配置可用:一个用于系统检查,另一个用于安全检查。
通过按配置右侧的“+”按钮创建新配置。 将显示一个新窗口,如下所示:
创建配置并保存。 将使用新配置创建Mbean。
每个配置属性的用途如下:
hc.tags
)。将为Apache Sling复合运行状况检查的每个新配置创建新的JMX Mbean。**
最后,需要在操作仪表板配置节点中添加刚刚创建的复合运行状况检查的条目。 此过程与单独运行状况检查的过程相同:类型的节点 nt:非结构化 需要在下创建 /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
如果您创建的各个运行状况检查在逻辑上属于复合检查下(默认情况下,该复合检查已出现在功能板中),则它们将自动捕获并分组到相应的复合检查下。 因此,无需为这些检查创建新的配置节点。
例如,如果您创建单个安全运行状况检查,则您只需将“安全“标记后,该标记将自动显示在“操作功能板”的“安全检查”复合检查下。
zHealthcheck名称 | 描述 |
查询性能 | 此运行状况检查已得到简化 在AEM 6.4中,并且现在会检查最近重构的 此运行状况检查的MBean为 org.apache.sling.healthcheck:name=querysStatus,type=HealthCheck. |
观察队列长度 | 观察队列长度迭代所有事件侦听器和后台观察器,比较它们
每个队列的最大长度来自单独的配置(Oak和AEM),不能通过此运行状况检查进行配置。 此运行状况检查的MBean为 org.apache.sling.healthcheck:name=ObservationQueueLengthHealthCheck,type=HealthCheck. |
查询遍历限制 | 查询遍历限制检查
此运行状况检查的Mbean是 org.apache.sling.healthcheck:name=queryTraversLimitsBundle,type=HealthCheck. |
同步的时钟 | 此检查仅与 文档nodestore群集. 它会返回以下状态:
此运行状况检查的Mbean是 org.apache.sling.healthcheck:name=slingDiscoveryOakSynchronizedClocks,type=HealthCheck. |
异步索引 | 异步索引检查:
“严重”和“警告”状态阈值均可配置。 此运行状况检查的Mbean是 org.apache.sling.healthcheck:name=asyncIndexHealthCheck,type=HealthCheck. 注意: 此运行状况检查在AEM 6.4中可用,并已支持到AEM 6.3.0.1。 |
大型 Lucene 索引 | 此检查使用
阈值是可配置的,运行状况检查的MBean是 org.apache.sling.healthcheck:name=largeIndexHealthCheck,type=HealthCheck。 注意: 此检查在AEM 6.4中可用,并且已备份到AEM 6.3.2.0。 |
系统维护 | 系统维护是一个复合检查,如果所有维护任务都按配置运行,则返回“确定”。 请记住以下事项:
此运行状况检查的MBean为 org.apache.sling.healthcheck:name=systemchecks,type=HealthCheck. |
复制队列 | 此检查会遍历复制代理并查看其队列。 对于队列顶部的项目,检查代理重试复制的次数。 如果代理重试复制的次数超过 此运行状况检查的MBean为 org.apache.sling.healthcheck:name=replicationQueue,type=HealthCheck. |
Sling 作业 |
Sling作业会检查在JobManager中排队的作业数,并将其与
maxNumQueueJobs 阈值,和:
只能配置已排队作业参数的最大数量,其默认值为1000。 此运行状况检查的MBean为 org.apache.sling.healthcheck:name=slingJobs,type=HealthCheck. |
请求性能 | 此检查将检查
此运行状况检查的MBean为 org.apache.sling.healthcheck:name=requestsStatus,type=HealthCheck. |
日志错误 | 如果日志中存在错误,此检查将返回“警告”状态。 此运行状况检查的MBean为 org.apache.sling.healthcheck:name=logErrorHealthCheck,type=HealthCheck. |
磁盘空间 | 磁盘空间检查会检查
两个阈值都可配置。 此检查仅适用于具有区段存储的实例。 此运行状况检查的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. |
代码缓存检查 | 这是运行状况检查,用于验证可触发Java 7中存在的CodeCache错误的多个JVM条件:
的 此运行状况检查的MBean为 org.apache.sling.healthcheck:name=codeCacheHealthCheck,type=HealthCheck. |
资源搜索路径错误 | 检查路径中是否有任何资源
此运行状况检查的MBean为 org.apache.sling.healthcheck:name=resourceSearchPathErrorHealthCheck,type=HealthCheck. |
运行状况检查功能板可以通过Granite JMX Mbeans与Nagios集成。 以下示例说明如何添加检查,以显示运行AEM的服务器上已用内存。
在监控服务器上设置并安装Nagios。
接下来,安装Nagios远程插件执行器(NRPE)。
有关如何在系统上安装Nagios和NRPE的详细信息,请参阅 Nagios文档.
为AEM服务器添加主机定义。 这可以通过Nagios XI Web界面使用配置管理器来完成:
以下是主机配置文件示例(如果您使用的是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
}
在AEM服务器上安装Nagios和NRPE。
安装 check_http_json 插件。
在两台服务器上定义通用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$'
}
为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>
}
检查Nagios功能板以了解新创建的服务:
“操作功能板”还提供对诊断工具的访问,这些工具有助于查找和排除来自“运行状况检查功能板”的警告的根本原因,并为系统操作员提供重要的调试信息。
其最重要的功能包括:
您可以通过转到 工具 — 操作 — 诊断 从AEM欢迎屏幕中。 您还可以通过直接访问以下URL来访问屏幕: https://serveraddress:port/libs/granite/operations/content/diagnosis.html
默认情况下,“用户界面”将显示所有“错误”消息。 如果要显示更多日志消息,您需要配置具有相应日志级别的日志记录器。
日志消息使用内存日志附加器中的,因此与日志文件无关。 另一个结果是,更改此UI中的日志级别不会更改传统日志文件中记录的信息。 在此UI中添加和删除日志记录器将仅影响内存日志记录器中的。 另外,请注意,更改日志记录器配置将反映在内存日志记录器的将来 — 已记录且不再相关的条目不会删除,但类似条目将来不会记录。
您可以通过在UI的左上角齿轮按钮中提供日志记录器配置来配置日志记录内容。 在此,您可以添加、删除或更新日志记录器配置。 记录器配置由 日志级别 (警告/信息/调试)和 过滤器名称. 的 过滤器名称 具有过滤日志消息源的角色。 或者,如果日志记录器应捕获指定级别的所有日志消息,则筛选器名称应为“根" 设置日志记录器的级别将触发所有消息的捕获,其级别等于或大于指定的级别。
示例:
如果您计划捕获 错误 消息 — 无需配置。 默认情况下会捕获所有错误消息。
如果您计划捕获 错误, 警告 和 信息 messages — 日志记录器名称应设置为:"根“”,日志记录器级别为: 信息.
如果您计划捕获来自特定包(例如com.adobe.granite)的所有消息,则应将日志记录器名称设置为:"com.adobe.granite",并且日志记录器级别为: 调试 (这将捕获所有 错误, 警告, 信息 和 调试 消息),如下图所示。
您无法设置记录器名称来通过指定的过滤器仅捕获错误消息。 默认情况下,会捕获所有错误消息。
日志消息用户界面未反映实际错误日志。 除非您在UI中配置其他类型的日志消息,否则您将只看到错误消息。 有关如何显示特定日志消息的信息,请参阅上面的说明。
诊断页面中的设置不会影响记录到日志文件的内容,反之亦然。 因此,虽然错误日志可能会捕获信息消息,但您可能在日志消息UI中看不到它们。 此外,通过UI,可以从某些包中捕获DEBUG消息,而不会影响错误日志。 有关如何配置日志文件的详细信息,请参阅 记录.
使用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>
“请求性能”页面允许分析处理最慢的页面请求。 此页面上将仅注册内容请求。 更具体地说,将捕获以下请求:
/content
/etc/design
".html"
扩展此时将显示页面:
默认情况下,会捕获最慢的20个页面请求,但可以在配置管理器中修改此限制。
“查询性能”页允许分析系统执行的最慢查询。 此信息由JMX Mbean中的存储库提供。 在Jackrabbit中, com.adobe.granite.QueryStat
JMX Mbean会提供此信息,而在Oak存储库中,则会提供此信息 org.apache.jackrabbit.oak.QueryStats.
此时将显示页面:
对于任何给定的查询,Oak都会尝试根据存储库中在 oak:index 节点。 根据查询,Oak可能会选择不同的索引。 了解Oak如何执行查询是优化查询的第一步。
Explain Query是一个工具,用于说明Oak如何执行查询。 可通过转到 工具 — 操作 — 诊断 从AEM欢迎屏幕中,单击 查询性能 然后切换到 解释查询 选项卡。
功能
进入Explain Query UI后,使用它所需执行的所有操作就是输入查询并按 解释 按钮:
“查询说明”部分的第一个条目是实际说明。 说明将显示用于执行查询的索引类型。
第二项是执行计划。
在 包含执行时间 框中,此外,还会显示在中执行查询的时间。 的 包含节点计数 选项将报告节点计数。 这些属性允许提供更多信息,可用于优化应用程序或部署的索引。
索引管理器的目的是促进索引管理,如维护索引或查看其状态。
可以从欢迎屏幕中转到工具 — 操作 — 诊断,然后单击 索引管理器 按钮。
也可以通过以下URL直接访问该域: https://serveraddress:port/libs/granite/operations/content/diagnosistools/indexManager.html
UI可用于筛选表格中的索引,方法是在屏幕左上角的搜索框中键入筛选条件。
这将触发下载包含系统状态和配置有用信息的zip文件。 存档包含实例配置、包列表、OSGi、Sling量度和统计信息,这可能会生成大文件。 您可以使用 下载状态ZIP窗口。 窗口可从以下位置访问:AEM >工具>操作>诊断>下载状态ZIP。
在此窗口中,您可以选择要导出的内容(日志文件和线程转储)以及下载中包含的相对于当前日期的日志天数。
这将触发下载包含系统中存在线程信息的zip文件。 提供了每个线程的信息,如其状态、类加载器和堆栈跟踪。
您还能够下载堆的快照,以便在以后分析它。 请注意,这将触发大文件的下载(以百兆字节为单位)。
在“自动维护任务”页面中,您可以查看和跟踪计划定期执行的推荐维护任务。 任务与运行状况检查系统集成。 任务也可以从界面手动执行。
要转到“操作功能板”中的“维护”页面,您需要转到 工具 — 操作 — 功能板 — 维护 从AEM欢迎屏幕中,或直接访问以下链接:
https://serveraddress:port/libs/granite/operations/content/maintenance.html
操作功能板中提供以下任务:
每日维护时段的默认时间为凌晨2点到5点。 在每周维护时段内配置的任务将在星期六凌晨1点到2点之间执行。
您还可以通过按下两个维护卡中任意一个上的齿轮图标来配置计时:
自AEM 6.1起,还可以将现有维护窗口配置为每月运行。
有关执行修订清理的详细信息,请 请参阅此专述文章.
通过使用Lucene二进制文件清理任务,可以清除lucene二进制文件并减少正在运行的数据存储大小要求。 这是因为Lucene的二进制流失率将每天重新声明,而不是先前对成功的依赖 数据存储垃圾收集 运行。
虽然开发维护任务是为了减少与Lucene相关的修订垃圾,但运行该任务时总体效率上有所提高:
您可以从以下位置访问Lucene二进制文件清理任务: AEM >工具>操作>维护>每日维护窗口> Lucene二进制文件清理.
有关数据存储垃圾收集的详细信息,请参阅 文档页面.
也可以从维护功能板中清除工作流。 要运行“工作流清除”任务,您需要:
有关工作流维护的更多详细信息,请参阅 本页.
有关审核日志维护,请参阅 单独的文档页面。
您可以计划“版本清除”维护任务以自动删除旧版本。 因此,这可以最大限度地减少手动使用 版本清除工具. 您可以通过访问 “工具”>“操作”>“维护”>“每周维护”窗口 并按以下步骤操作:
单击 添加 按钮。
选择 版本清除 下拉菜单中。
要配置“版本清除”任务,请单击 齿轮 图标。
使用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 | 必填 |
除上述服务物业外, process()
方法 JobConsumer
需要通过添加应为维护任务执行的代码来实现接口。 提供的 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属性,其中包含运行模式值,该运行模式值需要为此维护任务处于活动状态。
的 系统概述功能板 显示AEM实例的配置、硬件和运行状况的高级概述。 这意味着系统运行状况状态是透明的,所有信息都会汇总到一个仪表板中。
您还可以 观看此视频 有关“系统概述”功能板的介绍。
要访问“系统概述”功能板,请导航至 工具>操作>系统概述.
下表描述了“系统概述”功能板中显示的所有信息。 请记住,当没有可显示的相关信息(例如,备份未进行,没有关键的运行状况检查)时,相应部分将显示“无条目”消息。
您还可以下载 JSON
通过单击 下载 按钮。 JSON
终结点为 /libs/granite/operations/content/systemoverview/export.json
它可用于 curl
用于外部监控的脚本。
区域 | 显示哪些信息 | 何时至关重要 | 链接到 |
运行状况检查 |
|
直观地指示:
|
|
维护任务 |
|
直观地指示:
|
|
系统 |
|
不适用 | 不适用 |
实例 |
|
不适用 | 不适用 |
存储库 |
|
不适用 | 不适用 |
分发代理 |
|
直观地指示:
|
分发页面 |
复制代理 |
|
直观地指示:
|
“复制”页 |
工作流 |
对于上面显示的每种状态,将执行查询,其时间限制为400毫秒。 在400毫秒处,将显示截至该时间点获取的条目数。 |
未解释:
|
“工作流失败”页 |
Sling 作业 | Sling作业计数 — 处于给定状态的作业数(如果有):
|
未解释:
|
不适用 |
预计节点计数 | 估计数:
节点总数从nodeCounterMBean获取,其余的统计信息则从IndexInfoService获取。 |
不适用 | 不适用 |
备份 | 如果出现这种情况,则显示“正在进行联机备份”。 | 不适用 | 不适用 |
索引 | 显示:
如果线程转储中存在索引或查询线程。 |
不适用 | 不适用 |