| # 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. |