Skip to content

Commit 356b299

Browse files
committed
Add support for monitoring watches
1 parent 09c53bc commit 356b299

6 files changed

Lines changed: 24 additions & 3 deletions

File tree

OpenFlow/src/Config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ export class Config {
111111
Config.nodered_limits_cpu = Config.getEnv("nodered_limits_cpu", ""); // 1000m = 1vCPU
112112
Config.prometheus_measure_nodeid = Config.parseBoolean(Config.getEnv("prometheus_measure_nodeid", "false"));
113113
Config.prometheus_measure_queued_messages = Config.parseBoolean(Config.getEnv("prometheus_measure_queued_messages", "false"));
114+
Config.prometheus_measure__mongodb_watch = Config.parseBoolean(Config.getEnv("prometheus_measure__mongodb_watch", "false"));
114115
Config.validate_user_form = Config.getEnv("validate_user_form", "");
115116
}
116117
public static db: DatabaseConnection = null;
@@ -213,6 +214,7 @@ export class Config {
213214
public static nodered_limits_cpu: string = Config.getEnv("nodered_limits_cpu", ""); // 1000m = 1vCPU
214215
public static prometheus_measure_nodeid: boolean = Config.parseBoolean(Config.getEnv("prometheus_measure_nodeid", "false"));
215216
public static prometheus_measure_queued_messages: boolean = Config.parseBoolean(Config.getEnv("prometheus_measure_queued_messages", "false"));
217+
public static prometheus_measure__mongodb_watch: boolean = Config.parseBoolean(Config.getEnv("prometheus_measure__mongodb_watch", "false"));
216218
public static validate_user_form: string = Config.getEnv("validate_user_form", "");
217219

218220
public static baseurl(): string {

OpenFlow/src/WebSocketServer.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ export class WebSocketServer {
5353
help: 'Total number messages waiting on reply from client',
5454
labelNames: ["clientid"]
5555
})
56+
public static mongodb_watch_count = new client.Gauge({
57+
name: 'mongodb_watch_count',
58+
help: 'Total number af steams watching for changes',
59+
labelNames: ["agent", "clientid"]
60+
})
5661
public static update_message_queue_count(cli: WebSocketServerClient) {
5762
if (!Config.prometheus_measure_queued_messages) return;
5863
const result: any = {};
@@ -76,6 +81,16 @@ export class WebSocketServer {
7681
WebSocketServer.message_queue_count.labels(cli.id, key).set(result[key]);
7782
});
7883
}
84+
public static update_mongodb_watch_count(cli: WebSocketServerClient) {
85+
if (!Config.prometheus_measure__mongodb_watch) return;
86+
const result: any = {};
87+
let total: number = 0;
88+
WebSocketServer.mongodb_watch_count.reset();
89+
for (let i = WebSocketServer._clients.length - 1; i >= 0; i--) {
90+
const cli: WebSocketServerClient = WebSocketServer._clients[i];
91+
WebSocketServer.mongodb_watch_count.labels(cli.clientagent, cli.id).set(cli.streamcount());
92+
}
93+
}
7994
static configure(logger: winston.Logger, server: http.Server, register: client.Registry): void {
8095
this._clients = [];
8196
this._logger = logger;
@@ -94,6 +109,7 @@ export class WebSocketServer {
94109
if (!NoderedUtil.IsNullUndefinded(register)) register.registerMetric(WebSocketServer.websocket_rate_limit);
95110
if (!NoderedUtil.IsNullUndefinded(register)) register.registerMetric(WebSocketServer.websocket_messages);
96111
if (!NoderedUtil.IsNullUndefinded(register)) register.registerMetric(WebSocketServer.message_queue_count);
112+
if (!NoderedUtil.IsNullUndefinded(register)) register.registerMetric(WebSocketServer.mongodb_watch_count);
97113
if (!NoderedUtil.IsNullUndefinded(register)) register.registerMetric(DatabaseConnection.mongodb_query);
98114
if (!NoderedUtil.IsNullUndefinded(register)) register.registerMetric(DatabaseConnection.mongodb_query_count);
99115
if (!NoderedUtil.IsNullUndefinded(register)) register.registerMetric(DatabaseConnection.mongodb_aggregate);

OpenFlow/src/WebSocketServerClient.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ export class WebSocketServerClient {
180180
this._logger.error("WebSocketclient::Close " + error);
181181
}
182182
}
183+
WebSocketServer.update_mongodb_watch_count(this);
183184
}
184185
public async CloseConsumer(queuename: string): Promise<void> {
185186
var old = this._queues.length;
@@ -444,6 +445,7 @@ export class WebSocketServerClient {
444445
}
445446
}
446447
}
448+
WebSocketServer.update_mongodb_watch_count(this);
447449
}
448450
async UnWatch(id: string, jwt: string): Promise<void> {
449451
this.CloseStream(id);
@@ -474,6 +476,7 @@ export class WebSocketServerClient {
474476
this._logger.error("WebSocketclient::Watch::changeListener " + error + " " + this.id + "/" + this.clientagent);
475477
}
476478
}, options);
479+
WebSocketServer.update_mongodb_watch_count(this);
477480
return stream.id;
478481
} catch (error) {
479482
this._logger.error("WebSocketclient::Watch " + error + " " + this.id + "/" + this.clientagent);

OpenFlowNodeRED/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@openiap/nodered",
3-
"version": "1.1.169",
3+
"version": "1.1.171",
44
"description": "Simple wrapper around NodeRed, RabbitMQ and MongoDB to support a more scaleable NodeRed implementation.\r Also the \"backend\" for [OpenRPA](https://github.com/skadefro/OpenRPA)",
55
"main": "index.js",
66
"scripts": {

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.170
1+
1.1.171

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@openiap/openflow",
3-
"version": "1.1.169",
3+
"version": "1.1.171",
44
"description": "Simple wrapper around NodeRed, RabbitMQ and MongoDB to support a more scaleable NodeRed implementation.\r Also the \"backend\" for [OpenRPA](https://github.com/skadefro/OpenRPA)",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)