Monitoring the health of your system
About the Jahia Healthcheck probe
The Healthcheck module provides insights about a platform's health and can help trigger alerts or pay attention to key components that might need close attention. Jahia's Healthcheck module provides a JSON output and it can be triggered at will with minimal impact on the platform load.
The healthcheck module is a core component that can be used in conjunction with extension modules in order to provide more information to the monitoring systems.
The healthcheck module returns a global status for the server, as well a status for all tested components. The status can be:
- GREEN (Nominal status)
- YELLOW (Non critical problem)
- RED (Critical issue)
Usage
The healthcheck is available through the servlet /healthcheck to all users who are granted the Jahia server role monitoring It returns a JSON object with the following structure:
Extensions
While the core healthcheck provide basic capabilities such as database connectivity and server load checks, additional modules can extend its capabilities. When deploying a proper healthcheck module extension, the healthcheck servlet will automatically be added with the new information.
A typical Healthcheck extension is the healcheck-cluster module.
Custom extensions
Developping a custom extension is straightforward and can be done in two different ways:
Forking the healcheck-extensionexample module (https://github.com/Jahia/healcheck-extensionexample)
Manually declarating an OSGi service and implementing a Java interface (described bellow)
Steps to creating a Healthcheck extension:
Updating the pom.xml file
Add the following elements to the pom file:
<dependencies>
<dependency>
<groupId>org.jahia.modules</groupId>
<artifactId>healthcheck</artifactId>
<version>[1.0,2.0]</version>
<scope>provided</scope>
</dependency>
</dependencies>
<properties>
<jahia-depends>default</jahia-depends>
<jahia-module-type>system</jahia-module-type>
<import-package>org.jahia.modules.healthcheck.interfaces</import-package>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Jahia-Depends>default, healthcheck</Jahia-Depends>
<_dsannotations>*</_dsannotations>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
Creating a new Java class
In the extensionexample module, we decided to create a org.jahia.modules.healthcheckexample.probes package and a ProbeExample.java file.
Creating a Probe OSGi service
In the Java Class previously created, implement the Probe interface (org.jahia.modules.healthcheck.interfaces.Probe) and declare a new Probe service:
import org.osgi.service.component.annotations.Component;
import org.jahia.modules.healthcheck.interfaces.Probe;
@Component(service = Probe.class, immediate = true)
public class ProbeExampleService implements Probe {
...
}
Then, implement all 3 methods:
@Override
public String getStatus() {
...
return "GREEN";
}
@Override
public JSONObject getData() {
// Contains potential error messages. Return null if no message is necessary
return jsonObject;
}
@Override
public String getName() {
return "ProbeExample";
}