This is an automated email from the ASF dual-hosted git repository.
kezhenxu94 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-showcase.git
The following commit(s) were added to refs/heads/main by this push:
new 39d3837 Fix UI services tracing not work
39d3837 is described below
commit 39d38379ed88b53c404b52d9afe773c27db5ac43
Author: kezhenxu94 <[email protected]>
AuthorDate: Mon Nov 8 13:59:56 2021 +0800
Fix UI services tracing not work
---
services/app/package-lock.json | 106 +++++++++++++++++++++++++++++++++++++++++
services/app/package.json | 3 +-
services/app/server/index.js | 15 +++---
services/app/ui/src/index.js | 1 -
4 files changed, 117 insertions(+), 8 deletions(-)
diff --git a/services/app/package-lock.json b/services/app/package-lock.json
index 5e60eec..edb9c39 100644
--- a/services/app/package-lock.json
+++ b/services/app/package-lock.json
@@ -4,6 +4,19 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@types/http-proxy": {
+ "version": "1.17.7",
+ "resolved":
"https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz",
+ "integrity":
"sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/node": {
+ "version": "16.11.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz",
+ "integrity":
"sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w=="
+ },
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@@ -43,6 +56,14 @@
"type-is": "~1.6.17"
}
},
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity":
"sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
"bytes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -109,6 +130,11 @@
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
+ "eventemitter3": {
+ "version": "4.0.7",
+ "resolved":
"https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity":
"sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+ },
"express": {
"version": "4.17.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
@@ -146,6 +172,14 @@
"vary": "~1.1.2"
}
},
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved":
"https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity":
"sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
"finalhandler": {
"version": "1.1.2",
"resolved":
"https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -187,6 +221,28 @@
"toidentifier": "1.0.0"
}
},
+ "http-proxy": {
+ "version": "1.18.1",
+ "resolved":
"https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity":
"sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "requires": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "2.0.1",
+ "resolved":
"https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz",
+ "integrity":
"sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==",
+ "requires": {
+ "@types/http-proxy": "^1.17.5",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ }
+ },
"iconv-lite": {
"version": "0.4.24",
"resolved":
"https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -205,6 +261,29 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity":
"sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved":
"https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity":
"sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity":
"sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "is-plain-obj": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity":
"sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="
+ },
"media-typer": {
"version": "0.3.0",
"resolved":
"https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -220,6 +299,15 @@
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
+ "micromatch": {
+ "version": "4.0.4",
+ "resolved":
"https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+ "integrity":
"sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+ "requires": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.2.3"
+ }
+ },
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@@ -266,6 +354,11 @@
"resolved":
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
+ "picomatch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+ "integrity":
"sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw=="
+ },
"proxy-addr": {
"version": "2.0.7",
"resolved":
"https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -296,6 +389,11 @@
"unpipe": "1.0.0"
}
},
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved":
"https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved":
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -354,6 +452,14 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved":
"https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity":
"sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
"toidentifier": {
"version": "1.0.0",
"resolved":
"https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
diff --git a/services/app/package.json b/services/app/package.json
index acc9a45..c323ef9 100644
--- a/services/app/package.json
+++ b/services/app/package.json
@@ -12,6 +12,7 @@
"license": "Apache-2.0",
"dependencies": {
"axios": "^0.24.0",
- "express": "^4.17.1"
+ "express": "^4.17.1",
+ "http-proxy-middleware": "^2.0.1"
}
}
diff --git a/services/app/server/index.js b/services/app/server/index.js
index 5a10413..49b355b 100644
--- a/services/app/server/index.js
+++ b/services/app/server/index.js
@@ -19,9 +19,12 @@
*/
const path = require('path');
const express = require('express');
+const { createProxyMiddleware } = require('http-proxy-middleware');
const axios = require('axios');
const {default: agent} = require('skywalking-backend-js');
+const oapHttpAddress = 'http://oap:12800'
+
// @feature: nodejs-agent-backend;
agent.start({
serviceName: 'app',
@@ -35,7 +38,11 @@ const app = express();
app.use(express.static(path.resolve(__dirname, '../ui/build')));
-app.get("/homepage", async (req, res) => {
+// @feature: nodejs-agent-frontend; you need to proxy the path '/browser/*'
and '/v3/*' in UI to the OAP 12800 endpoint. You can use reverse proxy like
Nginx or anything similar.
+app.use('/browser', createProxyMiddleware({ target: oapHttpAddress }))
+app.use('/v3', createProxyMiddleware({ target: oapHttpAddress }))
+
+app.get('/homepage', async (req, res) => {
const top = await axios.get(`http://${GATEWAY}/songs/top`);
const rcmd = await axios.get(`http://${GATEWAY}/rcmd`);
@@ -45,14 +52,10 @@ app.get("/homepage", async (req, res) => {
});
});
-app.get("/health", async (req, res) => {
+app.get('/health', async (req, res) => {
res.json({healthy: true});
});
-app.get('*', (req, res) => {
- res.sendFile(path.resolve(__dirname, '../ui/build', 'index.html'));
-});
-
app.listen(PORT, () => {
console.log(`Server listening on ${PORT}`);
});
diff --git a/services/app/ui/src/index.js b/services/app/ui/src/index.js
index b222d48..9e58cf8 100644
--- a/services/app/ui/src/index.js
+++ b/services/app/ui/src/index.js
@@ -28,7 +28,6 @@ const OAP = process.env.OAP || 'oap';
// @feature: nodejs-agent-frontend;
ClientMonitor.register({
- collector: `http://${OAP}:12800`,
service: 'ui',
pagePath: '/homepage',
serviceVersion: 'v1.0.0',