feat(chalice): health-check
feat(assist): health-check feat(peers): health-check feat(sourcemaps-reader): health-check
This commit is contained in:
parent
c1ec53c39e
commit
c07474bdfa
25 changed files with 296 additions and 89 deletions
|
|
@ -31,7 +31,7 @@ else:
|
|||
HEALTH_ENDPOINTS = {
|
||||
"alerts": "http://alerts-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"assets": "http://assets-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"assist": "http://assist-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"assist": "http://assist-openreplay.app.svc.cluster.local:8888/health",
|
||||
"chalice": "http://chalice-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"db": "http://db-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"ender": "http://ender-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
|
|
@ -40,12 +40,11 @@ else:
|
|||
"http": "http://http-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"ingress-nginx": "http://ingress-nginx-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"integrations": "http://integrations-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"peers": "http://peers-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"peers": "http://peers-openreplay.app.svc.cluster.local:8888/health",
|
||||
"quickwit": "http://quickwit-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"sink": "http://sink-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"sourcemapreader": "http://sourcemapreader-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"sourcemapreader": "http://sourcemapreader-openreplay.app.svc.cluster.local:8888/health",
|
||||
"storage": "http://storage-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"utilities": "http://utilities-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -172,8 +171,7 @@ def get_health():
|
|||
"quickwit": __check_be_service("quickwit"),
|
||||
"sink": __check_be_service("sink"),
|
||||
"sourcemapreader": __check_be_service("sourcemapreader"),
|
||||
"storage": __check_be_service("storage"),
|
||||
"utilities": __check_be_service("utilities")
|
||||
"storage": __check_be_service("storage")
|
||||
},
|
||||
# "overall": {
|
||||
# "health": "na",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "assist-server",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0",
|
||||
"description": "assist server to get live sessions & sourcemaps reader to get stack trace",
|
||||
"main": "peerjs-server.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ const dumps = require('./utils/HeapSnapshot');
|
|||
const express = require('express');
|
||||
const socket = require("./servers/websocket");
|
||||
const {request_logger} = require("./utils/helper");
|
||||
const health = require("./utils/health");
|
||||
const assert = require('assert').strict;
|
||||
|
||||
const debug = process.env.debug === "1";
|
||||
|
|
@ -10,7 +11,7 @@ const HOST = process.env.LISTEN_HOST || '0.0.0.0';
|
|||
const PORT = process.env.LISTEN_PORT || 9001;
|
||||
assert.ok(process.env.ASSIST_KEY, 'The "ASSIST_KEY" environment variable is required');
|
||||
const P_KEY = process.env.ASSIST_KEY;
|
||||
const PREFIX = process.env.PREFIX || process.env.prefix || `/assist`
|
||||
const PREFIX = process.env.PREFIX || process.env.prefix || `/assist`;
|
||||
|
||||
const wsapp = express();
|
||||
wsapp.use(express.json());
|
||||
|
|
@ -27,16 +28,9 @@ heapdump && wsapp.use(`${PREFIX}/${P_KEY}/heapdump`, dumps.router);
|
|||
|
||||
const wsserver = wsapp.listen(PORT, HOST, () => {
|
||||
console.log(`WS App listening on http://${HOST}:${PORT}`);
|
||||
console.log('Press Ctrl+C to quit.');
|
||||
health.healthApp.listen(health.PORT, HOST, health.listen_cb);
|
||||
});
|
||||
|
||||
wsapp.enable('trust proxy');
|
||||
socket.start(wsserver);
|
||||
module.exports = {wsserver};
|
||||
|
||||
wsapp.get('/private/shutdown', (req, res) => {
|
||||
console.log("Requested shutdown");
|
||||
res.statusCode = 200;
|
||||
res.end("ok!");
|
||||
process.kill(1, "SIGTERM");
|
||||
}
|
||||
);
|
||||
module.exports = {wsserver};
|
||||
|
|
@ -45,7 +45,22 @@ const respond = function (res, data) {
|
|||
res.setHeader('Content-Type', 'application/json');
|
||||
res.end(JSON.stringify({"data": data}));
|
||||
}
|
||||
|
||||
const countSessions = async function () {
|
||||
let count = 0;
|
||||
try {
|
||||
const arr = Array.from(io.sockets.adapter.rooms);
|
||||
const filtered = arr.filter(room => !room[1].has(room[0]));
|
||||
for (let i of filtered) {
|
||||
let {projectKey, sessionId} = extractPeerId(i[0]);
|
||||
if (projectKey !== null && sessionId !== null) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
const socketsList = async function (req, res) {
|
||||
debug && console.log("[WS]looking for all available sessions");
|
||||
let filters = extractPayloadFromRequest(req);
|
||||
|
|
@ -360,6 +375,7 @@ module.exports = {
|
|||
|
||||
socketConnexionTimeout(io);
|
||||
},
|
||||
countSessions,
|
||||
handlers: {
|
||||
socketsList,
|
||||
socketsListByProject,
|
||||
|
|
|
|||
54
assist/utils/health.js
Normal file
54
assist/utils/health.js
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
const express = require('express');
|
||||
const socket = require("../servers/websocket");
|
||||
const HOST = process.env.LISTEN_HOST || '0.0.0.0';
|
||||
const PORT = process.env.HEALTH_PORT || 8888;
|
||||
|
||||
|
||||
const {request_logger} = require("./helper");
|
||||
const debug = process.env.debug === "1";
|
||||
const respond = function (res, data) {
|
||||
res.statusCode = 200;
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
res.end(JSON.stringify({"data": data}));
|
||||
}
|
||||
|
||||
const check_health = async function (req, res) {
|
||||
debug && console.log("[WS]looking for all available sessions");
|
||||
respond(res, {
|
||||
"health": true,
|
||||
"details": {
|
||||
"version": process.env.npm_package_version,
|
||||
"connectedSessions": await socket.countSessions()
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const healthApp = express();
|
||||
healthApp.use(express.json());
|
||||
healthApp.use(express.urlencoded({extended: true}));
|
||||
healthApp.use(request_logger("[healthApp]"));
|
||||
healthApp.get(['/'], (req, res) => {
|
||||
res.statusCode = 200;
|
||||
res.end("healthApp ok!");
|
||||
}
|
||||
);
|
||||
healthApp.get('/health', check_health);
|
||||
healthApp.get('/shutdown', (req, res) => {
|
||||
console.log("Requested shutdown");
|
||||
res.statusCode = 200;
|
||||
res.end("ok!");
|
||||
process.kill(1, "SIGTERM");
|
||||
}
|
||||
);
|
||||
|
||||
const listen_cb = async function () {
|
||||
console.log(`Health App listening on http://${HOST}:${PORT}`);
|
||||
console.log('Press Ctrl+C to quit.');
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
healthApp,
|
||||
PORT,
|
||||
listen_cb
|
||||
};
|
||||
|
|
@ -32,7 +32,7 @@ else:
|
|||
HEALTH_ENDPOINTS = {
|
||||
"alerts": "http://alerts-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"assets": "http://assets-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"assist": "http://assist-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"assist": "http://assist-openreplay.app.svc.cluster.local:8888/health",
|
||||
"chalice": "http://chalice-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"db": "http://db-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"ender": "http://ender-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
|
|
@ -41,12 +41,11 @@ else:
|
|||
"http": "http://http-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"ingress-nginx": "http://ingress-nginx-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"integrations": "http://integrations-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"peers": "http://peers-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"peers": "http://peers-openreplay.app.svc.cluster.local:8888/health",
|
||||
"quickwit": "http://quickwit-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"sink": "http://sink-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"sourcemapreader": "http://sourcemapreader-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"storage": "http://storage-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"utilities": "http://utilities-openreplay.app.svc.cluster.local:8888/metrics",
|
||||
"sourcemapreader": "http://sourcemapreader-openreplay.app.svc.cluster.local:8888/health",
|
||||
"storage": "http://storage-openreplay.app.svc.cluster.local:8888/metrics"
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -175,8 +174,7 @@ def get_health():
|
|||
"quickwit": __check_be_service("quickwit"),
|
||||
"sink": __check_be_service("sink"),
|
||||
"sourcemapreader": __check_be_service("sourcemapreader"),
|
||||
"storage": __check_be_service("storage"),
|
||||
"utilities": __check_be_service("utilities")
|
||||
"storage": __check_be_service("storage")
|
||||
},
|
||||
# "overall": {
|
||||
# "health": "na",
|
||||
|
|
|
|||
10
ee/assist/package-lock.json
generated
10
ee/assist/package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "assist-server",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0-ee",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "assist-server",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0-ee",
|
||||
"license": "Elastic License 2.0 (ELv2)",
|
||||
"dependencies": {
|
||||
"@maxmind/geoip2-node": "^3.5.0",
|
||||
|
|
@ -117,9 +117,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.14.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz",
|
||||
"integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA=="
|
||||
"version": "18.15.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz",
|
||||
"integrity": "sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw=="
|
||||
},
|
||||
"node_modules/accepts": {
|
||||
"version": "1.3.8",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "assist-server",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0-ee",
|
||||
"description": "assist server to get live sessions & sourcemaps reader to get stack trace",
|
||||
"main": "peerjs-server.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
const dumps = require('./utils/HeapSnapshot');
|
||||
const {request_logger} = require('./utils/helper');
|
||||
const express = require('express');
|
||||
const health = require("./utils/health");
|
||||
const assert = require('assert').strict;
|
||||
|
||||
let socket;
|
||||
|
|
@ -14,7 +15,7 @@ const HOST = process.env.LISTEN_HOST || '0.0.0.0';
|
|||
const PORT = process.env.LISTEN_PORT || 9001;
|
||||
assert.ok(process.env.ASSIST_KEY, 'The "ASSIST_KEY" environment variable is required');
|
||||
const P_KEY = process.env.ASSIST_KEY;
|
||||
const PREFIX = process.env.PREFIX || process.env.prefix || `/assist`
|
||||
const PREFIX = process.env.PREFIX || process.env.prefix || `/assist`;
|
||||
|
||||
let debug = process.env.debug === "1";
|
||||
const heapdump = process.env.heapdump === "1";
|
||||
|
|
@ -31,18 +32,11 @@ if (process.env.uws !== "true") {
|
|||
);
|
||||
heapdump && wsapp.use(`${PREFIX}/${P_KEY}/heapdump`, dumps.router);
|
||||
wsapp.use(`${PREFIX}/${P_KEY}`, socket.wsRouter);
|
||||
wsapp.get('/private/shutdown', (req, res) => {
|
||||
console.log("Requested shutdown");
|
||||
res.statusCode = 200;
|
||||
res.end("ok!");
|
||||
process.kill(1, "SIGTERM");
|
||||
}
|
||||
);
|
||||
|
||||
wsapp.enable('trust proxy');
|
||||
const wsserver = wsapp.listen(PORT, HOST, () => {
|
||||
console.log(`WS App listening on http://${HOST}:${PORT}`);
|
||||
console.log('Press Ctrl+C to quit.');
|
||||
health.healthApp.listen(health.PORT, HOST, health.listen_cb);
|
||||
});
|
||||
|
||||
socket.start(wsserver);
|
||||
|
|
@ -102,13 +96,6 @@ if (process.env.uws !== "true") {
|
|||
uapp.post(`${PREFIX}/${P_KEY}/sockets-live/:projectKey`, uWrapper(socket.handlers.socketsLiveByProject));
|
||||
uapp.get(`${PREFIX}/${P_KEY}/sockets-live/:projectKey/:sessionId`, uWrapper(socket.handlers.socketsLiveByProject));
|
||||
|
||||
uapp.get('/private/shutdown', (res, req) => {
|
||||
console.log("Requested shutdown");
|
||||
res.writeStatus('200 OK').end("ok!");
|
||||
process.kill(1, "SIGTERM");
|
||||
}
|
||||
);
|
||||
|
||||
socket.start(uapp);
|
||||
|
||||
uapp.listen(HOST, PORT, (token) => {
|
||||
|
|
@ -116,7 +103,7 @@ if (process.env.uws !== "true") {
|
|||
console.warn("port already in use");
|
||||
}
|
||||
console.log(`WS App listening on http://${HOST}:${PORT}`);
|
||||
console.log('Press Ctrl+C to quit.');
|
||||
health.healthApp.listen(health.PORT, HOST, health.listen_cb);
|
||||
});
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -83,6 +83,22 @@ const respond = function (res, data) {
|
|||
}
|
||||
}
|
||||
|
||||
const countSessions = async function () {
|
||||
let count = 0;
|
||||
try {
|
||||
let rooms = await io.of('/').adapter.allRooms();
|
||||
for (let i of rooms) {
|
||||
let {projectKey, sessionId} = extractPeerId(i);
|
||||
if (projectKey !== undefined && sessionId !== undefined) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
const socketsList = async function (req, res) {
|
||||
debug && console.log("[WS]looking for all available sessions");
|
||||
let filters = await extractPayloadFromRequest(req, res);
|
||||
|
|
@ -417,6 +433,7 @@ module.exports = {
|
|||
process.exit(2);
|
||||
});
|
||||
},
|
||||
countSessions,
|
||||
handlers: {
|
||||
socketsList,
|
||||
socketsListByProject,
|
||||
|
|
|
|||
|
|
@ -66,6 +66,23 @@ const respond = function (res, data) {
|
|||
}
|
||||
}
|
||||
|
||||
const countSessions = async function () {
|
||||
let count = 0;
|
||||
try {
|
||||
const arr = Array.from(io.sockets.adapter.rooms);
|
||||
const filtered = arr.filter(room => !room[1].has(room[0]));
|
||||
for (let i of filtered) {
|
||||
let {projectKey, sessionId} = extractPeerId(i[0]);
|
||||
if (projectKey !== null && sessionId !== null) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
const socketsList = async function (req, res) {
|
||||
debug && console.log("[WS]looking for all available sessions");
|
||||
let filters = await extractPayloadFromRequest(req, res);
|
||||
|
|
@ -379,6 +396,7 @@ module.exports = {
|
|||
|
||||
socketConnexionTimeout(io);
|
||||
},
|
||||
countSessions,
|
||||
handlers: {
|
||||
socketsList,
|
||||
socketsListByProject,
|
||||
|
|
|
|||
61
ee/assist/utils/health.js
Normal file
61
ee/assist/utils/health.js
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
const express = require('express');
|
||||
let socket;
|
||||
if (process.env.redis === "true") {
|
||||
socket = require("../servers/websocket-cluster");
|
||||
} else {
|
||||
socket = require("../servers/websocket");
|
||||
}
|
||||
const HOST = process.env.LISTEN_HOST || '0.0.0.0';
|
||||
const PORT = process.env.HEALTH_PORT || 8888;
|
||||
|
||||
|
||||
const {request_logger} = require("./helper");
|
||||
const debug = process.env.debug === "1";
|
||||
const respond = function (res, data) {
|
||||
res.statusCode = 200;
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
res.end(JSON.stringify({"data": data}));
|
||||
}
|
||||
|
||||
const check_health = async function (req, res) {
|
||||
debug && console.log("[WS]looking for all available sessions");
|
||||
respond(res, {
|
||||
"health": true,
|
||||
"details": {
|
||||
"version": process.env.npm_package_version,
|
||||
"connectedSessions": await socket.countSessions(),
|
||||
"uWebSocket": process.env.uws === "true",
|
||||
"redis": process.env.redis === "true"
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const healthApp = express();
|
||||
healthApp.use(express.json());
|
||||
healthApp.use(express.urlencoded({extended: true}));
|
||||
healthApp.use(request_logger("[healthApp]"));
|
||||
healthApp.get(['/'], (req, res) => {
|
||||
res.statusCode = 200;
|
||||
res.end("healthApp ok!");
|
||||
}
|
||||
);
|
||||
healthApp.get('/health', check_health);
|
||||
healthApp.get('/shutdown', (req, res) => {
|
||||
console.log("Requested shutdown");
|
||||
res.statusCode = 200;
|
||||
res.end("ok!");
|
||||
process.kill(1, "SIGTERM");
|
||||
}
|
||||
);
|
||||
|
||||
const listen_cb = async function () {
|
||||
console.log(`Health App listening on http://${HOST}:${PORT}`);
|
||||
console.log('Press Ctrl+C to quit.');
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
healthApp,
|
||||
PORT,
|
||||
listen_cb
|
||||
};
|
||||
3
peers/clean-dev.sh
Executable file
3
peers/clean-dev.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
rm -rf ./utils
|
||||
28
peers/package-lock.json
generated
28
peers/package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "peers-server",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "peers-server",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0",
|
||||
"license": "Elastic License 2.0 (ELv2)",
|
||||
"dependencies": {
|
||||
"express": "^4.18.2",
|
||||
|
|
@ -57,9 +57,9 @@
|
|||
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.14.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz",
|
||||
"integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA=="
|
||||
"version": "18.15.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz",
|
||||
"integrity": "sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw=="
|
||||
},
|
||||
"node_modules/@types/qs": {
|
||||
"version": "6.9.7",
|
||||
|
|
@ -600,9 +600,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz",
|
||||
"integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==",
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz",
|
||||
"integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==",
|
||||
"dependencies": {
|
||||
"data-uri-to-buffer": "^4.0.0",
|
||||
"fetch-blob": "^3.1.4",
|
||||
|
|
@ -657,9 +657,9 @@
|
|||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
||||
},
|
||||
"node_modules/peer": {
|
||||
"version": "1.0.0-rc.10",
|
||||
"resolved": "https://registry.npmjs.org/peer/-/peer-1.0.0-rc.10.tgz",
|
||||
"integrity": "sha512-S7uMqIAd1tTyvnkj4efdpn8EGc6BM1ONQvLg0vZkrnvA1cTisscBRsx+Jbor6DH68NRLnXgZbiY7/6FDER/GXw==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/peer/-/peer-1.0.0.tgz",
|
||||
"integrity": "sha512-fPVtyCKZWVfjbf7XnY7MskhTlu+pBpMvQV81sngT8aXIuT5YF9y9bwIw8y5BlI98DV0NsDpLjow/oemFNvcKkg==",
|
||||
"dependencies": {
|
||||
"@types/express": "^4.17.3",
|
||||
"@types/ws": "^7.2.3 || ^8.0.0",
|
||||
|
|
@ -921,9 +921,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.12.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz",
|
||||
"integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==",
|
||||
"version": "8.13.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
|
||||
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "peers-server",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0",
|
||||
"description": "assist server to get live sessions & sourcemaps reader to get stack trace",
|
||||
"main": "peerjs-server.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
3
peers/prepare-dev.sh
Executable file
3
peers/prepare-dev.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
rsync -avr --exclude=".*" --ignore-existing ../assist/utils ./
|
||||
cp ../sourcemap-reader/utils/health.js ./utils/.
|
||||
6
peers/run-dev.sh
Executable file
6
peers/run-dev.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
set -a
|
||||
source .env
|
||||
set +a
|
||||
|
||||
npm start
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
const dumps = require('./utils/HeapSnapshot');
|
||||
const {request_logger} = require('./utils/helper');
|
||||
const health = require("./utils/health");
|
||||
const assert = require('assert').strict;
|
||||
const {peerRouter, peerConnection, peerDisconnect, peerError} = require('./servers/peerjs-server');
|
||||
const express = require('express');
|
||||
|
|
@ -44,10 +45,4 @@ process.on('uncaughtException', err => {
|
|||
// process.exit(1);
|
||||
});
|
||||
|
||||
app.get('/private/shutdown', (req, res) => {
|
||||
console.log("Requested shutdown");
|
||||
res.statusCode = 200;
|
||||
res.end("ok!");
|
||||
process.kill(1, "SIGTERM");
|
||||
}
|
||||
);
|
||||
health.healthApp.listen(health.PORT, HOST, health.listen_cb);
|
||||
|
|
@ -17,4 +17,9 @@ ALTER TABLE public.projects
|
|||
"defaultInputMode": "obscured"
|
||||
}'::jsonb;
|
||||
|
||||
ALTER TYPE issue_type ADD VALUE IF NOT EXISTS 'mouse_thrashing';
|
||||
|
||||
ALTER TABLE events.clicks
|
||||
ADD COLUMN hesitation integer NULL;
|
||||
|
||||
COMMIT;
|
||||
5
sourcemap-reader/.gitignore
vendored
5
sourcemap-reader/.gitignore
vendored
|
|
@ -3,5 +3,8 @@ node_modules
|
|||
npm-debug.log
|
||||
.cache
|
||||
test.html
|
||||
/utils/
|
||||
/utils/assistHelper.js
|
||||
/utils/geoIP.js
|
||||
/utils/HeapSnapshot.js
|
||||
/utils/helper.js
|
||||
mappings.wasm
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
rm -rf ./utils
|
||||
rm -rf ./utils/assistHelper.js
|
||||
rm -rf ./utils/geoIP.js
|
||||
rm -rf ./utils/HeapSnapshot.js
|
||||
rm -rf ./utils/helper.js
|
||||
10
sourcemap-reader/package-lock.json
generated
10
sourcemap-reader/package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "sourcemaps-reader",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "sourcemaps-reader",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0",
|
||||
"license": "Elastic License 2.0 (ELv2)",
|
||||
"dependencies": {
|
||||
"aws-sdk": "^2.1314.0",
|
||||
|
|
@ -43,9 +43,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/aws-sdk": {
|
||||
"version": "2.1329.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1329.0.tgz",
|
||||
"integrity": "sha512-F5M9x/T+PanPiYGiL95atFE6QiwzJWwgPahaEgUdq+qvVAgruiNy5t6nw2B5tBB/yWDPPavHFip3UsXeO0qU3Q==",
|
||||
"version": "2.1333.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1333.0.tgz",
|
||||
"integrity": "sha512-MvOuleNeRryJtkCGXGEWDHPqqgxuqdi4/hGzJEpn9tnjsW9LNK8UgFPpYzUZ24ZO/3S+jiUh8DMMrL5nVGnagg==",
|
||||
"dependencies": {
|
||||
"buffer": "4.9.2",
|
||||
"events": "1.1.1",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "sourcemaps-reader",
|
||||
"version": "1.0.0",
|
||||
"version": "v1.11.0",
|
||||
"description": "assist server to get live sessions & sourcemaps reader to get stack trace",
|
||||
"main": "peerjs-server.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
const dumps = require('./utils/HeapSnapshot');
|
||||
const sourcemapsReaderServer = require('./servers/sourcemaps-server');
|
||||
const express = require('express');
|
||||
const health = require("./utils/health");
|
||||
const {request_logger} = require("./utils/helper");
|
||||
|
||||
const HOST = process.env.SMR_HOST || '127.0.0.1';
|
||||
const PORT = process.env.SMR_PORT || 9000;
|
||||
const PREFIX = process.env.PREFIX || process.env.prefix || ''
|
||||
const PREFIX = process.env.PREFIX || process.env.prefix || '';
|
||||
const P_KEY = process.env.SMR_KEY || 'smr';
|
||||
const heapdump = process.env.heapdump === "1";
|
||||
|
||||
|
|
@ -21,14 +22,7 @@ heapdump && app.use(`${PREFIX}/${P_KEY}/heapdump`, dumps.router);
|
|||
|
||||
const server = app.listen(PORT, HOST, () => {
|
||||
console.log(`SR App listening on http://${HOST}:${PORT}`);
|
||||
console.log('Press Ctrl+C to quit.');
|
||||
health.healthApp.listen(health.PORT, HOST, health.listen_cb);
|
||||
});
|
||||
module.exports = {server};
|
||||
|
||||
app.get('/private/shutdown', (req, res) => {
|
||||
console.log("Requested shutdown");
|
||||
res.statusCode = 200;
|
||||
res.end("ok!");
|
||||
process.kill(1, "SIGTERM");
|
||||
}
|
||||
);
|
||||
module.exports = {server};
|
||||
52
sourcemap-reader/utils/health.js
Normal file
52
sourcemap-reader/utils/health.js
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
const express = require('express');
|
||||
const HOST = process.env.LISTEN_HOST || '0.0.0.0';
|
||||
const PORT = process.env.HEALTH_PORT || 8888;
|
||||
|
||||
|
||||
const {request_logger} = require("./helper");
|
||||
const debug = process.env.debug === "1";
|
||||
const respond = function (res, data) {
|
||||
res.statusCode = 200;
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
res.end(JSON.stringify({"data": data}));
|
||||
}
|
||||
|
||||
const check_health = async function (req, res) {
|
||||
debug && console.log("[WS]looking for all available sessions");
|
||||
respond(res, {
|
||||
"health": true,
|
||||
"details": {
|
||||
"version": process.env.npm_package_version
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const healthApp = express();
|
||||
healthApp.use(express.json());
|
||||
healthApp.use(express.urlencoded({extended: true}));
|
||||
healthApp.use(request_logger("[healthApp]"));
|
||||
healthApp.get(['/'], (req, res) => {
|
||||
res.statusCode = 200;
|
||||
res.end("healthApp ok!");
|
||||
}
|
||||
);
|
||||
healthApp.get('/health', check_health);
|
||||
healthApp.get('/shutdown', (req, res) => {
|
||||
console.log("Requested shutdown");
|
||||
res.statusCode = 200;
|
||||
res.end("ok!");
|
||||
process.kill(1, "SIGTERM");
|
||||
}
|
||||
);
|
||||
|
||||
const listen_cb = async function () {
|
||||
console.log(`Health App listening on http://${HOST}:${PORT}`);
|
||||
console.log('Press Ctrl+C to quit.');
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
healthApp,
|
||||
PORT,
|
||||
listen_cb
|
||||
};
|
||||
Loading…
Add table
Reference in a new issue