New integration vtnhbr

main
DenisN 2025-08-06 10:13:49 -04:00
parent d3f1924844
commit 76ce60060f
3 changed files with 1130 additions and 24 deletions

View File

@ -3,9 +3,10 @@
"id": "90001",
"name": "server_li",
"values": {
"cmplxarr": [
"cpu_utilization",
"statusarr": [
"cpu_load_average_1",
"ram_usage",
"disk_usage",
"disk_read_rate",
"disk_write_rate",
"network_interface_rx_Eth_1",
@ -24,7 +25,7 @@
"0.1"
]
},
"formula": "cmplxarr[1]*warr[1]+cmplxarr[2]*warr[2]+(cmplxarr[3]+cmplxarr[4])/2*warr[3]+(cmplxarr[5]+cmplxarr[6]+cmplxarr[7]+cmplxarr[8]+cmplxarr[9]+cmplxarr[10]+cmplxarr[11]+cmplxarr[12])/2*warr[4]"
"formula": "100 * (1 - (statusarr[1]*warr[1]+statusarr[2]*warr[1]+statusarr[3]*warr[4]+statusarr[4]*warr[3]+statusarr[4]*warr[3]+statusarr[5]*warr[3]+statusarr[6]*warr[3]+statusarr[7]*warr[3]+statusarr[8]*warr[3]+statusarr[9]*warr[3]+statusarr[10]*warr[3]+statusarr[11]*warr[3]+statusarr[12]*warr[3]+statusarr[13]*warr[3])/(warr[1]+warr[1]+warr[4]+warr[3]+warr[3]+warr[3]+warr[3]+warr[3]+warr[3]+warr[3]+warr[3]+warr[3]+warr[3]+warr[3]))"
},
{
"id": "90002",

File diff suppressed because one or more lines are too long

View File

@ -150,11 +150,11 @@ export class ZvksmetricsService {
// const jsonData = require('../conf/devices.json');
// console.log(jsonData);
let uptimeElements = inputData.metrics.filter(element=> element.name == 'upTime');
if(uptimeElements){
for(let uptime of uptimeElements){
let uptimeElements = inputData.metrics.filter(element => element.name == 'upTime');
if (uptimeElements) {
for (let uptime of uptimeElements) {
let uptStr: any = uptime?.value.toString().split(' ');
uptime.value = (+uptStr[0])*3600+(uptStr[2])*60+(+uptStr[4]);
uptime.value = (+uptStr[0]) * 3600 + (uptStr[2]) * 60 + (+uptStr[4]);
}
}
for (let d = 0; d < device_len; d++) {
@ -197,7 +197,7 @@ export class ZvksmetricsService {
for (let d = 0; d < device_len; d++) {
for (let i = 0; i < length; i++) {
let metr = { "source": "" };
let val = await this.setIntegrationMetricValue(intgrationCalc[i].values, intgrationCalc[i].formula, complexData.metrics, devices[d], metr);
let val = await this.setIntegrationMetricValue(intgrationCalc[i].values, intgrationCalc[i].formula, intgrationCalc[i].name, complexData.metrics, devices[d], metr);
if (val != null || val != undefined) {
let integrationMetric = new MetricK2();
integrationMetric.id = intgrationCalc[i].id;
@ -254,33 +254,48 @@ export class ZvksmetricsService {
let result: number = evaluate(formula, val);
// console.log(result);
return result;
// console.log(result);
} catch {
return null;
}
}
async setIntegrationMetricValue(value: string, formula: string, metrics: MetricK2[], device: number, obj: any): Promise<any> {
async setIntegrationMetricValue(value: string, formula: string, metricName: string, metrics: MetricK2[], device: number, obj: any): Promise<any> {
const val = JSON.parse(JSON.stringify(value));
let arr = val.statusarr;
let arr_len: number = 13; //arr.length;
// console.log (metricName);
if(metricName == "application_li"){
arr = val.cmplxarr;
arr_len = 4;
}
// console.log(arr);
// console.log(val.cmplxarr);
let arr = val.cmplxarr;
let arr_len: number = arr.length;
obj.source = metrics.find(element => element.name == arr[0] && element.device == device)?.source;
for (let i = 0; i < arr_len; i++) {
let temp = arr[i];
arr[i] = metrics.find(element => element.name == arr[i] && element.device == device)?.value;
if(arr[i]==undefined || arr[i]==null || Number.isNaN(arr[i])){
arr[i]=Math.random()*10;
// let temp = arr[i];
if(metricName == "server_li"){
arr[i] = metrics.find(element => element.name == arr[i] && element.device == device)?.status;
if(arr[i]!=0) {
arr[i]--;
}
// console.log(arr[i]);
}
if(metricName == "application_li"){
arr[i] = metrics.find(element => element.name == arr[i] && element.device == device)?.value;
}
// console.log(arr[i]);
if (arr[i] == undefined || arr[i] == null || Number.isNaN(arr[i])) {
arr[i] = Math.random() * 10;
}
// console.log(arr[i]);
}
try {
let result: number = evaluate(formula, val);
// console.log(result);
console.log(metricName, result);
return result;
} catch {
return null;