On Tue, Sep 19, 2017 at 2:22 PM, Luca Burgazzoli <lburgazz...@gmail.com> wrote: > Hello, > > I've added some info through JMX, would you mind review it before merging ? >
Can you post the link to the branch where those latest code changes are > Regards, > Luca > > > --- > Luca Burgazzoli > > > On Fri, Sep 8, 2017 at 4:20 PM, Luca Burgazzoli <lburgazz...@gmail.com> wrote: >> Hello, >> >> I've just pushed some bits to my fork to cleanup the implementation >> and implement some basic checks for routes status. In addition, to >> make it suitable to be included in camel 2.20, I've reduced the scope >> of the implementation to be almost limited to core/internal health >> checks and to provide a good foundation for people to write their own >> advanced checks if needed (component checks such as those for undertow >> and servicenow has been removed). >> >> Any feedback is really appreciated. >> >> >> --- >> Luca Burgazzoli >> >> >> On Tue, Sep 5, 2017 at 2:25 PM, Luca Burgazzoli <lburgazz...@gmail.com> >> wrote: >>> --- >>> 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 -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2