Skip to content

Commit f87304a

Browse files
committed
add base metric to nodered
1 parent ac33f1e commit f87304a

10 files changed

Lines changed: 38 additions & 16 deletions

OpenFlow/src/WebServer.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,29 @@ import { LoginProvider } from "./LoginProvider";
1717
import { DatabaseConnection } from "./DatabaseConnection";
1818
import { Config } from "./Config";
1919

20+
import * as promBundle from "express-prom-bundle";
21+
import * as client from "prom-client";
22+
import { NoderedUtil } from "openflow-api";
23+
2024
export class WebServer {
2125
private static _logger: winston.Logger;
2226
public static app: express.Express;
2327

24-
static async configure(logger: winston.Logger, baseurl: string): Promise<http.Server> {
28+
static async configure(logger: winston.Logger, baseurl: string, register: client.Registry): Promise<http.Server> {
2529
this._logger = logger;
2630

2731
this.app = express();
28-
// this.app.use(morgan('combined', { stream: (winston.stream as any).write }));
32+
if (!NoderedUtil.IsNullUndefinded(register)) {
33+
const metricsMiddleware = promBundle({ includeMethod: true, includePath: true, promRegistry: register, autoregister: true });
34+
this.app.use(metricsMiddleware);
35+
}
36+
2937
const loggerstream = {
3038
write: function (message, encoding) {
3139
logger.silly(message);
3240
}
3341
};
3442
this.app.use(morgan('combined', { stream: loggerstream }));
35-
3643
this.app.use(compression());
3744
this.app.use(bodyParser.urlencoded({ extended: true }));
3845
this.app.use(bodyParser.json());

OpenFlow/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,10 +251,10 @@ try {
251251
try {
252252
await initamqp();
253253
logger.info("VERSION: " + Config.version);
254-
const server: http.Server = await WebServer.configure(logger, Config.baseurl());
255254
if (Prometheus != null) {
256-
register = Prometheus.Prometheus.configure(logger, WebServer.app);
255+
register = Prometheus.Prometheus.configure(logger);
257256
}
257+
const server: http.Server = await WebServer.configure(logger, Config.baseurl(), register);
258258
if (GrafanaProxy != null) {
259259
const grafana = await GrafanaProxy.GrafanaProxy.configure(logger, WebServer.app, register);
260260
}

OpenFlowNodeRED/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openflow-nodered",
3-
"version": "1.1.77",
3+
"version": "1.1.78",
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": {
@@ -32,6 +32,7 @@
3232
"cookie-session": "^1.4.0",
3333
"envfile": "^6.12.0",
3434
"express": "^4.17.1",
35+
"express-prom-bundle": "^6.2.0",
3536
"google-auth-library": "^6.0.6",
3637
"jsonwebtoken": "^8.5.1",
3738
"morgan": "^1.10.0",
@@ -40,6 +41,7 @@
4041
"os-service": "^2.2.0",
4142
"passport-saml": "^1.3.4",
4243
"passport-saml-metadata": "^2.3.0",
44+
"prom-client": "^12.0.0",
4345
"readline-sync": "^1.4.10",
4446
"smtp-server": "^3.7.0",
4547
"unhandled-rejection": "^1.0.0",

OpenFlowNodeRED/src/WebServer.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import { noderedcontribmiddlewareauth } from "./node-red-contrib-middleware-auth
2020
import * as passport from "passport";
2121
import { noderedcontribauthsaml } from "./node-red-contrib-auth-saml";
2222
import { WebSocketClient, NoderedUtil } from "openflow-api";
23+
import * as client from "prom-client";
24+
import * as promBundle from "express-prom-bundle";
2325

2426
export class WebServer {
2527
private static _logger: winston.Logger;
@@ -39,6 +41,16 @@ export class WebServer {
3941
let server: http.Server = null;
4042
if (this.app === null) {
4143
this.app = express();
44+
45+
const register = new client.Registry()
46+
const hostname = Config.getEnv("HOSTNAME", null);
47+
const defaultLabels: any = {};
48+
if (!NoderedUtil.IsNullEmpty(hostname)) defaultLabels["hostname"] = hostname;
49+
register.setDefaultLabels(defaultLabels);
50+
client.collectDefaultMetrics({ register })
51+
52+
const metricsMiddleware = promBundle({ includeMethod: true, includePath: true, promRegistry: register, autoregister: true });
53+
this.app.use(metricsMiddleware);
4254
// this.app.use(morgan('combined', { stream: (winston.stream as any).write }));
4355
const loggerstream = {
4456
write: function (message, encoding) {

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.77
1+
1.1.78

docker-compose-toolbox.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ services:
4545
- "traefik.http.routers.web.rule=Host(`toolbox.openrpa.dk`)"
4646
- "traefik.http.routers.web.entrypoints=web"
4747
- "traefik.frontend.passHostHeader=true"
48-
image: "cloudhack/openflow:1.1.77"
48+
image: "cloudhack/openflow:1.1.78"
4949
container_name: "web"
5050
environment:
5151
- update_acl_based_on_groups=true
@@ -82,7 +82,7 @@ services:
8282
- "traefik.http.routers.nodered.rule=Host(`nodered1.toolbox.openrpa.dk`)"
8383
- "traefik.http.routers.nodered.entrypoints=web"
8484
- "traefik.http.services.nodered.loadbalancer.server.port=1880"
85-
image: "cloudhack/openflownodered:1.1.77"
85+
image: "cloudhack/openflownodered:1.1.78"
8686
container_name: "nodered"
8787
environment:
8888
# - nodered_id=1

docker-compose-traefik-letsencrypt.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ services:
6969
- "traefik.http.routers.web.entrypoints=web,websecure"
7070
- "traefik.frontend.passHostHeader=true"
7171
- "traefik.http.routers.web.tls.certresolver=myresolver"
72-
image: "cloudhack/openflow:1.1.77"
72+
image: "cloudhack/openflow:1.1.78"
7373
container_name: "web"
7474
environment:
7575
- update_acl_based_on_groups=true
@@ -107,7 +107,7 @@ services:
107107
- "traefik.http.routers.nodered.entrypoints=web,websecure"
108108
- "traefik.http.services.nodered.loadbalancer.server.port=1880"
109109
- "traefik.http.routers.nodered.tls.certresolver=myresolver"
110-
image: "cloudhack/openflownodered:1.1.77"
110+
image: "cloudhack/openflownodered:1.1.78"
111111
container_name: "nodered"
112112
environment:
113113
# - nodered_id=1

docker-compose-traefik.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ services:
4545
- "traefik.http.routers.web.rule=Host(`localhost.openrpa.dk`)"
4646
- "traefik.http.routers.web.entrypoints=web"
4747
- "traefik.frontend.passHostHeader=true"
48-
image: "cloudhack/openflow:1.1.77"
48+
image: "cloudhack/openflow:1.1.78"
4949
container_name: "web"
5050
environment:
5151
- update_acl_based_on_groups=true
@@ -82,7 +82,7 @@ services:
8282
- "traefik.http.routers.nodered.rule=Host(`nodered1.localhost.openrpa.dk`)"
8383
- "traefik.http.routers.nodered.entrypoints=web"
8484
- "traefik.http.services.nodered.loadbalancer.server.port=1880"
85-
image: "cloudhack/openflownodered:1.1.77"
85+
image: "cloudhack/openflownodered:1.1.78"
8686
container_name: "nodered"
8787
environment:
8888
# - nodered_id=1

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ services:
1818
- "5672:5672"
1919
- "15672:15672"
2020
web:
21-
image: "cloudhack/openflow:1.1.77"
21+
image: "cloudhack/openflow:1.1.78"
2222
environment:
2323
- update_acl_based_on_groups=true
2424
- multi_tenant=false
@@ -52,7 +52,7 @@ services:
5252
- "80:80"
5353
- "5858:5858"
5454
nodered:
55-
image: "cloudhack/openflownodered:1.1.77"
55+
image: "cloudhack/openflownodered:1.1.78"
5656
environment:
5757
# - nodered_id=1
5858
- nodered_sa=nodered1

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openiap",
3-
"version": "1.1.77",
3+
"version": "1.1.78",
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": {
@@ -41,6 +41,7 @@
4141
"cookie-session": "^1.4.0",
4242
"envfile": "^6.14.0",
4343
"express": "^4.17.1",
44+
"express-prom-bundle": "^6.2.0",
4445
"flash": "^1.1.0",
4546
"formBuilder": "^3.6.1",
4647
"got": "^11.7.0",

0 commit comments

Comments
 (0)