You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2022/10/07 13:09:36 UTC
[skywalking] branch master updated: Support skywalking-client-js report empty `service version` and `page path` (#9735)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new ba84b8af3e Support skywalking-client-js report empty `service version` and `page path` (#9735)
ba84b8af3e is described below
commit ba84b8af3e52bc48f5c3441dc90a237e070af664
Author: 吴晟 Wu Sheng <wu...@foxmail.com>
AuthorDate: Fri Oct 7 21:09:24 2022 +0800
Support skywalking-client-js report empty `service version` and `page path` (#9735)
---
docs/en/changes/changes.md | 15 ++++--
.../performance/BrowserPerfDataDecorator.java | 58 +++++++++++-----------
.../parser/performance/PerfDataAnalyzer.java | 13 +++++
3 files changed, 52 insertions(+), 34 deletions(-)
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 25db4ed4da..eb9cba8c25 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -20,15 +20,19 @@
in `no-init` mode.
* Make sure instance list ordered in TTL processor to avoid TTL timer never runs.
* Support monitoring PostgreSQL slow SQLs.
-* [**Breaking Change**] Support sharding MySQL database instances and tables by [Shardingsphere-Proxy](https://shardingsphere.apache.org/document/current/en/overview/#shardingsphere-proxy).
- SQL-Database requires removing tables `log_tag/segment_tag/zipkin_query` before OAP starts, if bump up from previous releases.
+* [**Breaking Change**] Support sharding MySQL database instances and tables
+ by [Shardingsphere-Proxy](https://shardingsphere.apache.org/document/current/en/overview/#shardingsphere-proxy).
+ SQL-Database requires removing tables `log_tag/segment_tag/zipkin_query` before OAP starts, if bump up from previous
+ releases.
* Fix meter functions `avgHistogram`, `avgHistogramPercentile`, `avgLabeled`, `sumHistogram` having data conflict when
downsampling.
* Do sorting `readLabeledMetricsValues` result forcedly in case the storage(database) doesn't return data consistent
with the parameter list.
-* Fix the wrong watch semantics in Kubernetes watchers, which causes heavy traffic to API server in some Kubernetes clusters,
+* Fix the wrong watch semantics in Kubernetes watchers, which causes heavy traffic to API server in some Kubernetes
+ clusters,
we should use `Get State and Start at Most Recent` semantic instead of `Start at Exact`
- because we don't need the changing history events, see https://kubernetes.io/docs/reference/using-api/api-concepts/#semantics-for-watch.
+ because we don't need the changing history events,
+ see https://kubernetes.io/docs/reference/using-api/api-concepts/#semantics-for-watch.
* Unify query services and DAOs codes time range condition to `Duration`.
* [**Breaking Change**]: Remove prometheus-fetcher plugin, please use OpenTelemetry to scrape Prometheus metrics and
set up SkyWalking OpenTelemetry receiver instead.
@@ -39,6 +43,9 @@
(explicit_bounds[i-1], +infinity) for i == size(explicit_bounds)
```
* Add APISIX metrics monitoring
+* Support skywalking-client-js report empty `service version` and `page path` , set default version as `latest` and
+ default page path as `/`(root). Fix the
+ error `fetching data (/browser_app_page_pv0) : Can't split endpoint id into 2 parts`.
#### UI
diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/BrowserPerfDataDecorator.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/BrowserPerfDataDecorator.java
index f486375902..119c6f3229 100644
--- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/BrowserPerfDataDecorator.java
+++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/BrowserPerfDataDecorator.java
@@ -17,98 +17,96 @@
package org.apache.skywalking.oap.server.receiver.browser.provider.parser.performance;
-import lombok.RequiredArgsConstructor;
import org.apache.skywalking.apm.network.language.agent.v3.BrowserPerfData;
-@RequiredArgsConstructor
public class BrowserPerfDataDecorator {
- private boolean isOrigin = true;
- private final BrowserPerfData browserPerfData;
private BrowserPerfData.Builder builder;
+ public BrowserPerfDataDecorator(final BrowserPerfData browserPerfData) {
+ this.builder = browserPerfData.toBuilder();
+ }
+
public String getService() {
- return isOrigin ? browserPerfData.getService() : builder.getService();
+ return builder.getService();
}
public String getServiceVersion() {
- return isOrigin ? browserPerfData.getServiceVersion() : builder.getServiceVersion();
+ return builder.getServiceVersion();
}
public long getTime() {
- return isOrigin ? browserPerfData.getTime() : builder.getTime();
+ return builder.getTime();
}
public String getPagePath() {
- return isOrigin ? browserPerfData.getPagePath() : builder.getPagePath();
+ return builder.getPagePath();
}
public int getRedirectTime() {
- return isOrigin ? browserPerfData.getRedirectTime() : builder.getRedirectTime();
+ return builder.getRedirectTime();
}
public int getDnsTime() {
- return isOrigin ? browserPerfData.getDnsTime() : builder.getDnsTime();
+ return builder.getDnsTime();
}
public int getTtfbTime() {
- return isOrigin ? browserPerfData.getTtfbTime() : builder.getTtfbTime();
+ return builder.getTtfbTime();
}
public int getTcpTime() {
- return isOrigin ? browserPerfData.getTcpTime() : builder.getTcpTime();
+ return builder.getTcpTime();
}
public int getTransTime() {
- return isOrigin ? browserPerfData.getTransTime() : builder.getTransTime();
+ return builder.getTransTime();
}
public int getDomAnalysisTime() {
- return isOrigin ? browserPerfData.getDomAnalysisTime() : builder.getDomAnalysisTime();
+ return builder.getDomAnalysisTime();
}
public int getFptTime() {
- return isOrigin ? browserPerfData.getFptTime() : builder.getFptTime();
+ return builder.getFptTime();
}
public int getDomReadyTime() {
- return isOrigin ? browserPerfData.getDomReadyTime() : builder.getDomReadyTime();
+ return builder.getDomReadyTime();
}
public int getLoadPageTime() {
- return isOrigin ? browserPerfData.getLoadPageTime() : builder.getLoadPageTime();
+ return builder.getLoadPageTime();
}
public int getResTime() {
- return isOrigin ? browserPerfData.getResTime() : builder.getResTime();
+ return builder.getResTime();
}
public int getSslTime() {
- return isOrigin ? browserPerfData.getSslTime() : builder.getSslTime();
+ return builder.getSslTime();
}
public int getTtlTime() {
- return isOrigin ? browserPerfData.getTtlTime() : builder.getTtlTime();
+ return builder.getTtlTime();
}
public int getFirstPackTime() {
- return isOrigin ? browserPerfData.getFirstPackTime() : builder.getFirstPackTime();
+ return builder.getFirstPackTime();
}
public int getFmpTime() {
- return isOrigin ? browserPerfData.getFmpTime() : builder.getFmpTime();
+ return builder.getFmpTime();
}
public void setTime(long time) {
- if (isOrigin) {
- toBuilder();
- }
builder.setTime(time);
}
- void toBuilder() {
- if (isOrigin) {
- this.isOrigin = false;
- this.builder = browserPerfData.toBuilder();
- }
+ public void setServiceVersion(String version) {
+ builder.setServiceVersion(version);
+ }
+
+ public void setPagePath(String pagePath) {
+ builder.setPagePath(pagePath);
}
}
diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/PerfDataAnalyzer.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/PerfDataAnalyzer.java
index f99a2e4cd9..f39a948025 100644
--- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/PerfDataAnalyzer.java
+++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/PerfDataAnalyzer.java
@@ -23,6 +23,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.apm.network.language.agent.v3.BrowserPerfData;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
import org.apache.skywalking.oap.server.receiver.browser.provider.BrowserServiceModuleConfig;
import org.apache.skywalking.oap.server.receiver.browser.provider.parser.performance.listener.PerfDataAnalysisListener;
@@ -36,12 +37,24 @@ public class PerfDataAnalyzer {
private final List<PerfDataAnalysisListener> analysisListeners = new LinkedList<>();
public void doAnalysis(BrowserPerfData browserPerfData) {
+ if (StringUtil.isBlank(browserPerfData.getService())) {
+ return;
+ }
+
createAnalysisListeners();
BrowserPerfDataDecorator decorator = new BrowserPerfDataDecorator(browserPerfData);
// Use the server side current time.
long nowMillis = System.currentTimeMillis();
decorator.setTime(nowMillis);
+ if (StringUtil.isBlank(decorator.getServiceVersion())) {
+ // Set the default version as latest, considering it is running.
+ decorator.setServiceVersion("latest");
+ }
+ if (StringUtil.isBlank(decorator.getPagePath())) {
+ // Set the default page path as root(/).
+ decorator.setPagePath("/");
+ }
notifyListener(decorator);