Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "BaSyx / Documentation / Components / DataBridge / Features / Health Endpoint"

(Created page with "= Health Endpoint = == User Story & Use Case == ''As BaSyx components administrator'' ''I want a health endpoint for DataBridge component'' ''so that I can easily check the...")
 
Line 12: Line 12:
 
All BaSyx components expose the ''/health'' endpoint at their configured HTTP context. For example, if the DataBridge component is running at ''http://localhost:8085'', the respective health endpoint can be accessed via ''http://localhost:8085/health''. If the component is healthy, it will return the HTTP status code ''200 OK'' with a response body containing the detailed status of context routes as a JSON.
 
All BaSyx components expose the ''/health'' endpoint at their configured HTTP context. For example, if the DataBridge component is running at ''http://localhost:8085'', the respective health endpoint can be accessed via ''http://localhost:8085/health''. If the component is healthy, it will return the HTTP status code ''200 OK'' with a response body containing the detailed status of context routes as a JSON.
  
<syntaxhighlight lang="json">
+
===Sample Response Body===
 +
 
 +
<pre class="mw-code mw-code-json">
 
[
 
[
 
     {
 
     {
Line 54: Line 56:
 
     }
 
     }
 
]
 
]
</syntaxhighlight>
+
</pre>
 
+
<span style=color:red>Disclaimer: Below will only work with the images created from development branch of basyx-java-components due to missing wget installation in the 1.3.0 release</span>
+
  
 
In the following, an excerpt of a compose.yml file is given where the 'examplecontainer' waits for the 'databridge' container startup indicated by the healthcheck using wget and the health endpoint.
 
In the following, an excerpt of a compose.yml file is given where the 'examplecontainer' waits for the 'databridge' container startup indicated by the healthcheck using wget and the health endpoint.
Line 78: Line 78:
 
       timeout: 10s
 
       timeout: 10s
 
</source>
 
</source>
 +
 +
<span style=color:red>Disclaimer: The health endpoint defined above is restricted to GET requests only, so please don't use the '''--spider''' option with '''wget'''. The '''--spider''' option in the '''wget''' command sends an HTTP HEAD request to the server instead of a GET request. </span>
  
 
== Feature Configuration ==
 
== Feature Configuration ==
The feature is enabled by default. No additional configuration is necessary.
+
The feature is enabled by default and is available on port '''8085''' only. No additional configuration is necessary.

Revision as of 07:28, 30 January 2023

Health Endpoint

User Story & Use Case

As BaSyx components administrator

I want a health endpoint for DataBridge component

so that I can easily check the healthiness of the used components

In various contexts, a health endpoint indicating the healthiness of the components is beneficial. For example, it can be utilized for waiting for a component startup. Additionally, it can be used in Kubernetes as container probes and thus automatically handle container failure.

Feature Overview

All BaSyx components expose the /health endpoint at their configured HTTP context. For example, if the DataBridge component is running at http://localhost:8085, the respective health endpoint can be accessed via http://localhost:8085/health. If the component is healthy, it will return the HTTP status code 200 OK with a response body containing the detailed status of context routes as a JSON.

Sample Response Body

[
    {
        "message": "",
        "details": {
            "invocation.count": 2,
            "context.name": "camel-1",
            "success.count": 2,
            "invocation.time": "2023-01-30T11:02:54.119537Z[Etc/UTC]",
            "context.version": "3.14.0",
            "context.status": "Started",
            "failure.count": 0
        },
        "state": "UP"
    },
    {
        "message": "",
        "details": {
            "route.id": "app.health.context",
            "invocation.count": 2,
            "route.context.name": "camel-1",
            "success.count": 2,
            "invocation.time": "2023-01-30T11:02:54.119709Z[Etc/UTC]",
            "route.status": "Started",
            "failure.count": 0
        },
        "state": "UP"
    },
    {
        "message": "",
        "details": {
            "route.id": "route1",
            "invocation.count": 2,
            "route.context.name": "camel-1",
            "success.count": 2,
            "invocation.time": "2023-01-30T11:02:54.119845Z[Etc/UTC]",
            "route.status": "Started",
            "failure.count": 0
        },
        "state": "UP"
    }
]

In the following, an excerpt of a compose.yml file is given where the 'examplecontainer' waits for the 'databridge' container startup indicated by the healthcheck using wget and the health endpoint.

version: '3.8'
services:
  examplecontainer:
    # image etc. omitted
    depends_on:
      databridge:
        condition: service_healthy

  databridge:
    # image etc. omitted
    healthcheck:
      test: wget --no-verbose --tries=1 databridge:8085/health || exit 1
      interval: 20s
      retries: 3
      start_period: 10s
      timeout: 10s

Disclaimer: The health endpoint defined above is restricted to GET requests only, so please don't use the --spider option with wget. The --spider option in the wget command sends an HTTP HEAD request to the server instead of a GET request.

Feature Configuration

The feature is enabled by default and is available on port 8085 only. No additional configuration is necessary.

Back to the top