From 7135414c3cc0abd0ce96ef8cb8cc35a362889585 Mon Sep 17 00:00:00 2001 From: zhang-wei Date: Wed, 23 Sep 2020 18:48:06 +0800 Subject: [PATCH] Fixed some bugs with browser-recevier (#5543) --- apm-dist-es7/src/main/assembly/binary-es7.xml | 1 + apm-dist/src/main/assembly/binary.xml | 1 + docs/en/protocols/Browser-HTTP-API-Protocol.md | 12 ++++++------ docs/en/setup/backend/backend-receivers.md | 1 + docs/en/setup/backend/configuration-vocabulary.md | 2 ++ oap-server/server-bootstrap/pom.xml | 1 + .../src/main/resources/application.yml | 2 ++ .../server/core/analysis/metrics/RateMetrics.java | 3 +++ .../browser/provider/BrowserServiceModuleConfig.java | 4 ++-- .../handler/grpc/BrowserPerfServiceHandler.java | 2 +- .../BrowserErrorLogReportBaseServletHandler.java | 4 ++++ .../rest/BrowserPerfDataReportServletHandler.java | 5 ++++- .../errorlog/listener/ErrorLogRecordListener.java | 9 +++++---- 13 files changed, 33 insertions(+), 14 deletions(-) diff --git a/apm-dist-es7/src/main/assembly/binary-es7.xml b/apm-dist-es7/src/main/assembly/binary-es7.xml index d810ea049..abb059f51 100644 --- a/apm-dist-es7/src/main/assembly/binary-es7.xml +++ b/apm-dist-es7/src/main/assembly/binary-es7.xml @@ -52,6 +52,7 @@ service-apdex-threshold.yml endpoint-name-grouping.yml ui-initialized-templates.yml + oal/browser.oal oal/core.oal oal/java-agent.oal oal/dotnet-agent.oal diff --git a/apm-dist/src/main/assembly/binary.xml b/apm-dist/src/main/assembly/binary.xml index e01fd8230..dbc0ab4b9 100644 --- a/apm-dist/src/main/assembly/binary.xml +++ b/apm-dist/src/main/assembly/binary.xml @@ -52,6 +52,7 @@ service-apdex-threshold.yml ui-initialized-templates.yml endpoint-name-grouping.yml + oal/browser.oal oal/core.oal oal/java-agent.oal oal/dotnet-agent.oal diff --git a/docs/en/protocols/Browser-HTTP-API-Protocol.md b/docs/en/protocols/Browser-HTTP-API-Protocol.md index 25d2e161c..f33b99b27 100644 --- a/docs/en/protocols/Browser-HTTP-API-Protocol.md +++ b/docs/en/protocols/Browser-HTTP-API-Protocol.md @@ -37,9 +37,7 @@ Input: OutPut: -```json - -``` +Http Status: 204 ## Error Log Report @@ -80,6 +78,10 @@ Input: ] ``` +OutPut: + +Http Status: 204 + ### POST http://localhost:12800/browser/errorLog Send a single error log object with JSON format. @@ -103,6 +105,4 @@ Input: OutPut: -```json - -``` +Http Status: 204 diff --git a/docs/en/setup/backend/backend-receivers.md b/docs/en/setup/backend/backend-receivers.md index 88aa26dfd..ad9e67b33 100644 --- a/docs/en/setup/backend/backend-receivers.md +++ b/docs/en/setup/backend/backend-receivers.md @@ -65,6 +65,7 @@ receiver-profile: receiver-browser: selector: ${SW_RECEIVER_BROWSER:default} default: + sampleRate: ${SW_RECEIVER_BROWSER_SAMPLE_RATE:10000} ``` ## gRPC/HTTP server for receiver diff --git a/docs/en/setup/backend/configuration-vocabulary.md b/docs/en/setup/backend/configuration-vocabulary.md index b56366b41..09a7c73b3 100644 --- a/docs/en/setup/backend/configuration-vocabulary.md +++ b/docs/en/setup/backend/configuration-vocabulary.md @@ -198,6 +198,8 @@ core|default|role|Option values, `Mixed/Receiver/Aggregator`. **Receiver** mode | - | - | topicNameOfProfiling | Specifying Kafka topic name for Profiling data. | - | skywalking-profilings | | - | - | topicNameOfTracingSegments | Specifying Kafka topic name for Tracing data. | - | skywalking-segments | | - | - | topicNameOfManagements | Specifying Kafka topic name for service instance reporting and registering. | - | skywalking-managements | +| receiver-browser | default | Read [receiver doc](backend-receivers.md) for more details | - | - | - | +| - | - | sampleRate | Sampling rate for receiving trace. The precision is 1/10000. 10000 means 100% sample in default. | SW_RECEIVER_BROWSER_SAMPLE_RATE | 10000 | | query | graphql | - | GraphQL query implementation | - | | - | - | path | Root path of GraphQL query and mutation. | SW_QUERY_GRAPHQL_PATH | /graphql| | alarm | default | - | Read [alarm doc](backend-alarm.md) for more details. | - | diff --git a/oap-server/server-bootstrap/pom.xml b/oap-server/server-bootstrap/pom.xml index d3a369b0f..47f233c49 100644 --- a/oap-server/server-bootstrap/pom.xml +++ b/oap-server/server-bootstrap/pom.xml @@ -258,6 +258,7 @@ service-apdex-threshold.yml endpoint-name-grouping.yml ui-initialized-templates.yml + oal/browser.oal oal/core.oal oal/java-agent.oal oal/dotnet-agent.oal diff --git a/oap-server/server-bootstrap/src/main/resources/application.yml b/oap-server/server-bootstrap/src/main/resources/application.yml index e48e487a7..ddec44c70 100755 --- a/oap-server/server-bootstrap/src/main/resources/application.yml +++ b/oap-server/server-bootstrap/src/main/resources/application.yml @@ -284,6 +284,8 @@ receiver_jaeger: receiver-browser: selector: ${SW_RECEIVER_BROWSER:default} default: + # The sample rate precision is 1/10000. 10000 means 100% sample in default. + sampleRate: ${SW_RECEIVER_BROWSER_SAMPLE_RATE:10000} query: selector: ${SW_QUERY:graphql} diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/RateMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/RateMetrics.java index d4cedb692..df77f3b7e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/RateMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/RateMetrics.java @@ -62,6 +62,9 @@ public abstract class RateMetrics extends Metrics implements IntValueHolder { @Override public void calculate() { + if (denominator == 0) { + return; + } percentage = (int) (numerator * 10000 / denominator); } diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/BrowserServiceModuleConfig.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/BrowserServiceModuleConfig.java index 7d9974f3d..6b3233aab 100644 --- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/BrowserServiceModuleConfig.java +++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/BrowserServiceModuleConfig.java @@ -21,11 +21,11 @@ import lombok.Getter; import lombok.Setter; import org.apache.skywalking.oap.server.library.module.ModuleConfig; +@Setter +@Getter public class BrowserServiceModuleConfig extends ModuleConfig { /** * The sample rate precision is 1/10000. 10000 means 100% sample in default. */ - @Setter - @Getter private int sampleRate = 10000; } diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/grpc/BrowserPerfServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/grpc/BrowserPerfServiceHandler.java index 7be64380e..8368a454f 100644 --- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/grpc/BrowserPerfServiceHandler.java +++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/grpc/BrowserPerfServiceHandler.java @@ -37,7 +37,7 @@ import org.apache.skywalking.oap.server.telemetry.api.MetricsCreator; import org.apache.skywalking.oap.server.telemetry.api.MetricsTag; /** - * Collect and process the performance and error log. + * Collect and process the performance data and error log. */ @Slf4j public class BrowserPerfServiceHandler extends BrowserPerfServiceGrpc.BrowserPerfServiceImplBase implements GRPCHandler { diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserErrorLogReportBaseServletHandler.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserErrorLogReportBaseServletHandler.java index ccf7c8040..ce7d7a6b1 100644 --- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserErrorLogReportBaseServletHandler.java +++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserErrorLogReportBaseServletHandler.java @@ -35,6 +35,9 @@ import org.apache.skywalking.oap.server.telemetry.api.HistogramMetrics; import org.apache.skywalking.oap.server.telemetry.api.MetricsCreator; import org.apache.skywalking.oap.server.telemetry.api.MetricsTag; +/** + * Collect and process the error log + */ @Slf4j public abstract class BrowserErrorLogReportBaseServletHandler extends JettyHandler { private final ModuleManager moduleManager; @@ -84,6 +87,7 @@ public abstract class BrowserErrorLogReportBaseServletHandler extends JettyHandl ErrorLogAnalyzer analyzer = new ErrorLogAnalyzer(moduleManager, errorLogListenerManager, config); analyzer.doAnalysis(browserErrorLog); } + resp.setStatus(HttpServletResponse.SC_NO_CONTENT); } catch (Throwable e) { log.error(e.getMessage(), e); logErrorCounter.inc(); diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserPerfDataReportServletHandler.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserPerfDataReportServletHandler.java index e0bec011e..2a6770694 100644 --- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserPerfDataReportServletHandler.java +++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserPerfDataReportServletHandler.java @@ -36,6 +36,9 @@ import org.apache.skywalking.oap.server.telemetry.api.HistogramMetrics; import org.apache.skywalking.oap.server.telemetry.api.MetricsCreator; import org.apache.skywalking.oap.server.telemetry.api.MetricsTag; +/** + * Collect and process the performance data + */ @Slf4j public class BrowserPerfDataReportServletHandler extends JettyHandler { private final ModuleManager moduleManager; @@ -55,7 +58,6 @@ public class BrowserPerfDataReportServletHandler extends JettyHandler { MetricsCreator metricsCreator = moduleManager.find(TelemetryModule.NAME) .provider() .getService(MetricsCreator.class); - perfHistogram = metricsCreator.createHistogramMetric( "browser_perf_data_in_latency", "The process latency of browser performance data", new MetricsTag.Keys("protocol"), new MetricsTag.Values("http") @@ -84,6 +86,7 @@ public class BrowserPerfDataReportServletHandler extends JettyHandler { BrowserPerfData browserPerfData = parseBrowserPerfData(req); PerfDataAnalyzer analyzer = new PerfDataAnalyzer(moduleManager, perfDataListenerManager, config); analyzer.doAnalysis(browserPerfData); + resp.setStatus(HttpServletResponse.SC_NO_CONTENT); } catch (Throwable e) { log.error(e.getMessage(), e); perfErrorCounter.inc(); diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/errorlog/listener/ErrorLogRecordListener.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/errorlog/listener/ErrorLogRecordListener.java index 216875db8..793a0763f 100644 --- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/errorlog/listener/ErrorLogRecordListener.java +++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/errorlog/listener/ErrorLogRecordListener.java @@ -78,16 +78,17 @@ public class ErrorLogRecordListener implements ErrorLogAnalysisListener { // service String serviceName = namingControl.formatServiceName(decorator.getService()); - errorLog.setServiceId(IDManager.ServiceID.buildId(serviceName, NodeType.Browser)); + String serviceId = IDManager.ServiceID.buildId(serviceName, NodeType.Browser); + errorLog.setServiceId(serviceId); // service version - String serviceVersionName = namingControl.formatInstanceName(decorator.getServiceVersion()); - errorLog.setServiceVersionId(IDManager.ServiceInstanceID.buildId(serviceName, serviceVersionName)); + errorLog.setServiceVersionId(IDManager.ServiceInstanceID.buildId(serviceId, namingControl.formatInstanceName( + decorator.getServiceVersion()))); // page String pagePath = namingControl.formatEndpointName(serviceName, decorator.getPagePath()); errorLog.setPagePath(pagePath); - errorLog.setPagePathId(IDManager.EndpointID.buildId(serviceName, pagePath)); + errorLog.setPagePathId(IDManager.EndpointID.buildId(serviceId, pagePath)); // raw data errorLog.setErrorCategory(BrowserErrorCategory.fromErrorCategory(decorator.getCategory()));