1

Is there any dedicated endpoint in DXA 2.0 where we can make a call to validate the status of the application? (Something similar to Spring Actuator's health check endpoint). I did some investigation and was unable to find information so ended up making custom endpoint for health check.

I have an web application which is based in DXA 2.0 and it is deployed over AWS ECS. In order to have a healthy instance I created a health check controller,

@RequestMapping(value = "/en-us/health/index.html", method = {RequestMethod.GET}) public @ResponseBody String ping() { return "Up"; }

In the target-group of AWS I have configured the health check path to

/en-us/health/index.html and I am expecting http status code 200 to mark this target as a healthy target.

My application starts correctly and has a request mapping in it with the endpoint I mentioned earlier,

[main] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/en-us/health/index.html],methods=[GET]}" onto public void com.abc.test.controller.HealthCheckController.ping()

However when a call is sent by the load balancer to this endpoint to verify if its up it's giving error 404 (See error that is shown in ECS events) , which does not make sense because there is an endpoint expecting that call and should return HTTP status 200. Due to this problem I never get and healthy instance behind the load balancer.

service custom-web (instance i-**********) (port 123) is unhealthy in target-group custom-web due to (reason Health checks failed with these codes: [404])

Is it possible that it has to do with topologyManager configuration? I am mentioning it because when a call is done by the load balancer, call originates from the EC2 instance where application is deployed and the request url is built in following structure,

11.11.11.111/en-us/health/index.html then it its possible that ModelService is throwing 404 Localization not found.

How is it possible to make health check work for DXA 2.0 application deployed in AWS ECS?

  • Welcome to Tridion StackExchange Bimals, What is the result of that page if you running locally to access that URL? For a health check, you can also give an existing page of your web app URL in your AWS LB target health check URL? eg / or /en-us/index.html or any existing page /en-us/abou-us.html – Velmurugan Jan 24 at 20:32
  • Thank you Velmurugan, when I run it locally it works fine because the domain localhost:8080 is mapped in the topology manager and it is able to resolve the localization successfully and gives me back http status 200. From the links you have provided I think I can do similar implementation so that for that endpoint DXA does not try to resolve the localization – Bimals Subedi Jan 29 at 13:26
2

AFAIK - DXA 2.0 there is no health check URL endpoint, but In DXA 2.1 DOTNET now It's possible, If DXA fails to initialize due to no TTM mapping then we can still identify if DXA is running by going to /system/health

I hope maybe the next version of Java DXA will get the same health check URL endpoint, I can see this option already been done in this branch, look at the following classes of the code for reference.

I hope it helps

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.