blob: ee518a90cedcc2951f831fce98bc266276a65c18 [file] [log] [blame] [view]
# Reference Documentation
This project provides a framework to configure and create so called _system ready checks_ and report the _ready_ of an application on top of an OSGi system.
## Requirements:
* Configuration Admin Service
* Service Component Runtime
See below for a hands on example in Apache Karaf.
## FrameworkStartCheck
Checks that the system reaches a certain start level. By default this is the default bundle start level + 1.
The check reports yellow while starting, green on startup finished and red if startup did not finish after given timeout.
Configuration pid: `org.apache.felix.systemready.impl.FrameworkStartCheck`
Name | Default | Description
-----------------------------|---------|----------------
target.start.level | | Start level for the system to reach to be considered started
timeout | 1000 | After this number of seconds the startup is considered to have failed
target_start_level_prop_name | | Alternatively the start level can be read from a system property with this name
## Services Check
Ready check that is shipped in the core bundle and checks for the presence of listed services by interface name or filter.
The check reports GREEN when all services are currently present and YELLOW if at least one service is missing.
In the details the check reports all missing services. If a service is backed by a DS component then automatically a root cause analysis is executed. If such a service is missing then unresolved references are shown in a tree with detailed information about each component. At the leafs of the tree the root causes can be found.
Mandatory configuration with pid: `org.apache.felix.systemready.impl.ServicesCheck`
Name | Default | Description
-----------------------------|---------|----------------
services.list | | `List<String>` of service interfaces or filters to check
## Component Check
Ready check that is shipped in the core bundle and checks for the presence of listed DS components by name.
The check reports GREEN when all components are satisfied. It also provides root cause analysis.
The main difference to th Service Check is that the checked component does not need to offer an OSGi service.
Mandatory configuration with pid: `org.apache.felix.systemready.impl.ComponentsCheck`
Name | Default | Description
-----------------------------|---------|----------------
components.list | | `List<String>` of component names to check
## Providing additional custom checks
Implement the org.apache.felix.systemready.core.SystemReadyCheck interface and register
your instance as a service. The SystemReadyMonitor will pick up your service automatically.
Your service should avoid references to other services that come up late, as a late appearing check could
make the aggregated state oscilate during startup. One option to avoid this is to refer to a late service using an optional dependency and return a YELLOW state until it is up.
## System Ready Monitor service
The service org.apache.felix.systemready.core.SystemReadyMonitor tracks all SystemReadyCheck services and periodically checks them. It creates an aggregated status and detailed report of the status of the system.
This report can be queried by calling the service. Additionally the system ready servlet can provide this status over http.
For an example see the [test case](../src/test/java/org/apache/felix/systemready/core/osgi/SystemReadyMonitorTest.java).
## Ready and alive servlets
The Ready servlet provides the aggregated state of the system over http in json format.
It is registered on the path `/systemready`.
The alive servlet provides the aggregated alive state of the system and is registered by default on `/systemalive`.
HTTP return codes
code | in case of
-----|-----------
200 | system status is GREEN
503 | system status is YELLOW or RED
404 | servlet is not yet present
This is an example of a ready system with just the services check.
```
{
"systemStatus": "GREEN",
"checks": [
{ "check": "Services Check", "status": "GREEN", "details": "" },
]
}
```
Optional configuration pid for ready servlet `org.apache.felix.systemready.impl.servlet.SystemReadyServlet`.
Optional configuration pid for alive servlet `org.apache.felix.systemready.impl.servlet.SystemAliveServlet`.
Name | Default | Description
-------------------------------------|--------------|----------------
osgi.http.whiteboard.servlet.pattern | /systemready | Path for the servlet
osgi.http.whiteboard.context.select | | OSGi service filter for the whiteboard context
The default context select filter works for Apache Karaf.
When using the servlet in Apache Felix Http Whiteboard or Adobe AEM make sure you set the servlet context select to:
osgi.http.whiteboard.context.select =(osgi.http.whiteboard.context.name=org.osgi.service.http)
## Example of using the system ready service framework in Apache Karaf
Download, install and run Apache Karaf 4.1.x. Inside the karaf shell execute this:
```
feature:install scr http-whiteboard
config:property-set --pid ServicesCheck services.list org.osgi.service.log.LogService
config:property-set --pid SystemReadyServlet osgi.http.whiteboard.context.select "(osgi.http.whiteboard.context.name=default)"
install -s mvn:org.apache.felix/org.apache.felix.rootcause/0.1.0-SNAPSHOT
install -s mvn:org.apache.felix/org.apache.felix.systemready/0.5.0-SNAPSHOT
```
Point your browser to http://localhost:8181/system/console/ready .
Check the status of a DS component:
```
rootcause SystemReadyMonitor
Component SystemReadyMonitor statisfied
```
Try this with some of your own components.