Closed yaowenqiang closed 6 years ago
多谢意见。 docker jdk等并不是这个扩展需要依赖的组件,而是使用事例需要的依赖,实际是zipkinserver 需要的,您的分析程序程序可以是其他的分析server实现。 为了防止误会,我会在'example'中添加说明。
我都装好了,看到也有捕获,但是zipkin里面是空的,这大概是什么原因?
将zipkin的endtime那里向后调整一个小时,点击find trace,如果还是不行,尝试一下verify的测试例子。
php -d extension=molten.so -d molten.enable=1 -d molten.sink_type=2 -d molten.tracing_cli=1 -d molten.sampling_rate=1 -r '$c=curl_init("http://localhost:12345");curl_exec($c);' 这个是执行成功了. [{"traceId":"bf6369f03f966df1","name":"php_curl","version":"php-4","id":"1.1","parentId":"1","timestamp":1502075357293929,"duration":4278,"annotations":[{"value":"cs","timestamp":1502075357293929,"endpoint":{"serviceName":"test","ipv4":"10.0.2.15"}},{"value":"cr","timestamp":1502075357298207,"endpoint":{"serviceName":"test","ipv4":"10.0.2.15"}}],"binaryAnnotations":[{"key":"http.url","value":"http:\/\/localhost:12345\/","endpoint":{"serviceName":"test","ipv4":"10.0.2.15"}},{"key":"error","value":"Failed to connect to localhost port 12345: Connection refused","endpoint":{"serviceName":"test","ipv4":"10.0.2.15"}}]},{"traceId":"bf6369f03f966df1","name":"cli","version":"php-4","id":"1","timestamp":1502075357293864,"duration":4375,"annotations":[{"value":"sr","timestamp":1502075357293864,"endpoint":{"serviceName":"test","ipv4":"10.0.2.15"}},{"value":"ss","timestamp":1502075357298239,"endpoint":{"serviceName":"test","ipv4":"10.0.2.15"}}],"binaryAnnotations":[{"key":"path","value":"-","endpoint":{"serviceName":"test","ipv4":"10.0.2.15"}}]}]
但是zipkin里面还是空的,endtime 我也提前了一个小时
贴一下zipkin的截图吧
这个部分是有内容吗?
Showing: 0 of 0 Services:
能不能提供一个 curl post的语句,我拨测一下zipkin,我看了一下 zipkin好像没收到请求
你试试这个
curl -X POST \
http://192.168.56.10:9411/api/v1/spans \
-H 'cache-control: no-cache' \
-d '[{"traceId":"473c70a665b71bf8","name":"php_curl","version":"php-4","id":"56cd92f7ee01ab18","parentId":"9cf11caea16201fb","timestamp":1502089150930381,"duration":6846,"annotations":[{"value":"cs","timestamp":1502089150930381,"endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}},{"value":"cr","timestamp":1502089150937227,"endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}}],"binaryAnnotations":[{"key":"http.url","value":"http:\/\/localhost:12345\/","endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}},{"key":"error","value":"Failed connect to localhost:12345; Connection refused","endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}}]},{"traceId":"473c70a665b71bf8","name":"cli","version":"php-4","id":"9cf11caea16201fb","timestamp":1502089150929945,"duration":7410,"annotations":[{"value":"sr","timestamp":1502089150929945,"endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}},{"value":"ss","timestamp":1502089150937355,"endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}}],"binaryAnnotations":[{"key":"path","value":"-","endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}}]}]
'
java.lang.IllegalArgumentException: Malformed reading List from json: %5B%7B%22traceId%22%3A%22b63a84ecc99d9732%22%2C%22name%22%3A%22php_curl%22%2C%22version%22%3A%22php-4%22%2C%22id%22%3A%227de5a8dc33d28931%22%2C%22parentId%22%3A%221%22%2C%22timestamp%22%3A1500973972417378%2C%22duration%22%3A6873%2C%22annotations%22%3A%5B%7B%22value%22%3A%22cs%22%2C%22timestamp%22%3A1500973972417378%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22http-trac222%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%2C%7B%22value%22%3A%22cr%22%2C%22timestamp%22%3A1500973972424251%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22http-trac222%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%5D%2C%22binaryAnnotations%22%3A%5B%7B%22key%22%3A%22http.url%22%2C%22value%22%3A%22http%3A%5C%2F%5C%2Flocalhost%3A12345%5C%2F%22%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22http-trac222%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%2C%7B%22key%22%3A%22error%22%2C%22value%22%3A%22Failed+connect+to+localhost%3A12345%3B+Connection+refused%22%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22http-trac222%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%5D%7D%2C%7B%22traceId%22%3A%22b63a84ecc99d9732%22%2C%22name%22%3A%22cli%22%2C%22version%22%3A%22php-4%22%2C%22id%22%3A%221%22%2C%22timestamp%22%3A1500973972417238%2C%22duration%22%3A7111%2C%22annotations%22%3A%5B%7B%22value%22%3A%22sr%22%2C%22timestamp%22%3A1500973972417238%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22http-trac222%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%2C%7B%22value%22%3A%22ss%22%2C%22timestamp%22%3A1500973972424349%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22http-trac222%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%5D%2C%22binaryAnnotations%22%3A%5B%7B%22key%22%3A%22path%22%2C%22value%22%3A%22-%22%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22http-trac222%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%5D%7D%5D= at zipkin.internal.JsonCodec.exceptionReading(JsonCodec.java:738) ~[zipkin-1.29.1.jar!/:na] at zipkin.internal.JsonCodec.readList(JsonCodec.java:661) ~[zipkin-1.29.1.jar!/:na] at zipkin.internal.JsonCodec.readSpans(JsonCodec.java:480) ~[zipkin-1.29.1.jar!/:na] at zipkin.collector.Collector.acceptSpans(Collector.java:93) ~[zipkin-1.29.1.jar!/:na] at zipkin.server.ZipkinHttpCollector.validateAndStoreSpans(ZipkinHttpCollector.java:88) [classes!/:na] at zipkin.server.ZipkinHttpCollector.uploadSpansJson(ZipkinHttpCollector.java:65) [classes!/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144]
后面太长,没copy完,貌似是java解析json异常了
你们的java是什么版本的?我换一个试一下
抱歉, 刚才给的那个postdata 有些问题, 你换成这个试一下:
curl -X POST \
http://127.0.0.1:9411/api/v1/spans \
-H 'cache-control: no-cache' \
-d '[{"traceId":"473c70a665b71bf8","name":"php_curl","version":"php-4","id":"56cd92f7ee01ab18","parentId":"9cf11caea16201fb","timestamp":1502089150930381,"duration":6846,"annotations":[{"value":"cs","timestamp":1502089150930381,"endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}},{"value":"cr","timestamp":1502089150937227,"endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}}],"binaryAnnotations":[{"key":"http.url","value":"http:\/\/localhost:12345\/","endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}},{"key":"error","value":"Failed connect to localhost:12345; Connection refused","endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}}]},{"traceId":"473c70a665b71bf8","name":"cli","version":"php-4","id":"9cf11caea16201fb","timestamp":1502089150929945,"duration":7410,"annotations":[{"value":"sr","timestamp":1502089150929945,"endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}},{"value":"ss","timestamp":1502089150937355,"endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}}],"binaryAnnotations":[{"key":"path","value":"-","endpoint":{"serviceName":"default","ipv4":"10.0.2.10"}}]}]
'
还是同样的错误
我本地是java 1.8的。 你是拉取的最新master代码吗??
java version "1.8.0_144"
你可以安装一下docker 尝试一下docker的测试方案。
我就是用的docker跑的
现在还不明确问题的原因, 我建议你拉取一下最新的代码, 停止zipkin server, 重新run 一下example
遇到的问题和这个朋友一样,即便配置了molten扩展和开启,实际其实没有将数据提交到 zipkin,开启 zipkin debug 模式,发现跑 run.sh,complex.sh 无法提交数据到zipkin 上,单独跑 curl 的话,错误跟上面的朋友一样。
恩,确实应该是有一些小问题,我虚拟机的ubuntu是无反应的,然后我开了实体机去测试,发现是正常的。这就有点奇怪了,我再研究下,看能不能给大伙完善下。
我zipkin是docker拉的镜像 php-fpm中配置
extension = molten.so
molten.enable=1
molten.service_name=default
molten.tracing_cli=1
molten.sampling_type=2
molten.sampling_request=10
molten.report_interval=10
molten.report_limit=100
molten.sink_type=4
molten.sink_http_uri=http://127.0.0.1:9411/api/v1/spans
molten.span_format=zipkin
docker log 显示如下错误日志
2017-08-11 10:10:24.933 WARN 5 --- [nio-9411-exec-7] zipkin.server.ZipkinHttpCollector : Cannot decode spans due to IllegalArgumentException(Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $ reading List<Span> from json: {"error":[]}
)
java.lang.IllegalArgumentException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $ reading List<Span> from json: {"error":[]}
at zipkin.internal.JsonCodec.exceptionReading(JsonCodec.java:738) ~[zipkin-1.29.2.jar!/:na]
at zipkin.internal.JsonCodec.readList(JsonCodec.java:661) ~[zipkin-1.29.2.jar!/:na]
at zipkin.internal.JsonCodec.readSpans(JsonCodec.java:480) ~[zipkin-1.29.2.jar!/:na]
at zipkin.collector.Collector.acceptSpans(Collector.java:93) ~[zipkin-1.29.2.jar!/:na]
at zipkin.server.ZipkinHttpCollector.validateAndStoreSpans(ZipkinHttpCollector.java:88) [classes/:na]
at zipkin.server.ZipkinHttpCollector.uploadSpansJson(ZipkinHttpCollector.java:65) [classes/:na]
at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) [spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) [spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) [spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) [spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) [spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) [spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) [spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110) [spring-boot-actuator-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106) [spring-boot-actuator-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
at zipkin.internal.gson.stream.JsonReader.beginArray(JsonReader.java:350) ~[zipkin-1.29.2.jar!/:na]
at zipkin.internal.JsonCodec.readList(JsonCodec.java:655) ~[zipkin-1.29.2.jar!/:na]
... 69 common frames omitted
/usr/lib64/php/modules/molten.so: undefined symbol: build_main_span in Unknown on line 0
php7.0,编译后载入不进来?
@dongxie 下载最新的master 版本试试
java.lang.IllegalArgumentException: Malformed reading List from json: %5B%7B%22traceId%22%3A%22473c70a665b71bf8%22%2C%22name%22%3A%22php_curl%22%2C%22version%22%3A%22php-4%22%2C%22id%22%3A%2256cd92f7ee01ab18%22%2C%22parentId%22%3A%229cf11caea16201fb%22%2C%22timestamp%22%3A1502089150930381%2C%22duration%22%3A6846%2C%22annotations%22%3A%5B%7B%22value%22%3A%22cs%22%2C%22timestamp%22%3A1502089150930381%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22default%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%2C%7B%22value%22%3A%22cr%22%2C%22timestamp%22%3A1502089150937227%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22default%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%5D%2C%22binaryAnnotations%22%3A%5B%7B%22key%22%3A%22http.url%22%2C%22value%22%3A%22http%3A%5C%2F%5C%2Flocalhost%3A12345%5C%2F%22%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22default%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%2C%7B%22key%22%3A%22error%22%2C%22value%22%3A%22Failed+connect+to+localhost%3A12345%3B+Connection+refused%22%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22default%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%5D%7D%2C%7B%22traceId%22%3A%22473c70a665b71bf8%22%2C%22name%22%3A%22cli%22%2C%22version%22%3A%22php-4%22%2C%22id%22%3A%229cf11caea16201fb%22%2C%22timestamp%22%3A1502089150929945%2C%22duration%22%3A7410%2C%22annotations%22%3A%5B%7B%22value%22%3A%22sr%22%2C%22timestamp%22%3A1502089150929945%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22default%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%2C%7B%22value%22%3A%22ss%22%2C%22timestamp%22%3A1502089150937355%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22default%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%5D%2C%22binaryAnnotations%22%3A%5B%7B%22key%22%3A%22path%22%2C%22value%22%3A%22-%22%2C%22endpoint%22%3A%7B%22serviceName%22%3A%22default%22%2C%22ipv4%22%3A%2210.0.2.10%22%7D%7D%5D%7D%5D%0A=
openjdk version "1.8.0_131"
建议把安装需要的基础软件在readme里面说明一下,比如docker,jdk8等