Как запросить показатели, хранящиеся в таблице Azure WADMETRICS? - PullRequest
0 голосов
/ 23 октября 2019

Использование Расширенные метрики Я пытаюсь получить определенные метрики для определенных VMS. Кажется, что каждый запрос занимает очень много времени, поскольку для каждой виртуальной машины каждые 15 секунд в таблице создаются новые записи.

Поэтому я пытаюсь выполнить запрос к таблице за последние 5 минут, но она не работает и даетмне ошибка. Кто-нибудь знает, как запросить эти таблицы WADMETRICS?

Мой код.

        CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
        CloudTableClient cloudTableClient = account.createCloudTableClient();
        DateTime fiveMinutesAgo = DateTime.now().minusMinutes(5);
        String queryString = TableQuery.generateFilterCondition("Timestamp", TableQuery.QueryComparisons.GREATER_THAN_OR_EQUAL, fiveMinutesAgo.toString());
        TableQuery<TableServiceEntity> query = TableQuery.from(TableServiceEntity.class).where(queryString);

        CloudTable table = cloudTableClient.getTableReference("WADMetricsPT1MP10DV2S20191017");
        System.out.println(table.exists());
        System.out.println(table.getName());
        for (TableServiceEntity entity : table.execute(query)) {
            System.out.println(entity.getPartitionKey() + "\t" + entity.getRowKey());
        }

Что я получаю, когда запускаю это.

Произошла ошибка приперечисляя результат, проверьте исходное исключение для деталей. java.util.NoSuchElementException: ошибка произошла при перечислении результата, проверьте исходное исключение для деталей. по адресу com.microsoft.azure.storage.core.LazySegmentedIterator.hasNext (LazySegmentedIterator.java:113) по адресу com.optum.oea.workbench.service.RemoteAzureService.getVmMetric (RemoteAzureService.joe.opum.ena).service.RemoteAzureService.getVmMetric (RemoteAzureService.java:120) в com.optum.oea.workbench.controller.MetricsController.getMetric (MetricsController.java:75) в sun.reflect.NativeMethorein.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Methowe.rag.rag.rag.rag. method.support.InvocableHandlerMethod. ServletInvocableHandlerMethod.invokeAndHandle (ServletInvocableHandlerMethod.java:104) в org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod (RequestMappingHandlerAdapter.java:892) в org.springframele. RequestMappingHandlerAdapter.java:797) в org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle (AbstractHandlerMethodAdapter.java:87) в org.springframework.web.servlet.Disparter.springframework.web.servlet.DispatcherServlet. .java: 897) по адресу javax.servlet.http.HttpServlet.service (HttpServlet.java:634) по адресу org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:882) по адресу javax.servlet.perv.httpсервис (HttpServlet.java:741) по адресу org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:231) по адресу org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.jtgt: 6): 16).websocket.server.WsFilter. : 166) по адресу org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal (HttpTraceFilter.java:88) по адресу org.springframework.web.filter.OncePerRequestFilter.doFilter:apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в com.optum. WorkbenchAttestationFilter.java:33) в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:118)по адресу org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) по адресу org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166.haf.FineFireFireFireFireFireSheFFF).doFilter (FilterChainProxy.java:320) при org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:127) в org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java: 91) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) в org.springframework.security.web.access.ExceptionTranslationFilter.doFilter: org). springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) в org.springframework.security.web.session.SessionManagementFilter.doFilter (SessionManagementFilter.javag: at7)ingframework.security.web. VirtualFilterChain.doFilter (FilterChainProxy.java:334) на org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:1334) по адресу org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter (RequestCacheAwareFilter.java:63) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilt. Com.haj. Comahaj. Comahaj. Comahaj. Comahaj. Comahaj. Comahaj. Comahaj. Comahaj. Comahaj. Coma. Com.aa. .workbench.config.AuthenticationFilter.doFilter (AuthenticationFilter.java:65) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) в org.springframework.security.web.authentication.logout.LogoutFilter.doFilter (LogoutFilter.java:116) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFinter.jfпо адресу org.springframework.security.web.csrf.CsrfFilter.doFilterInternal (CsrfFilter.java:100) по адресу org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.ramehaf.serg.serg.service.pr.serg.serg.service.pr.serg.serg.serg: 11$ VirtualFilterChain.doFilter (FilterChainProxy.java:334) в org.springframework.web.filter.CorsFilter.doFilterInternal (CorsFilter.java:96) в org.springframework.web.filter.OncePerRequestFilterFerterFerter.Filter. org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) в org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal (HeaderWritava.spr. orf. OncePerRequestFilter.doFilter (OncePerRequestFilter.java: 118) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) по адресу org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilker.pr: org (5)security.web. OncePerRequestFilter.doFilter (OncePerRequestFilter.java:118) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334)по адресу org.springframework.security.web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:215) по адресу org.springframework.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:178), юридический центр(DelegatingFilterProxy.java:357) по адресу org.springframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:270) по адресу org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilg: 19 atjap.hag). catalina.core. web.servlet.WebMvcMetricsFilter.doFilterInternal (WebMvcMetricsFilter.java:104) в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:118). cationFilterChain.java:193) в org.apache.catalina.core. .filter. ) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:202) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:96) в org.apachenticatorAaseina. invoke (AuthenticatorBase.java:490) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:139) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java.ache at at).catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:74) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:343) в org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:408) в org. .AbstractProcessorLight.process (AbstractProcessorLight.java:66) в org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:853) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint): 1587) на org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) на java.util.concolWorker.run (ThreadPoolExecutor.java:624) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:748), вызванный: com.microsoft.azure.storage.table.TableServiceException: неверный запрос в com.microsoft.azure.storage.table.TableServiceException.generateTableServiceException (TableServiceException.java:52) на com.microsoft.azure.storage.table.CloudTableClient $ 2.preProcessResponse (CloudTableClient.java:415) на com.microsoft.azure.storage.table.CloudTableClient $ 2.preProcessResponse (CloudTableClient.java:3)в com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry (ExecutionEngine.java:138) в com.microsoft.azure.storage.core.LazySegmentedIterator.hasNext (LazySegmentedIterator.java:109)

1013 *

1 Ответ

1 голос
/ 24 октября 2019

Согласно моему тесту, если вы хотите запросить таблицы WADMETRICS , отфильтровав временную таблицу, обратитесь к следующему коду:

 CloudStorageAccount account = CloudStorageAccount.parse("connection string");
        CloudTableClient client = account.createCloudTableClient();

        CloudTable table = client.getTableReference("WADMetricsPT1MP10DV2S20191017");
        System.out.println(table.exists());
        System.out.println(table.getName());





        Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
        cal.add(Calendar.HOUR, -19);
        cal.add(Calendar.MINUTE,-21);
        Date date = cal.getTime();
//        SimpleDateFormat df = new  SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'");
//        date = df.parse(df.format(date));
//
        System.out.println(date.toString());



        String queryString = TableQuery.generateFilterCondition("Timestamp",TableQuery.QueryComparisons.GREATER_THAN_OR_EQUAL, date);

        TableQuery<TableServiceEntity> query = TableQuery.from(TableServiceEntity.class).where(queryString);
        Iterable<TableServiceEntity> results = table.execute(query);
        int i=0;
        for (TableServiceEntity  entity:results
             ) {
            i +=1;
            System.out.println(entity.getPartitionKey());
        }

        System.out.println(i); 

enter image description here

Кроме того, вы также можете запросить у вас таблицу Azure на портале: enter image description here

...