{"id":568,"date":"2017-03-20T21:54:00","date_gmt":"2017-03-20T21:54:00","guid":{"rendered":"https:\/\/site.axamit.com\/?p=568"},"modified":"2024-01-09T06:24:01","modified_gmt":"2024-01-09T06:24:01","slug":"health-check","status":"publish","type":"post","link":"https:\/\/axamit.com\/en\/blog\/adobe-experience-manager\/health-check\/","title":{"rendered":"Apache Sling health checks tools"},"content":{"rendered":"<div class=\"custom-toc\"><ul><li class=\"h2-toc\"><a href=\"#problems-and-goals\">Problems and goals<\/a><\/li><li class=\"h2-toc\"><a href=\"#health-checks-at-a-glance\">Health Checks at a glance<\/a><\/li><li class=\"h2-toc\"><a href=\"#health-checks-execution\">Health Checks Execution<\/a><\/li><li class=\"h2-toc\"><a href=\"#custom-health-checks\">Custom Health Checks<\/a><\/li><li class=\"h2-toc\"><a href=\"#health-checks-user-interface\">Health Checks User Interface<\/a><\/li><\/ul><\/div>\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">If we want to use an automated system for live checking and monitoring the current status, performance, and configuration of the AEM application environment, we can opt for OOTB Apache Sling Health Checks Tools.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Below I will explain the basic idea of these tools and demonstrate some simple configuration and customization examples. You will see how UI building is easy and simple to understand.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"problems-and-goals\">Problems and goals<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before resolving any AEM application issue, we should check the following points:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Required bundles are up and running;<\/li>\n\n\n\n<li>Related web services endpoint are available;<\/li>\n\n\n\n<li>Required resources and appropriate content structure exist.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">All the steps above can be done manually from time to time, but we need to run these validations automatically. This approach will help us monitor the AEM application at a glance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If we need to build such automation for live checking and monitoring environments, we can use OOTB Apache Sling Health Checks Tools (or HC).<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"health-checks-at-a-glance\">Health Checks at a glance<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HC instance is an OSGi service that implements&nbsp;<strong>org.apache.sling.hc.api.HealthCheck<\/strong>&nbsp;interface and returns&nbsp;<strong>Result<\/strong>&nbsp;according to validate conditions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public interface HealthCheck {\npublic Result execute();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Result<\/strong>&nbsp;is a simple, immutable class that provides a Status (<strong>OK, WARN, CRITICAL,<\/strong>&nbsp;etc.) and one or more log-like messages for additional info.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note: if you set any Result log message, it will be identified within AEM as WARN. As a result, we should define it as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>new Result(Result.Status.OK, \"Some Message\")<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"health-checks-execution\">Health Checks Execution<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AEM is a modular system so we have a couple of configuration places for every piece of the system. The HC Executor service is one of these services, which can be configured from&nbsp;<strong>&#8220;\/system\/console\/configMgr\/org.apache.sling.hc.core.impl.executor.HealthCheckExecutorImpl&#8221;:<\/strong><\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a33509f3c054&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a33509f3c054\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"355\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062257\/Health-Checks-Execution.webp\" alt=\"\" class=\"wp-image-6609\" srcset=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062257\/Health-Checks-Execution.webp 732w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062257\/Health-Checks-Execution-300x145.webp 300w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong>&nbsp;HC Executor executes every HC within the&nbsp;<strong>Sling Thread pool<\/strong>, guaranteeing that we have only one running instance at a time.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"custom-health-checks\">Custom Health Checks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For individual HC implementation, we should implement interface&nbsp;<strong>org.apache.sling.hc.api.HealthCheck<\/strong>&nbsp;first and specify options for service as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Component(metatype = true)\n@Properties({\n        @Property(name = HealthCheck.NAME,value = \"HCName\"),\n        @Property(name = HealthCheck.TAGS,value = {\"meetup\"}),\n        @Property(name = HealthCheck.MBEAN_NAME,value = \"HCName\")\n})\n@Service(value = {HealthCheck.class})\npublic class IncorrectLocalhostHC implements HealthCheck {<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If HC needs to be executed by the scheduler (once a day, for example), we can specify schedule intervals within properties:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Property(name = HealthCheck.ASYNC_CRON_EXPRESSION, value = \"0 0 12 1\/1 * ? *\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The Sling HC core 1.2.6 version will have a new property,&nbsp;<strong>\u201chc.resultCacheTtlInMs\u201d<\/strong>. It overrides the global default TTL as configured in the HC executor for HC responses.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HC can also be configured with annotation&nbsp;<strong>@SlingHealthCheck<\/strong>, but it doesn\u2019t work for OOTB in AEM 6.1:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@SlingHealthCheck(\n    name=\"Health Check Name For Felix Console\", \n    mbeanName=\"JMX Name\",\n    description=\"Health Check Description\",\n    tags={\"meetup\"}\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">These simple steps allow you to implement HC, executed from Felix console over the path \u201c\/system\/console\/healthcheck\u201d:<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a33509f3cd48&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a33509f3cd48\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"676\" height=\"272\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062308\/Health-Checks-Execution-2.webp\" alt=\"\" class=\"wp-image-6610\" srcset=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062308\/Health-Checks-Execution-2.webp 676w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062308\/Health-Checks-Execution-2-300x121.webp 300w\" sizes=\"auto, (max-width: 676px) 100vw, 676px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"health-checks-user-interface\">Health Checks User Interface<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If we open&nbsp;<strong>Tools -&gt; Operations -&gt; Dashboard -&gt; Console -&gt; Health Reports<\/strong>&nbsp;(or from the path&nbsp;<strong>\u201c\/libs\/granite\/operations\/content\/healthreports.html\u201d<\/strong>), we will see cards with HC.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a33509f3da64&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a33509f3da64\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1917\" height=\"748\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062319\/Health-Checks-User-Interface.webp\" alt=\"\" class=\"wp-image-6611\" srcset=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062319\/Health-Checks-User-Interface.webp 1917w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062319\/Health-Checks-User-Interface-300x117.webp 300w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062319\/Health-Checks-User-Interface-1024x400.webp 1024w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062319\/Health-Checks-User-Interface-768x300.webp 768w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062319\/Health-Checks-User-Interface-1536x599.webp 1536w\" sizes=\"auto, (max-width: 1917px) 100vw, 1917px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To add a custom HC as a card on this dashboard, we need to create a node under the path&nbsp;<strong>\/apps\/granite\/operations\/config\/hc<\/strong>&nbsp;with the following properties:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>resource<\/strong>{String} &#8211; \/system\/sling\/monitoring\/mbeans\/org\/apache\/sling\/healthcheck\/HealthCheck\/[&nbsp;<strong>hc.name&nbsp;<\/strong>]<\/li>\n\n\n\n<li><strong>sling:resourceType<\/strong>{String} &#8211; granite\/operations\/components\/mbean<\/li>\n<\/ul>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a33509f3e4c2&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a33509f3e4c2\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1104\" height=\"186\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062328\/Health-Checks-User-Interface-2.webp\" alt=\"\" class=\"wp-image-6612\" srcset=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062328\/Health-Checks-User-Interface-2.webp 1104w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062328\/Health-Checks-User-Interface-2-300x51.webp 300w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062328\/Health-Checks-User-Interface-2-1024x173.webp 1024w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062328\/Health-Checks-User-Interface-2-768x129.webp 768w\" sizes=\"auto, (max-width: 1104px) 100vw, 1104px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The Operations dashboard also allows merging HC cards into the groups (as it\u2019s already done for \u201cSystem Checks\u201d and \u201cSecurity Checks\u201d). All composite HC configurations are stored within&nbsp;<strong>org.apache.sling.hc.core.impl.CompositeHealthCheck<\/strong>&nbsp;factory. To add our custom HC here, we should implement a new configuration to this factory from Felix console or from a configuration file. In the case of Felix console, we need to specify \u201cName\u201d for HC group and \u201cFilter Tags\u201d so all HC with these tags will be available under this HC card composite on the Operations dashboard.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a33509f3eb13&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a33509f3eb13\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"925\" height=\"444\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062353\/Health-Checks-User-Interface-3.webp\" alt=\"\" class=\"wp-image-6614\" srcset=\"https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062353\/Health-Checks-User-Interface-3.webp 925w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062353\/Health-Checks-User-Interface-3-300x144.webp 300w, https:\/\/d11cw4yu2zh4tp.cloudfront.net\/wp-content\/uploads\/2017\/03\/09062353\/Health-Checks-User-Interface-3-768x369.webp 768w\" sizes=\"auto, (max-width: 925px) 100vw, 925px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">More detailed documentation:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/sling.apache.org\/documentation\/bundles\/sling-health-check-tool.html\" target=\"_blank\" rel=\"noopener\">https:\/\/sling.apache.org\/documentation\/bundles\/sling-health-check-tool.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.adobe.com\/docs\/en\/aem\/6-2\/administer\/operations\/operations-dashboard.html\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.adobe.com\/docs\/en\/aem\/6-2\/administer\/operations\/operations-dashboard.html<\/a><\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Problems and goals Health Checks at a glance Health Checks Execution Custom Health Checks Health Checks User Interface [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":5015,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[22],"tags":[],"class_list":["post-568","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adobe-experience-manager"],"acf":{"cta":"Give Us a Call","phone":"+1 (438) 383-6878","meta-description":"Learn how you can use OOTB Apache Sling Health Checks Tools for live checking and monitoring your AEM application environment and view examples of its configuration and customization."},"_links":{"self":[{"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/posts\/568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/comments?post=568"}],"version-history":[{"count":0,"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/posts\/568\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/media\/5015"}],"wp:attachment":[{"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/media?parent=568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/categories?post=568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/axamit.com\/en\/wp-json\/wp\/v2\/tags?post=568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}