apache / hertzbeat

Apache HertzBeat(incubating) is a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
https://hertzbeat.apache.org/
Apache License 2.0
5.62k stars 971 forks source link

[BUG]"Status page error" #1702

Closed leiousen closed 6 months ago

leiousen commented 6 months ago

Is there an existing issue for this?

Current Behavior

在管理后台的“状态页面”菜单中,新增组件后,再进入到状态监控页会报错,但过了一段时间后就不会再报错了。![上传image.png...]()

2024-04-01 13:58:02 [365459807754240-api-summary-2555] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 5ms, All 5ms].
2024-04-01 13:58:03 [365703870543872-api-summary-3555] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 4ms, All 4ms].
2024-04-01 13:58:06 [365460586502144-api-summary-6556] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 4ms, All 4ms].
2024-04-01 13:58:07 [sshd-SshClient[5edc276b]-nio2-thread-74] WARN  org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /10.1.33.14:22 presented unverified EC key: SHA256:88ucGj5+U+RVWV/qFKoUnicqFge8g6tepSgflyivAz8
2024-04-01 13:58:08 [366431215691776-centos-basic-7556] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 654ms, All 654ms].
2024-04-01 13:58:08 [sshd-SshClient[5edc276b]-nio2-thread-89] WARN  org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /10.1.33.14:22 presented unverified EC key: SHA256:88ucGj5+U+RVWV/qFKoUnicqFge8g6tepSgflyivAz8
2024-04-01 13:58:09 [366431215691776-centos-cpu-8211] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 1674ms, All 1674ms].
2024-04-01 13:58:09 [sshd-SshClient[5edc276b]-nio2-thread-12] WARN  org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /10.1.33.14:22 presented unverified EC key: SHA256:88ucGj5+U+RVWV/qFKoUnicqFge8g6tepSgflyivAz8
2024-04-01 13:58:10 [http-nio-1157-exec-7] ERROR org.dromara.hertzbeat.manager.support.GlobalExceptionHandler - [monitor]-[unknown error happen]-Index 0 out of bounds for length 0
java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
        at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source)
        at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source)
        at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source)
        at java.base/java.util.Objects.checkIndex(Unknown Source)
        at java.base/java.util.ArrayList.get(Unknown Source)
        at org.dromara.hertzbeat.manager.service.impl.StatusPageServiceImpl.combineOneDayStatusPageHistory(StatusPageServiceImpl.java:167)
        at org.dromara.hertzbeat.manager.service.impl.StatusPageServiceImpl.queryComponentsStatus(StatusPageServiceImpl.java:125)
        at org.dromara.hertzbeat.manager.controller.StatusPagePublicController.queryStatusPageComponent(StatusPagePublicController.java:62)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at com.usthe.sureness.configuration.SurenessFilter.doFilter(SurenessFilter.java:102)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Unknown Source)
2024-04-01 13:58:10 [366431215691776-centos-memory-9885] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 653ms, All 653ms].
2024-04-01 13:58:10 [365459461380096-nginx-available-0555] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 1ms, All 1ms].
2024-04-01 13:58:10 [365459461380096-nginx-nginx_status-0556] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [calculates execute warning] Could not sub <JavaType, accepts, null, null> with <JavaType, handled, null, null>.
2024-04-01 13:58:10 [365459461380096-nginx-nginx_status-0556] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 1ms, All 1ms].
2024-04-01 13:58:10 [365459461380096-nginx-req_status-0557] INFO  org.dromara.hertzbeat.collector.collect.nginx.NginxCollectImpl - java.lang.ArrayIndexOutOfBoundsException
2024-04-01 13:58:10 [365459461380096-nginx-req_status-0557] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Failed, Run 1ms, All 1ms] Reason: java.lang.ArrayIndexOutOfBoundsException
2024-04-01 13:58:10 [sshd-SshClient[5edc276b]-nio2-thread-27] WARN  org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /10.1.33.14:22 presented unverified EC key: SHA256:88ucGj5+U+RVWV/qFKoUnicqFge8g6tepSgflyivAz8
2024-04-01 13:58:11 [366431215691776-centos-disk-0539] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 670ms, All 670ms].
2024-04-01 13:58:11 [sshd-SshClient[5edc276b]-nio2-thread-46] WARN  org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /10.1.33.14:22 presented unverified EC key: SHA256:88ucGj5+U+RVWV/qFKoUnicqFge8g6tepSgflyivAz8
2024-04-01 13:58:11 [366431215691776-centos-interface-1209] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 657ms, All 657ms].
2024-04-01 13:58:11 [sshd-SshClient[5edc276b]-nio2-thread-60] WARN  org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /10.1.33.14:22 presented unverified EC key: SHA256:88ucGj5+U+RVWV/qFKoUnicqFge8g6tepSgflyivAz8
2024-04-01 13:58:12 [366431215691776-centos-disk_free-1866] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 652ms, All 652ms].
2024-04-01 13:58:12 [sshd-SshClient[5edc276b]-nio2-thread-74] WARN  org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /10.1.33.14:22 presented unverified EC key: SHA256:88ucGj5+U+RVWV/qFKoUnicqFge8g6tepSgflyivAz8
2024-04-01 13:58:13 [366431215691776-centos-top_cpu_process-2518] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 720ms, All 720ms].
2024-04-01 13:58:13 [sshd-SshClient[5edc276b]-nio2-thread-88] WARN  org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /10.1.33.14:22 presented unverified EC key: SHA256:88ucGj5+U+RVWV/qFKoUnicqFge8g6tepSgflyivAz8
2024-04-01 13:58:13 [365461757417472-redis-server-3555] INFO  org.dromara.hertzbeat.collector.dispatch.MetricsCollect - [Collect Success, Run 2ms, All 2ms].

Expected Behavior

No response

Steps To Reproduce

No response

Environment

HertzBeat version(s):

Debug logs

No response

Anything else?

No response

tomsun28 commented 6 months ago

here we should consider the statusPageHistories size is 0

    private StatusPageHistory combineOneDayStatusPageHistory(List<StatusPageHistory> statusPageHistories, StatusPageComponent component, long nowTimestamp) {
        if (statusPageHistories.size() == 1) {
            return statusPageHistories.get(0);
        }
        StatusPageHistory oldOne = statusPageHistories.get(0);
makechoicenow commented 6 months ago

I will fix this.