我们正在使用代码中心提供的spring-boot-admin-server
1.4.5版库来开发Boot-Admin仪表板。
一些应用程序正在通过Eureka向服务器注册自己,而一些应用程序直接使用spring-boot-admin-starter-client
1.4.5版本。
所有组件都部署在PCF环境中,并且通过HTTPS进行通信。无论采用哪种方式,应用程序都可以向管理员服务器注册,但是仅显示为OFFLINE。日志中未报告任何组件viz的错误。管理员服务器,管理员客户端,尤里卡服务器,尤里卡客户端。
但是,显示为“启动”的唯一应用程序是管理服务器本身。
在PCF中运行的spring-boot-admin-client应用程序的应用程序属性为:
spring: application: name: bootadmin-ms-charlie boot: admin: url: https://bootadmin-dashboard.abc.intl.com ssl: trust_store: path: classpath:ssl/sslcacert.jks password: a-password
由于两种注册方法的结果都是相同的,为了使应用程序通过Eureka路径进行注册,我跳过了此处的配置。
同样在本地工作也很好,管理仪表板可以按预期显示所有应用程序。
是否需要针对Cloud Foundry进行任何配置?还是我可能犯的任何明显错误?
任何建议都是最欢迎的。
- -编辑 - -
这是SBA服务器的日志,显示服务器与客户端之间的通信正常。如果这些日志提供任何错误指示,请指出。
OUT 2017-01-23 05:15:15.139 DEBUG 10 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : DispatcherServlet with name 'dispatcherServlet' processing POST request for [/api/applications] OUT 2017-01-23 05:15:15.151 DEBUG 10 --- [nio-8080-exec-1] m.m.a.RequestResponseBodyMethodProcessor : Read [class de.codecentric.boot.admin.model.Application] as "application/json;charset=UTF-8" with [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@7df33a9f] OUT 2017-01-23 05:15:15.163 DEBUG 10 --- [nio-8080-exec-1] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Written [Application [id=3805ee6a, name=bootadmin-ms-charlie, managementUrl=http://23fcf304-82d6-44cd-7fce-2a5027de9f21:8080, healthUrl=http://23fcf304-82d6-44cd-7fce-2a5027de9f21:8080/health, serviceUrl=http://23fcf304-82d6-44cd-7fce-2a5027de9f21:8080]] as "application/json" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@7df33a9f] OUT 2017-01-23 05:15:15.166 DEBUG 10 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling OUT 2017-01-23 05:15:15.166 DEBUG 10 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Successfully completed request OUT bootadmin-dashboard.abc-intl.com - [23/01/2017:05:15:15.140 +0000] "POST /api/applications HTTP/1.1" 201 302 308 "-" "Java/1.8.0_121" 60.16.25.20:43224 x_forwarded_for:"10.10.10.10" x_forwarded_proto:"https" vcap_request_id:a40159e4-543f-40e0-627e-e8f1e7688b99 response_time:0.034164523 app_id:adcc8a33-83f4-448d-9ae2-bf2a2b16ea72 OUT 2017-01-23 05:15:18.719 DEBUG 10 --- [ updateTask1] o.s.web.client.RestTemplate : Created GET request for "http://23fcf304-82d6-44cd-7fce-2a5027de9f21:8080/health" OUT 2017-01-23 05:15:18.722 DEBUG 10 --- [ updateTask1] o.s.web.client.RestTemplate : Setting request Accept header to [application/json, application/*+json]
来自客户端的日志都是干净的。仅当服务器关闭时,它才会发出“无法重新整理”的警告。
根据https://github.com/codecentric/spring-boot-admin/issues/399上的讨论,发现以下属性对于SBA客户端在Cloud Foundry或基于容器的架构上使用Dashboard至关重要:
spring:
boot:
admin:
client:
management-url:
这是由于以下事实:当客户端在SBA服务器上注册时,它使用runC容器ID来形成其服务URL。该网址对于Cloud Foundry路由器无效。这将导致以后SBA仪表板与客户端之间的通信失败,从而使其显示为OFFLINE。
另一种方法是使用进行容器IP spring.boot.admin.client.prefer-ip=true
。这将列出SBA上的所有容器/ CF实例,但不能清楚显示站点/可用区中整个应用程序的总体运行状况。此外,根据云原生应用程序的原理和12要素,在CF中从不鼓励直接连接到容器。