@theotherwillembotha/node-red-plugincore 0.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +15 -0
- package/README.md +190 -0
- package/build/GenerateNodes.d.ts +2 -0
- package/build/GenerateNodes.d.ts.map +1 -0
- package/build/GenerateNodes.js +36 -0
- package/build/Nodes.html +1729 -0
- package/build/Nodes.js +32 -0
- package/build/Plugins.js +74 -0
- package/build/core/NodeConstructor.d.ts +188 -0
- package/build/core/NodeConstructor.d.ts.map +1 -0
- package/build/core/NodeConstructor.js +679 -0
- package/build/core/NodeGenerator.d.ts +37 -0
- package/build/core/NodeGenerator.d.ts.map +1 -0
- package/build/core/NodeGenerator.js +300 -0
- package/build/core/Utils.d.ts +7 -0
- package/build/core/Utils.d.ts.map +1 -0
- package/build/core/Utils.js +19 -0
- package/build/core/logger/LoggerDecorator.d.ts +2 -0
- package/build/core/logger/LoggerDecorator.d.ts.map +1 -0
- package/build/core/logger/LoggerDecorator.js +93 -0
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts +16 -0
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts.map +1 -0
- package/build/core/logger/node/ConsoleLoggerConfigNode.html +131 -0
- package/build/core/logger/node/ConsoleLoggerConfigNode.js +47 -0
- package/build/core/logger/node/LoggerConfigNode.d.ts +30 -0
- package/build/core/logger/node/LoggerConfigNode.d.ts.map +1 -0
- package/build/core/logger/node/LoggerConfigNode.html +307 -0
- package/build/core/logger/node/LoggerConfigNode.js +60 -0
- package/build/core/logger/node/LokiLoggerConfigNode.d.ts +20 -0
- package/build/core/logger/node/LokiLoggerConfigNode.d.ts.map +1 -0
- package/build/core/logger/node/LokiLoggerConfigNode.html +153 -0
- package/build/core/logger/node/LokiLoggerConfigNode.js +52 -0
- package/build/core/logger/node/RestLoggerConfigNode.d.ts +24 -0
- package/build/core/logger/node/RestLoggerConfigNode.d.ts.map +1 -0
- package/build/core/logger/node/RestLoggerConfigNode.html +209 -0
- package/build/core/logger/node/RestLoggerConfigNode.js +57 -0
- package/build/core/logger/service/LoggerService.d.ts +88 -0
- package/build/core/logger/service/LoggerService.d.ts.map +1 -0
- package/build/core/logger/service/LoggerService.js +204 -0
- package/build/core/logger/service/LoggerServiceTypes.d.ts +24 -0
- package/build/core/logger/service/LoggerServiceTypes.d.ts.map +1 -0
- package/build/core/logger/service/LoggerServiceTypes.js +30 -0
- package/build/core/logger/template/LoggerTemplate.d.ts +11 -0
- package/build/core/logger/template/LoggerTemplate.d.ts.map +1 -0
- package/build/core/logger/template/LoggerTemplate.html +328 -0
- package/build/core/logger/template/LoggerTemplate.js +12 -0
- package/build/core/metrics/MetricsDecorator.d.ts +40 -0
- package/build/core/metrics/MetricsDecorator.d.ts.map +1 -0
- package/build/core/metrics/MetricsDecorator.js +166 -0
- package/build/core/metrics/node/CounterMetricConfigNode.d.ts +16 -0
- package/build/core/metrics/node/CounterMetricConfigNode.d.ts.map +1 -0
- package/build/core/metrics/node/CounterMetricConfigNode.html +48 -0
- package/build/core/metrics/node/CounterMetricConfigNode.js +61 -0
- package/build/core/metrics/node/GaugeMetricConfigNode.d.ts +17 -0
- package/build/core/metrics/node/GaugeMetricConfigNode.d.ts.map +1 -0
- package/build/core/metrics/node/GaugeMetricConfigNode.html +48 -0
- package/build/core/metrics/node/GaugeMetricConfigNode.js +61 -0
- package/build/core/metrics/node/MetricsConfigNode.d.ts +14 -0
- package/build/core/metrics/node/MetricsConfigNode.d.ts.map +1 -0
- package/build/core/metrics/node/MetricsConfigNode.html +21 -0
- package/build/core/metrics/node/MetricsConfigNode.js +56 -0
- package/build/core/metrics/node/TimerMetricConfigNode.d.ts +28 -0
- package/build/core/metrics/node/TimerMetricConfigNode.d.ts.map +1 -0
- package/build/core/metrics/node/TimerMetricConfigNode.html +190 -0
- package/build/core/metrics/node/TimerMetricConfigNode.js +101 -0
- package/build/core/metrics/service/MetricsService.d.ts +187 -0
- package/build/core/metrics/service/MetricsService.d.ts.map +1 -0
- package/build/core/metrics/service/MetricsService.js +385 -0
- package/build/core/metrics/template/CounterMetricTemplate.d.ts +5 -0
- package/build/core/metrics/template/CounterMetricTemplate.d.ts.map +1 -0
- package/build/core/metrics/template/CounterMetricTemplate.html +40 -0
- package/build/core/metrics/template/CounterMetricTemplate.js +12 -0
- package/build/core/metrics/template/GaugeMetricTemplate.d.ts +5 -0
- package/build/core/metrics/template/GaugeMetricTemplate.d.ts.map +1 -0
- package/build/core/metrics/template/GaugeMetricTemplate.html +39 -0
- package/build/core/metrics/template/GaugeMetricTemplate.js +12 -0
- package/build/core/metrics/template/MetricsTemplate.d.ts +8 -0
- package/build/core/metrics/template/MetricsTemplate.d.ts.map +1 -0
- package/build/core/metrics/template/MetricsTemplate.html +54 -0
- package/build/core/metrics/template/MetricsTemplate.js +12 -0
- package/build/core/metrics/template/TimerMetricTemplate.d.ts +5 -0
- package/build/core/metrics/template/TimerMetricTemplate.d.ts.map +1 -0
- package/build/core/metrics/template/TimerMetricTemplate.html +39 -0
- package/build/core/metrics/template/TimerMetricTemplate.js +12 -0
- package/build/core/other/InputDecorator.d.ts +3 -0
- package/build/core/other/InputDecorator.d.ts.map +1 -0
- package/build/core/other/InputDecorator.js +43 -0
- package/build/core/other/service/InputService.d.ts +16 -0
- package/build/core/other/service/InputService.d.ts.map +1 -0
- package/build/core/other/service/InputService.js +31 -0
- package/build/core/other/service/SettingsService.d.ts +25 -0
- package/build/core/other/service/SettingsService.d.ts.map +1 -0
- package/build/core/other/service/SettingsService.js +74 -0
- package/build/core/other/template/BasicTemplate.d.ts +5 -0
- package/build/core/other/template/BasicTemplate.d.ts.map +1 -0
- package/build/core/other/template/BasicTemplate.html +76 -0
- package/build/core/other/template/BasicTemplate.js +11 -0
- package/build/core/other/template/SettingsTemplate.d.ts +5 -0
- package/build/core/other/template/SettingsTemplate.d.ts.map +1 -0
- package/build/core/other/template/SettingsTemplate.html +128 -0
- package/build/core/other/template/SettingsTemplate.js +11 -0
- package/build/core/tagging/NodeDescriptionDecorator.d.ts +17 -0
- package/build/core/tagging/NodeDescriptionDecorator.d.ts.map +1 -0
- package/build/core/tagging/NodeDescriptionDecorator.js +25 -0
- package/build/core/tagging/service/NodeTypeService.d.ts +15 -0
- package/build/core/tagging/service/NodeTypeService.d.ts.map +1 -0
- package/build/core/tagging/service/NodeTypeService.js +47 -0
- package/build/core/webhook/WebhookDecorator.d.ts +3 -0
- package/build/core/webhook/WebhookDecorator.d.ts.map +1 -0
- package/build/core/webhook/WebhookDecorator.js +45 -0
- package/build/core/webhook/node/WebhookServerConfigNode.d.ts +16 -0
- package/build/core/webhook/node/WebhookServerConfigNode.d.ts.map +1 -0
- package/build/core/webhook/node/WebhookServerConfigNode.html +61 -0
- package/build/core/webhook/node/WebhookServerConfigNode.js +40 -0
- package/build/core/webhook/service/ReverseProxyTypeService.d.ts +29 -0
- package/build/core/webhook/service/ReverseProxyTypeService.d.ts.map +1 -0
- package/build/core/webhook/service/ReverseProxyTypeService.js +24 -0
- package/build/core/webhook/service/WebhookServerService.d.ts +52 -0
- package/build/core/webhook/service/WebhookServerService.d.ts.map +1 -0
- package/build/core/webhook/service/WebhookServerService.js +146 -0
- package/build/core/webhook/template/WebhookTemplate.d.ts +22 -0
- package/build/core/webhook/template/WebhookTemplate.d.ts.map +1 -0
- package/build/core/webhook/template/WebhookTemplate.html +434 -0
- package/build/core/webhook/template/WebhookTemplate.js +12 -0
- package/build/index.d.ts +33 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +55 -0
- package/package.json +67 -0
- package/src/GenerateNodes.ts +42 -0
- package/src/core/NodeConstructor.ts +889 -0
- package/src/core/NodeGenerator.ts +331 -0
- package/src/core/Utils.ts +19 -0
- package/src/core/logger/LoggerDecorator.ts +105 -0
- package/src/core/logger/node/ConsoleLoggerConfigNode.html +131 -0
- package/src/core/logger/node/ConsoleLoggerConfigNode.ts +46 -0
- package/src/core/logger/node/LoggerConfigNode.html +307 -0
- package/src/core/logger/node/LoggerConfigNode.ts +95 -0
- package/src/core/logger/node/LokiLoggerConfigNode.html +153 -0
- package/src/core/logger/node/LokiLoggerConfigNode.ts +58 -0
- package/src/core/logger/node/RestLoggerConfigNode.html +209 -0
- package/src/core/logger/node/RestLoggerConfigNode.ts +67 -0
- package/src/core/logger/service/LoggerService.ts +317 -0
- package/src/core/logger/service/LoggerServiceTypes.ts +26 -0
- package/src/core/logger/template/LoggerTemplate.html +328 -0
- package/src/core/logger/template/LoggerTemplate.ts +23 -0
- package/src/core/metrics/MetricsDecorator.ts +227 -0
- package/src/core/metrics/node/CounterMetricConfigNode.html +48 -0
- package/src/core/metrics/node/CounterMetricConfigNode.ts +62 -0
- package/src/core/metrics/node/GaugeMetricConfigNode.html +48 -0
- package/src/core/metrics/node/GaugeMetricConfigNode.ts +62 -0
- package/src/core/metrics/node/MetricsConfigNode.html +21 -0
- package/src/core/metrics/node/MetricsConfigNode.ts +55 -0
- package/src/core/metrics/node/TimerMetricConfigNode.html +190 -0
- package/src/core/metrics/node/TimerMetricConfigNode.ts +118 -0
- package/src/core/metrics/service/MetricsService.ts +560 -0
- package/src/core/metrics/template/CounterMetricTemplate.html +40 -0
- package/src/core/metrics/template/CounterMetricTemplate.ts +15 -0
- package/src/core/metrics/template/GaugeMetricTemplate.html +39 -0
- package/src/core/metrics/template/GaugeMetricTemplate.ts +15 -0
- package/src/core/metrics/template/MetricsTemplate.html +54 -0
- package/src/core/metrics/template/MetricsTemplate.ts +18 -0
- package/src/core/metrics/template/TimerMetricTemplate.html +39 -0
- package/src/core/metrics/template/TimerMetricTemplate.ts +14 -0
- package/src/core/other/InputDecorator.ts +57 -0
- package/src/core/other/service/InputService.ts +36 -0
- package/src/core/other/service/SettingsService.ts +103 -0
- package/src/core/other/template/BasicTemplate.html +76 -0
- package/src/core/other/template/BasicTemplate.ts +15 -0
- package/src/core/other/template/SettingsTemplate.html +128 -0
- package/src/core/other/template/SettingsTemplate.ts +17 -0
- package/src/core/tagging/NodeDescriptionDecorator.ts +39 -0
- package/src/core/tagging/service/NodeTypeService.ts +67 -0
- package/src/core/webhook/WebhookDecorator.ts +70 -0
- package/src/core/webhook/node/WebhookServerConfigNode.html +61 -0
- package/src/core/webhook/node/WebhookServerConfigNode.ts +38 -0
- package/src/core/webhook/service/ReverseProxyTypeService.ts +46 -0
- package/src/core/webhook/service/WebhookServerService.ts +211 -0
- package/src/core/webhook/template/WebhookTemplate.html +434 -0
- package/src/core/webhook/template/WebhookTemplate.ts +36 -0
- package/src/index.ts +47 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CounterMetricConfigNode = void 0;
|
|
13
|
+
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
14
|
+
const MetricsService_1 = require("../service/MetricsService");
|
|
15
|
+
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
16
|
+
const MetricsConfigNode_1 = require("./MetricsConfigNode");
|
|
17
|
+
const MetricsTemplate_1 = require("../template/MetricsTemplate");
|
|
18
|
+
const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
|
|
19
|
+
let CounterMetricConfigNode = class CounterMetricConfigNode extends NodeConstructor_1.ConfigNode {
|
|
20
|
+
constructor(node, config) {
|
|
21
|
+
super(node, config);
|
|
22
|
+
let _this = this;
|
|
23
|
+
this._metrics = NodeConstructor_1.NodeManager.RED.nodes.getNode(config.metricsReference).node().metrics();
|
|
24
|
+
let counterConfig = {
|
|
25
|
+
metricname: config.name,
|
|
26
|
+
metricdescription: config.description,
|
|
27
|
+
node: {
|
|
28
|
+
id: this.id(),
|
|
29
|
+
name: this.name(),
|
|
30
|
+
flow: this.flow(),
|
|
31
|
+
type: this.type()
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
this._counter = this._metrics.counter(counterConfig);
|
|
35
|
+
if (config.reset) {
|
|
36
|
+
this._counter.reset();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
metrics() {
|
|
40
|
+
return this._metrics;
|
|
41
|
+
}
|
|
42
|
+
counter() {
|
|
43
|
+
return this._counter;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.CounterMetricConfigNode = CounterMetricConfigNode;
|
|
47
|
+
exports.CounterMetricConfigNode = CounterMetricConfigNode = __decorate([
|
|
48
|
+
(0, NodeDescriptionDecorator_1.NodeDescription)({
|
|
49
|
+
id: "CounterMetricConfigNode",
|
|
50
|
+
name: "Counter Metric Config Node",
|
|
51
|
+
group: "config",
|
|
52
|
+
sourceFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "CounterMetricConfigNode.html",
|
|
53
|
+
package: "@theotherwillembotha/node-red-plugincore",
|
|
54
|
+
templates: [
|
|
55
|
+
{ template: MetricsTemplate_1.MetricsTemplate, config: {} }
|
|
56
|
+
],
|
|
57
|
+
dependencies: [MetricsConfigNode_1.MetricsConfigNode, MetricsService_1.MetricsService],
|
|
58
|
+
tags: ["MetricType"]
|
|
59
|
+
}),
|
|
60
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
61
|
+
], CounterMetricConfigNode);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Node } from "node-red";
|
|
2
|
+
import { ConfigNode, ConfigNodeConfig } from "../../NodeConstructor";
|
|
3
|
+
import { MetricsContainer, GaugeMetricConfig, GaugeMetric } from "../service/MetricsService";
|
|
4
|
+
import { MetricsTemplateConfig } from "../template/MetricsTemplate";
|
|
5
|
+
interface GaugeMetricConfigNodeConfig extends ConfigNodeConfig, GaugeMetricConfig, MetricsTemplateConfig {
|
|
6
|
+
description: string;
|
|
7
|
+
reset: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class GaugeMetricConfigNode extends ConfigNode<GaugeMetricConfigNodeConfig> {
|
|
10
|
+
private _metrics;
|
|
11
|
+
private _gauge;
|
|
12
|
+
constructor(node: Node, config: GaugeMetricConfigNodeConfig);
|
|
13
|
+
metrics(): MetricsContainer;
|
|
14
|
+
gauge(): GaugeMetric;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=GaugeMetricConfigNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GaugeMetricConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/GaugeMetricConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAA+B,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,gBAAgB,EAAkB,iBAAiB,EAAE,WAAW,EAAmB,MAAM,2BAA2B,CAAA;AAG7H,OAAO,EAAmB,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGrF,UAAU,2BAA4B,SAAQ,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB;IACpG,WAAW,EAAC,MAAM,CAAC;IACnB,KAAK,EAAC,OAAO,CAAA;CAChB;AAED,qBAYa,qBAAsB,SAAQ,UAAU,CAAC,2BAA2B,CAAC;IAC9E,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAc;gBAEhB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,2BAA2B;IAwBpD,OAAO,IAAG,gBAAgB;IAI1B,KAAK,IAAG,WAAW;CAG7B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<script type="text/javascript" template-section="onCompose">
|
|
2
|
+
node
|
|
3
|
+
.addDefault("name", { value:"Metrics Example", required:true})
|
|
4
|
+
.addDefault("description", {value:"an example gauge", required:false})
|
|
5
|
+
.addDefault("reset", {value:false, required:false})
|
|
6
|
+
.setPaletteLabel("Gauge Metric Config")
|
|
7
|
+
.setLabel(function() {return this.name })
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<script type="text/javascript" template-section="onIncludeEditPrepare">
|
|
11
|
+
// enable the metrics by default and hide the Enable metrics button.
|
|
12
|
+
let metricsEnabled = $("#node-config-input-metricsEnabled");
|
|
13
|
+
metricsEnabled.prop('checked', true);
|
|
14
|
+
metricsEnabled.trigger("change");
|
|
15
|
+
$("#section_metricsconfig").find(".metricsEnableCheck").hide();
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<script type="text/html" template-section="onIncludeEditForm">
|
|
21
|
+
<div id="MetricsConfig">
|
|
22
|
+
<div class="form-row">
|
|
23
|
+
<label for="node-config-input-name"><i class="fa fa-tag"></i> Name</label>
|
|
24
|
+
<input type="text" id="node-config-input-name">
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div class="form-row">
|
|
28
|
+
<label for="node-config-input-description"><i class="fa fa-tag"></i> Description</label>
|
|
29
|
+
<input type="text" id="node-config-input-description">
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div class="form-row">
|
|
33
|
+
<label></label>
|
|
34
|
+
<input type="checkbox" id="node-config-input-reset" style="width:20px; margin-right:5px;">
|
|
35
|
+
<label style="width:auto" for="node-config-input-reset"><span>Reset on Deploy</span></label>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
<script type="text/markdown" template-section="onIncludeDocumentation">
|
|
42
|
+
Configuration node for the Gauge Metrics
|
|
43
|
+
|
|
44
|
+
### Inputs
|
|
45
|
+
: *name* (string) : The common name for the gauge.
|
|
46
|
+
: *description* (string) : A description for the given gauge.
|
|
47
|
+
|
|
48
|
+
</script>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.GaugeMetricConfigNode = void 0;
|
|
13
|
+
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
14
|
+
const MetricsService_1 = require("../service/MetricsService");
|
|
15
|
+
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
16
|
+
const MetricsConfigNode_1 = require("./MetricsConfigNode");
|
|
17
|
+
const MetricsTemplate_1 = require("../template/MetricsTemplate");
|
|
18
|
+
const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
|
|
19
|
+
let GaugeMetricConfigNode = class GaugeMetricConfigNode extends NodeConstructor_1.ConfigNode {
|
|
20
|
+
constructor(node, config) {
|
|
21
|
+
super(node, config);
|
|
22
|
+
let _this = this;
|
|
23
|
+
this._metrics = NodeConstructor_1.NodeManager.RED.nodes.getNode(config.metricsReference).node().metrics();
|
|
24
|
+
let gaugeConfig = {
|
|
25
|
+
metricname: config.name,
|
|
26
|
+
metricdescription: config.description,
|
|
27
|
+
node: {
|
|
28
|
+
id: this.id(),
|
|
29
|
+
flow: this.flow(),
|
|
30
|
+
type: this.type(),
|
|
31
|
+
name: this.name()
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
this._gauge = this._metrics.guage(gaugeConfig);
|
|
35
|
+
if (config.reset) {
|
|
36
|
+
_this._gauge.reset();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
metrics() {
|
|
40
|
+
return this._metrics;
|
|
41
|
+
}
|
|
42
|
+
gauge() {
|
|
43
|
+
return this._gauge;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.GaugeMetricConfigNode = GaugeMetricConfigNode;
|
|
47
|
+
exports.GaugeMetricConfigNode = GaugeMetricConfigNode = __decorate([
|
|
48
|
+
(0, NodeDescriptionDecorator_1.NodeDescription)({
|
|
49
|
+
id: "GaugeMetricConfigNode",
|
|
50
|
+
name: "Guage Metric Config Node",
|
|
51
|
+
group: "config",
|
|
52
|
+
sourceFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "GaugeMetricConfigNode.html",
|
|
53
|
+
package: "@theotherwillembotha/node-red-plugincore",
|
|
54
|
+
templates: [
|
|
55
|
+
{ template: MetricsTemplate_1.MetricsTemplate, config: {} }
|
|
56
|
+
],
|
|
57
|
+
dependencies: [MetricsConfigNode_1.MetricsConfigNode, MetricsService_1.MetricsService],
|
|
58
|
+
tags: ["Core", "Metric"]
|
|
59
|
+
}),
|
|
60
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
61
|
+
], GaugeMetricConfigNode);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Node } from "node-red";
|
|
2
|
+
import { ConfigNode, ConfigNodeConfig } from "../../NodeConstructor";
|
|
3
|
+
import { MetricsContainer } from "../service/MetricsService";
|
|
4
|
+
import { WebhookTemplateConfig } from "../../webhook/template/WebhookTemplate";
|
|
5
|
+
interface MetricsConfigNodeConfig extends ConfigNodeConfig, WebhookTemplateConfig {
|
|
6
|
+
}
|
|
7
|
+
export declare class MetricsConfigNode extends ConfigNode<MetricsConfigNodeConfig> {
|
|
8
|
+
private _metrics;
|
|
9
|
+
constructor(node: Node, config: MetricsConfigNodeConfig);
|
|
10
|
+
metrics(): MetricsContainer;
|
|
11
|
+
private onWebhookRequest;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=MetricsConfigNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricsConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/MetricsConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAkB,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAiB,MAAM,2BAA2B,CAAA;AAE3E,OAAO,EAAmB,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAehG,UAAU,uBAAwB,SAAQ,gBAAgB,EAAE,qBAAqB;CAChF;AAED,qBAYa,iBAAkB,SAAQ,UAAU,CAAC,uBAAuB,CAAC;IACtE,OAAO,CAAC,QAAQ,CAAoB;gBAExB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB;IAOhD,OAAO,IAAG,gBAAgB;IAKjC,OAAO,CAAC,gBAAgB;CAI3B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script type="text/javascript" template-section="onCompose">
|
|
2
|
+
node
|
|
3
|
+
.addDefault("name", { value:"Metrics Example", required:true})
|
|
4
|
+
.setPaletteLabel("Metrics Config")
|
|
5
|
+
.setLabel(function() {return this.name })
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script type="text/html" template-section="onIncludeEditForm">
|
|
9
|
+
<div id="MetricsConfig">
|
|
10
|
+
<div class="form-row">
|
|
11
|
+
<label for="node-config-input-name"><i class="fa fa-tag"></i> Name</label>
|
|
12
|
+
<input type="text" id="node-config-input-name" />
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
<script type="text/markdown" template-section="onIncludeDocumentation">
|
|
19
|
+
### Inputs
|
|
20
|
+
: *name* (string) : The common name for the metrics integration.
|
|
21
|
+
</script>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MetricsConfigNode = void 0;
|
|
13
|
+
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
14
|
+
const MetricsService_1 = require("../service/MetricsService");
|
|
15
|
+
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
16
|
+
const WebhookTemplate_1 = require("../../webhook/template/WebhookTemplate");
|
|
17
|
+
const WebhookDecorator_1 = require("../../webhook/WebhookDecorator");
|
|
18
|
+
const WebhookServerService_1 = require("../../webhook/service/WebhookServerService");
|
|
19
|
+
const prom_client_1 = require("prom-client");
|
|
20
|
+
const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
|
|
21
|
+
let MetricsConfigNode = class MetricsConfigNode extends NodeConstructor_1.ConfigNode {
|
|
22
|
+
constructor(node, config) {
|
|
23
|
+
super(node, config);
|
|
24
|
+
let _this = this;
|
|
25
|
+
this._metrics = MetricsService_1.MetricsService.get({ metricsEnabled: false, metricsReference: this.id() });
|
|
26
|
+
}
|
|
27
|
+
metrics() {
|
|
28
|
+
return this._metrics;
|
|
29
|
+
}
|
|
30
|
+
onWebhookRequest(request, response) {
|
|
31
|
+
response.set('Content-Type', prom_client_1.register.contentType);
|
|
32
|
+
this._metrics.registry().metrics().then((data) => response.status(200).send(data));
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.MetricsConfigNode = MetricsConfigNode;
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, WebhookDecorator_1.Webhook)({ name: "MetricsConfigNode", methods: [WebhookServerService_1.EndpointMethodType.GET] }),
|
|
38
|
+
__metadata("design:type", Function),
|
|
39
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
40
|
+
__metadata("design:returntype", void 0)
|
|
41
|
+
], MetricsConfigNode.prototype, "onWebhookRequest", null);
|
|
42
|
+
exports.MetricsConfigNode = MetricsConfigNode = __decorate([
|
|
43
|
+
(0, NodeDescriptionDecorator_1.NodeDescription)({
|
|
44
|
+
id: "MetricsConfigNode",
|
|
45
|
+
name: "Metrics Config Node",
|
|
46
|
+
group: "config",
|
|
47
|
+
sourceFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "MetricsConfigNode.html",
|
|
48
|
+
package: "@theotherwillembotha/node-red-plugincore",
|
|
49
|
+
templates: [
|
|
50
|
+
{ template: WebhookTemplate_1.WebhookTemplate, config: {} }
|
|
51
|
+
],
|
|
52
|
+
dependencies: [MetricsService_1.MetricsService],
|
|
53
|
+
tags: []
|
|
54
|
+
}),
|
|
55
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
56
|
+
], MetricsConfigNode);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Node } from "node-red";
|
|
2
|
+
import { ConfigNode, ConfigNodeConfig } from "../../NodeConstructor";
|
|
3
|
+
import { MetricsContainer, BucketType, HistogramMetric, PercentileType, SummaryMetric } from "../service/MetricsService";
|
|
4
|
+
import { MetricsTemplateConfig } from "../template/MetricsTemplate";
|
|
5
|
+
import { MetricCollectorType } from "../MetricsDecorator";
|
|
6
|
+
interface TimerMetricConfigNodeConfig extends ConfigNodeConfig, MetricsTemplateConfig {
|
|
7
|
+
description: string;
|
|
8
|
+
metricType: MetricCollectorType;
|
|
9
|
+
buckettype: BucketType;
|
|
10
|
+
buckettype_manual_intervals: string;
|
|
11
|
+
buckettype_linear_start: string;
|
|
12
|
+
buckettype_linear_interval: string;
|
|
13
|
+
buckettype_linear_count: string;
|
|
14
|
+
buckettype_exponential_start: string;
|
|
15
|
+
buckettype_exponential_factor: string;
|
|
16
|
+
buckettype_exponential_count: string;
|
|
17
|
+
percentiletype: PercentileType;
|
|
18
|
+
percentiletype_manual_intervals: string;
|
|
19
|
+
}
|
|
20
|
+
export declare class TimerMetricConfigNode extends ConfigNode<TimerMetricConfigNodeConfig> {
|
|
21
|
+
private _metrics;
|
|
22
|
+
private _timer;
|
|
23
|
+
constructor(node: Node, config: TimerMetricConfigNodeConfig);
|
|
24
|
+
metrics(): MetricsContainer;
|
|
25
|
+
timer(): HistogramMetric | SummaryMetric;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=TimerMetricConfigNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimerMetricConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/TimerMetricConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAA+B,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,gBAAgB,EAAkB,UAAU,EAAE,eAAe,EAA8C,cAAc,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAA;AAGnL,OAAO,EAAmB,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK1D,UAAU,2BAA4B,SAAQ,gBAAgB,EAAE,qBAAqB;IACjF,WAAW,EAAC,MAAM,CAAC;IACnB,UAAU,EAAE,mBAAmB,CAAC;IAEhC,UAAU,EAAE,UAAU,CAAC;IACvB,2BAA2B,EAAC,MAAM,CAAC;IACnC,uBAAuB,EAAC,MAAM,CAAC;IAC/B,0BAA0B,EAAC,MAAM,CAAC;IAClC,uBAAuB,EAAC,MAAM,CAAC;IAC/B,4BAA4B,EAAC,MAAM,CAAC;IACpC,6BAA6B,EAAC,MAAM,CAAC;IACrC,4BAA4B,EAAC,MAAM,CAAC;IAEpC,cAAc,EAAC,cAAc,CAAC;IAC9B,+BAA+B,EAAC,MAAM,CAAC;CAC1C;AAED,qBAYa,qBAAsB,SAAQ,UAAU,CAAC,2BAA2B,CAAC;IAC9E,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAiC;gBAEnC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,2BAA2B;IAiEpD,OAAO,IAAG,gBAAgB;IAI1B,KAAK,IAAG,eAAe,GAAC,aAAa;CAG/C"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
<script type="text/javascript" template-section="onCompose">
|
|
2
|
+
node
|
|
3
|
+
.addDefault("name", { value:"Timer Example", required:true})
|
|
4
|
+
.addDefault("description", {value:"an example gauge", required:false})
|
|
5
|
+
.addDefault("metricType", {required:true})
|
|
6
|
+
.addDefault("buckettype", {value:"Default", required:false})
|
|
7
|
+
.addDefault("buckettype_manual_intervals", {value:"0.001, 0.01, 0.1, 1, 2, 5", required:false})
|
|
8
|
+
.addDefault("buckettype_linear_start", {value:"0", required:false})
|
|
9
|
+
.addDefault("buckettype_linear_interval", {value:"5", required:false})
|
|
10
|
+
.addDefault("buckettype_linear_count", {value:"10", required:false})
|
|
11
|
+
.addDefault("buckettype_exponential_start", {value:"1", required:false})
|
|
12
|
+
.addDefault("buckettype_exponential_factor", {value:"2", required:false})
|
|
13
|
+
.addDefault("buckettype_exponential_count", {value:"10", required:false})
|
|
14
|
+
.addDefault("percentiletype", {value:"Default", required:false})
|
|
15
|
+
.addDefault("percentiletype_manual_intervals", {value:"0.01, 0.1, 0.9, 0.99", required:false})
|
|
16
|
+
|
|
17
|
+
.setPaletteLabel("Timer Metric Config")
|
|
18
|
+
.setLabel(function() {return this.name })
|
|
19
|
+
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<script type="text/javascript" template-section="onIncludeEditPrepare">
|
|
23
|
+
{
|
|
24
|
+
let node = this;
|
|
25
|
+
|
|
26
|
+
// bucket generator selection
|
|
27
|
+
let selectBucketType = function(value){
|
|
28
|
+
$("#TimerMetricConfig").find(".metricsconfig_buckets").hide();
|
|
29
|
+
$("#TimerMetricConfig").find(`.metricsconfig_buckets_${value}`).show();
|
|
30
|
+
};
|
|
31
|
+
let bucketTypeSelection = $("#node-config-input-buckettype");
|
|
32
|
+
bucketTypeSelection.typedInput({type:"buckettype", types:[{
|
|
33
|
+
value: "buckettype",
|
|
34
|
+
options: [
|
|
35
|
+
{ value: "default", label: "Default"},
|
|
36
|
+
{ value: "manual", label: "Manual"},
|
|
37
|
+
{ value: "linear", label: "Linear"},
|
|
38
|
+
{ value: "exponential", label: "Exponential"},
|
|
39
|
+
]
|
|
40
|
+
}]});
|
|
41
|
+
bucketTypeSelection.on("change", () => selectBucketType(bucketTypeSelection.val()));
|
|
42
|
+
selectBucketType(bucketTypeSelection.val());
|
|
43
|
+
|
|
44
|
+
// percentile type selection.
|
|
45
|
+
let selectPercentileType = function(value){
|
|
46
|
+
$("#TimerMetricConfig").find(".metricsconfig_percentiles").hide();
|
|
47
|
+
$("#TimerMetricConfig").find(`.metricsconfig_percentiles_${value}`).show();
|
|
48
|
+
}
|
|
49
|
+
let percentileTypeSelection = $("#node-config-input-percentiletype");
|
|
50
|
+
percentileTypeSelection.typedInput({type:"percentiletype", types:[{
|
|
51
|
+
value: "percentiletype",
|
|
52
|
+
options: [
|
|
53
|
+
{ value: "default", label: "Default"},
|
|
54
|
+
{ value: "manual", label: "Manual"},
|
|
55
|
+
]
|
|
56
|
+
}]});
|
|
57
|
+
percentileTypeSelection.on("change", () => selectPercentileType(percentileTypeSelection.val()));
|
|
58
|
+
selectPercentileType(percentileTypeSelection.val());
|
|
59
|
+
|
|
60
|
+
// metric type selection.
|
|
61
|
+
let selectMetricType = function(value){
|
|
62
|
+
// show/hide the relevant metric type section.
|
|
63
|
+
$("#TimerMetricConfig").find(`.metrictype`).hide();
|
|
64
|
+
$("#TimerMetricConfig").find(`.metrictype_${value}`).show();
|
|
65
|
+
|
|
66
|
+
bucketTypeSelection.trigger("change");
|
|
67
|
+
percentileTypeSelection.trigger("change");
|
|
68
|
+
}
|
|
69
|
+
let metricTypeSelection = $("#node-config-input-metricType");
|
|
70
|
+
metricTypeSelection.typedInput({type:"metricType", types:[{
|
|
71
|
+
value: "metricType",
|
|
72
|
+
options: [
|
|
73
|
+
{ value: "histogram", label: "Histogram"},
|
|
74
|
+
{ value: "summary", label: "Summary"},
|
|
75
|
+
]
|
|
76
|
+
}]});
|
|
77
|
+
metricTypeSelection.on("change", () => selectMetricType(metricTypeSelection.val()));
|
|
78
|
+
selectMetricType(metricTypeSelection.val());
|
|
79
|
+
|
|
80
|
+
// enable the metrics by default and hide the Enable metrics button.
|
|
81
|
+
let metricsEnabled = $("#node-config-input-metricsEnabled");
|
|
82
|
+
metricsEnabled.prop('checked', true);
|
|
83
|
+
metricsEnabled.trigger("change");
|
|
84
|
+
$("#section_metricsconfig").find(".metricsEnableCheck").hide();
|
|
85
|
+
}
|
|
86
|
+
</script>
|
|
87
|
+
|
|
88
|
+
<script type="text/html" template-section="onIncludeEditForm">
|
|
89
|
+
<div id="TimerMetricConfig">
|
|
90
|
+
<div class="form-row">
|
|
91
|
+
<label class="towb_editorlabel" for="node-config-input-name"><i class="fa fa-tag"></i> Name</label>
|
|
92
|
+
<input type="text" id="node-config-input-name" />
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<div class="form-row">
|
|
96
|
+
<label class="towb_editorlabel" for="node-config-input-description"><i class="fa fa-tag"></i> Description</label>
|
|
97
|
+
<input type="text" id="node-config-input-description" />
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<div class="form-row">
|
|
101
|
+
<label class="towb_editorlabel" for="node-config-input-metricType"><i class="fa fa-tag"></i> Type</label>
|
|
102
|
+
<input class="towb_editorfield" type="text" id="node-config-input-metricType" />
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<div class="metrictype metrictype_histogram">
|
|
106
|
+
<div class="form-row">
|
|
107
|
+
<label class="towb_editorlabel" for="node-config-input-buckettype"><i class="fa fa-tag"></i> Bucket Type</label>
|
|
108
|
+
<input class="towb_editorfield" type="text" id="node-config-input-buckettype" />
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<div class="metricsconfig_buckets metricsconfig_buckets_default">
|
|
112
|
+
<span>Default bucket sizes configured as 0.001, 0.01, 0.1, 1, 2, 5 seconds</span>
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<div class="metricsconfig_buckets metricsconfig_buckets_manual">
|
|
116
|
+
<div class="form-row">
|
|
117
|
+
<label class="towb_editorlabel" for="node-config-input-buckettype_manual_intervals"><i class="fa fa-tag"></i> Buckets</label>
|
|
118
|
+
<input type="text" id="node-config-input-buckettype_manual_intervals" placeholder="0.001, 0.01, 0.1, 1, 2, 5", value="0.001, 0.01, 0.1, 1, 2, 5"/>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
<div class="metricsconfig_buckets metricsconfig_buckets_linear">
|
|
123
|
+
<div class="form-row">
|
|
124
|
+
<label class="towb_editorlabel" for="node-config-input-buckettype_linear_start"><i class="fa fa-tag"></i> Start</label>
|
|
125
|
+
<input class="towb_editorfield_short" type="text" id="node-config-input-buckettype_linear_start" placeholder="0.000", value="0.000"/>
|
|
126
|
+
</div>
|
|
127
|
+
<div class="form-row">
|
|
128
|
+
<label class="towb_editorlabel" for="node-config-input-buckettype_linear_inteval"><i class="fa fa-tag"></i> Interval</label>
|
|
129
|
+
<input class="towb_editorfield_short" type="text" id="node-config-input-buckettype_linear_interval" placeholder="10", value="10"/>
|
|
130
|
+
</div>
|
|
131
|
+
<div class="form-row">
|
|
132
|
+
<label class="towb_editorlabel" for="node-config-input-buckettype_linear_count"><i class="fa fa-tag"></i> Count</label>
|
|
133
|
+
<input class="towb_editorfield_short" type="text" id="node-config-input-buckettype_linear_count" placeholder="10", value="10"/>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
<div class="metricsconfig_buckets metricsconfig_buckets_exponential">
|
|
138
|
+
<div class="form-row">
|
|
139
|
+
<label class="towb_editorlabel" for="node-config-input-buckettype_exponential_start"><i class="fa fa-tag"></i> Start</label>
|
|
140
|
+
<input class="towb_editorfield_short" type="text" id="node-config-input-buckettype_exponential_start" placeholder="1", value="1"/>
|
|
141
|
+
</div>
|
|
142
|
+
<div class="form-row">
|
|
143
|
+
<label class="towb_editorlabel" for="node-config-input-buckettype_exponential_factor"><i class="fa fa-tag"></i> Factor</label>
|
|
144
|
+
<input class="towb_editorfield_short" type="text" id="node-config-input-buckettype_exponential_factor" placeholder="2", value="2"/>
|
|
145
|
+
</div>
|
|
146
|
+
<div class="form-row">
|
|
147
|
+
<label class="towb_editorlabel" for="node-config-input-buckettype_exponential_count"><i class="fa fa-tag"></i> Count</label>
|
|
148
|
+
<input class="towb_editorfield_short" type="text" id="node-config-input-buckettype_exponential_count" placeholder="10", value="10"/>
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
<div class="metrictype metrictype_summary">
|
|
154
|
+
<div class="form-row">
|
|
155
|
+
<label class="towb_editorlabel" for="node-config-input-percentiletype"><i class="fa fa-tag"></i> Percentile Type</label>
|
|
156
|
+
<input type="text" id="node-config-input-percentiletype" />
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<div class="metricsconfig_percentiles metricsconfig_percentiles_default">
|
|
160
|
+
<span>Default percentille sizes configured as [0.01, 0.1, 0.9, 0.99]</span>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<div class="metricsconfig_percentiles metricsconfig_percentiles_manual">
|
|
164
|
+
<div class="form-row">
|
|
165
|
+
<label class="towb_editorlabel" for="node-config-input-percentiletype_manual_intervals"><i class="fa fa-tag"></i> Percentiles</label>
|
|
166
|
+
<input class="towb_editorfield" type="text" id="node-config-input-percentiletype_manual_intervals" placeholder="0.01, 0.1, 0.9, 0.99", value="0.01, 0.1, 0.9, 0.99"/>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
</script>
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
<script type="text/markdown" template-section="onIncludeDocumentation">
|
|
175
|
+
Configuration node for the Timer Metrics
|
|
176
|
+
|
|
177
|
+
### Inputs
|
|
178
|
+
: *name* (string) : The common name for the timer.
|
|
179
|
+
: *description* (string) : A description for the timer
|
|
180
|
+
: *type* (string) : the type of timer metric ie. Histogram or Summary
|
|
181
|
+
|
|
182
|
+
#### Histogram
|
|
183
|
+
: *type* (string) : the type of timer metric ie. Histogram or Summary
|
|
184
|
+
|
|
185
|
+
#### Summary
|
|
186
|
+
: *percentile type* (string) : the type of percentile strategy. currently supported are default and manual
|
|
187
|
+
: *percentiles* (string) : a comma separated list of percentiles to group observations into. note that the scale goes from 0 to 1.
|
|
188
|
+
|
|
189
|
+
</script>
|
|
190
|
+
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TimerMetricConfigNode = void 0;
|
|
13
|
+
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
14
|
+
const MetricsService_1 = require("../service/MetricsService");
|
|
15
|
+
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
16
|
+
const MetricsConfigNode_1 = require("./MetricsConfigNode");
|
|
17
|
+
const MetricsTemplate_1 = require("../template/MetricsTemplate");
|
|
18
|
+
const MetricsDecorator_1 = require("../MetricsDecorator");
|
|
19
|
+
const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
|
|
20
|
+
let TimerMetricConfigNode = class TimerMetricConfigNode extends NodeConstructor_1.ConfigNode {
|
|
21
|
+
constructor(node, config) {
|
|
22
|
+
super(node, config);
|
|
23
|
+
let _this = this;
|
|
24
|
+
this._metrics = NodeConstructor_1.NodeManager.RED.nodes.getNode(config.metricsReference).node().metrics();
|
|
25
|
+
let bucketConfig = {};
|
|
26
|
+
switch (config.buckettype) {
|
|
27
|
+
case MetricsService_1.BucketType.default: {
|
|
28
|
+
// do nothing
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
case MetricsService_1.BucketType.manual: {
|
|
32
|
+
bucketConfig.intervals = config.buckettype_manual_intervals.split(",").map(i => Number.parseFloat(i.trim()));
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
case MetricsService_1.BucketType.linear: {
|
|
36
|
+
bucketConfig.start = config.buckettype_linear_start;
|
|
37
|
+
bucketConfig.interval = config.buckettype_linear_interval;
|
|
38
|
+
bucketConfig.count = config.buckettype_linear_count;
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
case MetricsService_1.BucketType.exponential: {
|
|
42
|
+
bucketConfig.start = config.buckettype_exponential_start;
|
|
43
|
+
bucketConfig.factor = config.buckettype_exponential_factor;
|
|
44
|
+
bucketConfig.count = config.buckettype_exponential_count;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (config.metricType === MetricsDecorator_1.MetricCollectorType.histogram) {
|
|
49
|
+
let timerConfig = {
|
|
50
|
+
node: {
|
|
51
|
+
id: this.id(),
|
|
52
|
+
name: this.name(),
|
|
53
|
+
flow: this.flow(),
|
|
54
|
+
type: this.type()
|
|
55
|
+
},
|
|
56
|
+
buckettype: config.buckettype,
|
|
57
|
+
bucketconfig: bucketConfig,
|
|
58
|
+
metricname: config.name,
|
|
59
|
+
metricdescription: config.description
|
|
60
|
+
};
|
|
61
|
+
this._timer = this._metrics.histogram(timerConfig);
|
|
62
|
+
}
|
|
63
|
+
if (config.metricType === MetricsDecorator_1.MetricCollectorType.summary) {
|
|
64
|
+
let timerConfig = {
|
|
65
|
+
node: {
|
|
66
|
+
id: this.id(),
|
|
67
|
+
name: this.name(),
|
|
68
|
+
flow: this.flow(),
|
|
69
|
+
type: this.type()
|
|
70
|
+
},
|
|
71
|
+
percentileType: config.percentiletype,
|
|
72
|
+
percentileConfig: config.percentiletype_manual_intervals,
|
|
73
|
+
metricname: config.name,
|
|
74
|
+
metricdescription: config.description,
|
|
75
|
+
};
|
|
76
|
+
this._timer = this._metrics.summary(timerConfig);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
metrics() {
|
|
80
|
+
return this._metrics;
|
|
81
|
+
}
|
|
82
|
+
timer() {
|
|
83
|
+
return this._timer;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
exports.TimerMetricConfigNode = TimerMetricConfigNode;
|
|
87
|
+
exports.TimerMetricConfigNode = TimerMetricConfigNode = __decorate([
|
|
88
|
+
(0, NodeDescriptionDecorator_1.NodeDescription)({
|
|
89
|
+
id: "TimerMetricConfigNode",
|
|
90
|
+
name: "Timer Metric Config Node",
|
|
91
|
+
group: "config",
|
|
92
|
+
sourceFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "TimerMetricConfigNode.html",
|
|
93
|
+
package: "@theotherwillembotha/node-red-plugincore",
|
|
94
|
+
templates: [
|
|
95
|
+
{ template: MetricsTemplate_1.MetricsTemplate, config: { isConfigNode: true } }
|
|
96
|
+
],
|
|
97
|
+
dependencies: [MetricsConfigNode_1.MetricsConfigNode, MetricsService_1.MetricsService],
|
|
98
|
+
tags: ["Core", "Metric"]
|
|
99
|
+
}),
|
|
100
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
101
|
+
], TimerMetricConfigNode);
|