--- Luca Burgazzoli
On Tue, Sep 5, 2017 at 2:17 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: > Hi Luca > > Looks really good. > > There is a few typo's and the likes in the source code I looked at. > Will try to do a github comment so you can see them as well later, or > when the code is merged later. > > 1) > For the doCall implementation when you implement a health check, then > what would happen if that methods throws an runtime exception? I think > we need to clarify on the javadoc what the contract is, and if an > exception would then render the check to be status = DOWN or what? > I'd expect the implementation to wrap it and decide if the service is healthy or not so yeah, I'll make it clear. > > 2) > I think the spring boot auto configuration prefixes for the health > checks for the components such as undertow, servicenow etc should all > be under the same prefix as the component itself, eg > > eg > camel.undertow.health.checks[spring-health].interval = 5s > > should be > camel.component.undertow.health.checks[spring-health].interval = 5s > > Then everything you can configure in the undertow component is with > the same prefix and its consistent. > Agree. > > 3) > To implement a custom health check and have spring boot auto > configuration, then you would have to write that configuration code > yourself / manually? > At the moment yes as the layout is not defined but it may be eventually auto generated like the starters. > > 4) > I wonder in the servicenow health check where you configure the > instance id, username etc again, whether you may want to be able to > just refer to the existing configuration so you do not repeat > yourself? > > https://github.com/lburgazzoli/apache-camel/blob/CAMEL-10026-hc/examples/camel-example-spring-boot-health-checks/application/src/main/resources/application.properties#L66 > Yeah, that was an example non properly cleaned up/explained but by default the servicenow reuse component's configuration. > > 5) > In this example it is a bit confusing that the comment say the health > check is enabled and then the value below is false > https://github.com/lburgazzoli/apache-camel/blob/CAMEL-10026-hc/examples/camel-example-spring-boot-health-checks/application/src/main/resources/application.properties#L36 > > 6) > ... and as well there is 2 indicator.enabled in that example. Yeah, it definitively need to be cleaned up. > > > > On Mon, Sep 4, 2017 at 5:16 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: >> Hi Luca >> >> I will take a closer look tomorrow, I just peaked a bit today. >> >> Just to be sure, the implementation of the logic that performs the >> actual health check is agnostic? i.e. its not tied to must be using >> Spring Boot. And that logic is if possible reusing the "ping check" >> (i.e. verifier extension). >> >> So the spring boot health check is currently for making it easier for >> end users to configure it via spring boot configuration? >> >> >> >> On Mon, Sep 4, 2017 at 4:01 PM, Luca Burgazzoli <lburgazz...@gmail.com> >> wrote: >>> Hello, >>> >>> I've been working a little on the Health Check API [1] implementation an >>> the code is available in my Apache Camel fork [2]. There is now a a new >>> package [3] that defines the following concepts: >>> >>> - HealthCheck >>> >>> this represent an health check and defines the some basic contract i.e >>> the response; >>> >>> - HealthCheckConfiguration >>> >>> this is a basic coonfiguration object that holds some basic settings >>> like the minimum delay between calls, the number of time a service may >>> be reported as unhealthy before meking the check as failed; beside >>> those simple options, is then responsability of the check impl. to >>> eventually implement further limitations; >>> >>> - HealthCheckRegistry >>> >>> this is just a registry, it doesn't have any method to trigger checks >>> and it has intentionally been kept simple as in the future it may be >>> superseeded by an internal camel registry [4]; >>> >>> - HealthCheckRepository >>> >>> this is a simple interface to define health check providers and by >>> default there is one that grabs all the checks available in the >>> registry so you can add your own check i.e. istantiating your bean >>> in spring/spring-boot; components can provide theirs own repository. >>> >>> - HealthCheckService >>> >>> this is a simple service that runs in the background and invokes the >>> checks according to a schedule. >>> >>> The default camel context sets-up a default implementation of the health >>> check registry which you can override by putting your own implementation >>> in the camel registry as usual. Check are not active by default so you >>> need to explicit enable/configure them. >>> >>> The current implementation has a number of limitations: >>> >>> - it is spring-boot oriented for demostration purpose so you can't >>> access health checks using JMX (but it is planned); >>> - it is focused on monitoring the status of external systems so there >>> are a few implementations based on the Component verifier extension: >>> >>> 1. a ServiceNow instance check to report if an instances is alive >>> 2. a simple undertow based http check that issue an http get to an >>> http endpoint >>> >>> There is also a simple consul repository that let you to reuse consul >>> checks [5] so i.e. you can have a single check to monitor the status >>> of twitter and reuse it in all your microservices. >>> >>> An example can be found in my fork [6] >>> >>> My next goals are: >>> >>> 1. define some core checks to monitor the health of the camel context >>> i.e. fail if there is an excessive number of errors, if the latency >>> is too high, etc. >>> 2. expose check through JMX. >>> 3. use health checks for ServiceCall EIP >>> 4. use health checks in Clustering/Superving route controller >>> >>> >>> Any feedback is very welcome, >>> Luca >>> >>> >>> [1] https://issues.apache.org/jira/browse/CAMEL-10026 >>> [2] https://github.com/lburgazzoli/apache-camel/tree/CAMEL-10026-hc >>> [3] >>> https://github.com/lburgazzoli/apache-camel/tree/CAMEL-10026-hc/camel-core/src/main/java/org/apache/camel/health >>> [4] https://issues.apache.org/jira/browse/CAMEL-10792 >>> [5] https://www.consul.io/docs/agent/checks.html >>> [6] >>> https://github.com/lburgazzoli/apache-camel/tree/CAMEL-10026-hc/examples/camel-example-spring-boot-health-checks >>> >>> >>> --- >>> Luca Burgazzoli >> >> >> >> -- >> Claus Ibsen >> ----------------- >> http://davsclaus.com @davsclaus >> Camel in Action 2: https://www.manning.com/ibsen2 > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2