Good catch, will change it --- Luca Burgazzoli
On Tue, Sep 19, 2017 at 3:07 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: > Hi > > Thanks the health mbean looks good. > > However I wonder if using a date is the right type for "interval" > https://github.com/lburgazzoli/apache-camel/blob/CAMEL-10026-hc/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java#L251 > > Is interval a specific date, eg 2017-1-1 12:59:55 or is it not a > number like 2000 for every 2000 milli seconds? > > > On Tue, Sep 19, 2017 at 2:50 PM, Luca Burgazzoli <lburgazz...@gmail.com> > wrote: >> Hi Claus, >> the branch is still [1] and the management parts is in api/management [2]. >> >> [1] https://github.com/lburgazzoli/apache-camel/tree/CAMEL-10026-hc >> [2] >> https://github.com/lburgazzoli/apache-camel/tree/CAMEL-10026-hc/camel-core/src/main/java/org/apache/camel/api/management >> >> --- >> Luca Burgazzoli >> >> >> On Tue, Sep 19, 2017 at 2:26 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: >>> 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 > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2