scouter-contrib / scouter-paper Goto Github PK
View Code? Open in Web Editor NEWscouter-paper is a web client software for scouter
License: Other
scouter-paper is a web client software for scouter
License: Other
처음 사용자용 기본 UI 배치?
데모사이트로 접속해서 Layout을 scouter-demo-complex-01, preset을 scouter-demo-all로 하는 경우,
일부 페이퍼에 아이콘이 없습니다. 그리고 아이콘이 없는 경우 마우스 오버시에 해당 카운터의 값을 보여주는 팝업이 보여지지 않아요.
추가로 기본 Type의 경우에는 이미 정해진 아이콘이 있어 icon이 null 인데 이 경우 아이콘명은 name의 값을 사용하면 됩니다.
각 Family별 counter를 displayName으로 정렬해 보여주기.
프로파일 wrap 동작 안함
XLog Bar에 애니메이션이 끊어지는 현상
(요청 interval 동안 애니메이션이 표현되도록 해야 할 듯.)
각 차트에 대표 objType 아이콘 표시
10이면 너무 큰 경우가 있어 더 작게 조절 필요.
예를들면 에러율등은 0.5인지 1.5인지 판단이 중요한 시스템이 있음.
error 토글시 error인 xlog만 보여주는 기능
Warning: Hash history cannot PUSH the same path; a new entry will not be added to the history stack
a.(anonymous function) @ raven.js:58
stack_frame_overlay_proxy_console @ index.js:2177
warning @ browser.js:49
(anonymous) @ createHashHistory.js:213
confirmTransitionTo @ createTransitionManager.js:44
push @ createHashHistory.js:191
setInstances @ InstanceSelector.js:305
callCallback @ react-dom.development.js:542
d @ raven.js:438
invokeGuardedCallbackDev @ react-dom.development.js:581
invokeGuardedCallback @ react-dom.development.js:438
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:452
executeDispatch @ react-dom.development.js:836
executeDispatchesInOrder @ react-dom.development.js:858
executeDispatchesAndRelease @ react-dom.development.js:956
executeDispatchesAndReleaseTopLevel @ react-dom.development.js:967
forEachAccumulated @ react-dom.development.js:935
processEventQueue @ react-dom.development.js:1112
runEventQueueInBatch @ react-dom.development.js:3607
handleTopLevel @ react-dom.development.js:3616
handleTopLevelImpl @ react-dom.development.js:3347
batchedUpdates @ react-dom.development.js:11082
batchedUpdates @ react-dom.development.js:2330
dispatchEvent @ react-dom.development.js:3421
d @ raven.js:438
모바일에서 차트 이동 관련
정적 페이지만 사용시
새 버전을 배포해도 캐시가 남아있어
헤더 추가 필요할 듯 합니다.
알림의 조회 인터벌은 카운터의 조회 인터벌과 다른 값을 사용하는게 좋을 것 같습니다.
인터벌은 30초~1분 정도면 충분할 것 같습니다.
데이터가 존재하는 매트릭이 추가된 페이퍼에, 데이터가 없는 매트릭을 추가하면 페이퍼 제목에 해당 매트릭이 누락되어 보이지 않고, 툴팁에 나오지 않으며, 매트릭 순서에 따라 툴팁이 아예 안나오는 경우도 있음
서버 시간과 수십초 이상 차이나는 경우 차트가 눈에 띠게 벌어지는 부분등을 보정하기 위해 서버시간 동기화.
xlog의 y축 증감비율이 1.0 을 조정하면 좋을 것 같아요.
고정 모드에서 파란색으로 보임
외부(scouter 전용 클라이언트등)에서 url link를 제작하여 브라우저를 여는 경우
longterm이 클라이언트 설정이라 파라미터로 주기가 애매한 경우가 있음.
위 파라미터가 없는 경우 각 클라이언트 설정에 맞게 자동으로 적용되는 기능 필요
라인 차트가 세팅된 페이퍼에 비라인 차트 드롭시 제목 변경 안됨
추가된 API 호출시 오류가 발생합니다.
#cp073 02:01:11.971 [qtp2087258327-22] ERROR s.w.f.e.m.GenericExceptionMapper[66] - [WebApplicationException] 500 - java.io.EOFException [caused by] null, [uri]v1/xlog-data/20180305/multi/-2761765471835399660 java.lang.RuntimeException: java.io.EOFException at scouterx.webapp.framework.client.net.TcpProxy.process(TcpProxy.java:206) at scouterx.webapp.framework.client.net.TcpProxy.process(TcpProxy.java:131) at scouterx.webapp.layer.consumer.XLogConsumer.retrieveXLogPacksByTxids(XLogConsumer.java:234) at scouterx.webapp.layer.consumer.XLogConsumer.retrieveXLogDataListByTxids(XLogConsumer.java:194) at scouterx.webapp.layer.service.XLogService.retrieveXLogDataListByTxids(XLogService.java:107) at scouterx.webapp.layer.controller.XLogDataController.retrieveXLogDataListByTxids(XLogDataController.java:205) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:267) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650) at scouterx.webapp.framework.filter.ReleaseResourceFilter.doFilter(ReleaseResourceFilter.java:44) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637) at scouterx.webapp.framework.filter.NoCacheFilter.doFilter(NoCacheFilter.java:40) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637) at scouterx.webapp.framework.filter.CorsFilter.doFilter(CorsFilter.java:65) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637) at scouterx.webapp.framework.filter.LoggingInitServletFilter.doFilter(LoggingInitServletFilter.java:50) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:564) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124) at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128) at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:673) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:591) at java.lang.Thread.run(Thread.java:748) Caused by: java.io.EOFException: null at java.io.DataInputStream.readByte(DataInputStream.java:267) at scouter.io.DataInputX.readByte(DataInputX.java:295) at scouterx.webapp.framework.client.net.TcpProxy.process(TcpProxy.java:196) ... 67 common frames omitted 02:01:59.729 [scouterx.webapp.framework.client.model.AgentModelThread] INFO s.w.framework.client.net.TcpProxy[110] - TcpProxy closed : pool-size:4, scouterx.webapp.framework.client.net.TcpProxy@4d5d943d, stack: java.lang.RuntimeException: java.net.SocketException: Software caused connection abort: recv failed at scouterx.webapp.framework.client.net.TcpProxy.process(TcpProxy.java:206) at scouterx.webapp.framework.client.model.AgentModelThread.fetchObjectList(AgentModelThread.java:88) at scouterx.webapp.framework.client.model.AgentModelThread.run(AgentModelThread.java:64) Caused by: java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:171) at java.net.SocketInputStream.read(SocketInputStream.java:141) at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) at java.io.BufferedInputStream.read(BufferedInputStream.java:265) at java.io.DataInputStream.readByte(DataInputStream.java:265) at scouter.io.DataInputX.readByte(DataInputX.java:295) at scouterx.webapp.framework.client.net.TcpProxy.process(TcpProxy.java:196) ... 2 more
프로파일뷰가 XLog Box가 아닌 Paper 화면 사이즈로 뜨면 좋겠어요
툴팁이 다른 박스의 뒤쪽으로 그려집니다.
Paper 탭에서 인스턴스 선택의 변화가 있는 경우, 변화가 XLOG 그래프에 반영되지 않음
차트 옵션 - Line, Fill, Stack
첫번째 그래프에 표시된 것 선택이 안됨
두번째 그래프에 추가된 후 선택 가능
데이터는 삭제되지만, 그래프에 제외된 인스턴스의 그래프가 남아서 보임
Layout 로드시에 mysql 메트릭만 있는 paper에 tomcat, mysql로 tomcat 명칭이 붙어 있음.
프로파일 뷰에 각 스텝에 들여쓰기가 있음 좋겠어요~
쿼리의 바인드 변수 외에 scouter가 쿼리의 normalization을 위해 리터럴 부분(바인드 변수 처리되지 않은 문자부분 및 숫자부분)을 자체적으로 변수 처리한 부분이 제대로 처리 되지 않는 문제.
가로가 긴데, 세로가 길게 표현됩니다.
과거 조회, Long term 조회시 로딩 애니메이션 없습니다.
XLog profile에서 API call 간 XLog 창 연결
기본값에 대해 논의
특정 xlog profile 화면에 대해 쉽게 공유할 수 있는 링크가 필요합니다.
처음 수정 후 다시 버튼 누르면 클릭 안됨
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.