0
votes
  • Spring Version: 5.0.8.RELEASE
  • Spring Boot Dependencies Version: 2.0.4.RELEASE
  • Java Version: 1.8.0_131

Spring Boot Admin reports that a client is down. However I can see that the client is running by navigating to it in the browser. On the details view for the client in Sprint Boot Admin the message under the health section is "Fetching health failed, Network Error". There are three URLs shown in the header of the details page:

http://localhost:8090/WorkOrderPrinting
http://localhost:8090/WorkOrderPrinting/manage
http://localhost:8090/WorkOrderPrinting/manage/health

Clicking them opens the respective views. Here is the output from the health view:

{"status":"UP","details":{"diskSpace":{"status":"UP","details":{"total":80482930688,"free":77726302208,"threshold":10485760}},"db":{"status":"UP","details":{"tenantRoutingDataSource":{"status":"UP","details":{"database":"Informix Dynamic Server","hello":104}},"userSetTenantRoutingDS":{"status":"UP","details":{"database":"Informix Dynamic Server","hello":104}},"dataSourceCbCommon":{"status":"UP","details":{"database":"Informix Dynamic Server","hello":104}},"dataSourceCbOrg":{"status":"UP","details":{"database":"Informix Dynamic Server","hello":104}}}}}}

It seems to be telling me that the client application is up and running. So I am not sure why Sprint Boot Admin UI is not reflecting that.

I have a second application running as a client and its working as expected. The result of the health URL is the same.

{"status":"UP","details":{"diskSpace":{"status":"UP","details":{"total":80482930688,"free":77726248960,"threshold":10485760}},"db":{"status":"UP","details":{"tenantRoutingDataSource":{"status":"UP","details":{"database":"Informix Dynamic Server","hello":104}},"userSetTenantRoutingDS":{"status":"UP","details":{"database":"Informix Dynamic Server","hello":104}},"dataSourceCbCommon":{"status":"UP","details":{"database":"Informix Dynamic Server","hello":104}},"dataSourceCbOrg":{"status":"UP","details":{"database":"Informix Dynamic Server","hello":104}}}}}}

The Spring Boot Admin Server log shows this error for Work Order Printing. Again, not sure why the URLs are working, but the log shows an error.

2018-09-13 09:19:19.071 DEBUG 5208 --- [     parallel-2] d.c.b.a.server.services.StatusUpdater    : Update status for Instance(id=6212ad7c5ab4, version=1, registration=Registration(name=Work Order Printing Development, managementUrl=http://localhost:8090/WorkOrderPrinting/manage, healthUrl=http://localhost:8090/WorkOrderPrinting/manage/health, serviceUrl=http://localhost:8090/WorkOrderPrinting, source=http-api), registered=true, statusInfo=StatusInfo(status=DOWN, details={error=Found, status=302}), statusTimestamp=2018-09-13T13:15:08.169Z, info=Info(values={}), endpoints=Endpoints(endpoints={health=Endpoint(id=health, url=http://localhost:8090/WorkOrderPrinting/manage/health)}), buildVersion=null)

Spring Boot Admin Server Config

server.servlet.context-path=/adminserver
logging.file=/var/log/eti/webui/adminserver.log
logging.level.de.codecentric.boot.admin.server=INFO

Failing Client Config

    #Admin Panel config
    #
    #This is the URL for the admin panel that this application will send its information to
    spring.boot.admin.client.url=http://localhost:8080/adminserver
    #This is required when deploying to Tomcat because the Admin panel cant seem to determine what the URL will be on its own 
    spring.boot.admin.client.instance.service-base-url=http://localhost:8090
    #This is the name that will be displayed in the admin panel for this application
    spring.boot.admin.client.instance.name=Work Order Printing
    # 
    spring.boot.admin.auto-registration=true
    #
    #Actuator config needed to expose endpoints to admin panel
    #
    management.endpoints.web.base-path=/manage
    management.endpoints.web.exposure.include:*
    management.endpoint.health.show-details=always

Working Client Config

    #Admin Panel config
    #
    #This is the URL for the admin panel that this application will send its information to
    spring.boot.admin.client.url=http://localhost:8080/adminserver
    #This is required when deploying to Tomcat because the Admin panel cant seem to determine what the URL will be on its own 
    spring.boot.admin.client.instance.service-base-url=http://localhost:8085
    #This is the name that will be displayed in the admin panel for this application
    spring.boot.admin.client.instance.name=LaunchPad
    spring.boot.admin.auto-registration=true
    #
    #Actuator config needed to expose endpoints to admin panel
    #
    management.endpoints.web.base-path=/manage
    management.endpoints.web.exposure.include:*
    management.endpoint.health.show-details=always
1

1 Answers

1
votes

So the problem turned out to be a configuration issue on my end. The Admin Server log shows the following:

2018-09-13 09:19:19.071 DEBUG 5208 --- [     parallel-2] d.c.b.a.server.services.StatusUpdater    : Update status for Instance(id=6212ad7c5ab4, version=1, registration=Registration(name=Work Order Printing Development, managementUrl=http://localhost:8090/WorkOrderPrinting/manage, healthUrl=http://localhost:8090/WorkOrderPrinting/manage/health, serviceUrl=http://localhost:8090/WorkOrderPrinting, source=http-api), registered=true, statusInfo=StatusInfo(status=DOWN, details={error=Found, status=302}), statusTimestamp=2018-09-13T13:15:08.169Z, info=Info(values={}), endpoints=Endpoints(endpoints={health=Endpoint(id=health, url=http://localhost:8090/WorkOrderPrinting/manage/health)}), buildVersion=null)

Its basically saying that there is a 302 (redirect) happening so it cant reach the URL. The reason for this that I forgot to allow access to the URLs in Spring Security config. I could get to them with the browser because I was logged in. Spring Boot Admin could not, because it was not logged in.

I added a rule to allow access to the /manage/ urls

 public void configure(WebSecurity web) throws Exception
{
    web.ignoring().antMatchers("/css/**", "/fonts/**", "/img/**", "/js/**", "/close", "/webjars/**", "/manage/**");
}