From 9b18bf46a65804dd4e27d311c1aac0869330306f Mon Sep 17 00:00:00 2001 From: DenisN Date: Tue, 17 Jun 2025 09:37:24 -0400 Subject: [PATCH] CalcUpdate --- src/app.module.ts | 3 ++- src/database/database.module.ts | 4 ++++ src/zvksmetrics/conf/ranges.json | 2 +- src/zvksmetrics/zvksmetrics.service.ts | 27 ++++++++++++++++++++------ 4 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 src/database/database.module.ts diff --git a/src/app.module.ts b/src/app.module.ts index 0943e36..6d9b5c4 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -3,9 +3,10 @@ import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ZvksmetricsModule } from './zvksmetrics/zvksmetrics.module'; import { GruberModule } from './gruber/gruber.module'; +import { DatabaseModule } from './database/database.module'; @Module({ - imports: [ZvksmetricsModule, GruberModule], + imports: [ZvksmetricsModule, GruberModule, DatabaseModule], controllers: [AppController], providers: [AppService], }) diff --git a/src/database/database.module.ts b/src/database/database.module.ts new file mode 100644 index 0000000..8ad09ca --- /dev/null +++ b/src/database/database.module.ts @@ -0,0 +1,4 @@ +import { Module } from '@nestjs/common'; + +@Module({}) +export class DatabaseModule {} diff --git a/src/zvksmetrics/conf/ranges.json b/src/zvksmetrics/conf/ranges.json index c2dc6fb..3390400 100644 --- a/src/zvksmetrics/conf/ranges.json +++ b/src/zvksmetrics/conf/ranges.json @@ -1 +1 @@ -[{"name":"cpu_utilization","ranges":[{"min":0,"max":60,"status":1},{"min":60,"max":80,"status":2},{"min":80,"max":90,"status":3},{"min":90,"max":100,"status":4}]},{"name":"cpu_load_average_1","ranges":[{"min":0,"max":60,"status":1},{"min":60,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"cpu_load_average_5","ranges":[{"min":0,"max":60,"status":1},{"min":61,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"cpu_load_average_15","ranges":[{"min":0,"max":60,"status":1},{"min":61,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"ram_usage","ranges":[{"min":0,"max":30,"status":1},{"min":30,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"disk_usage","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"disk_read_rate","ranges":[{"min":0,"max":100,"status":1},{"min":101,"max":300,"status":2},{"min":301,"max":500,"status":3},{"min":501,"max":5000,"status":4}]},{"name":"disk_write_rate","ranges":[{"min":0,"max":100,"status":1},{"min":101,"max":300,"status":2},{"min":301,"max":500,"status":3},{"min":501,"max":5000,"status":4}]},{"name":"network_interface_rx_Eth_1","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_tx_Eth_1","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_rx_Eth_2","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_tx_Eth_2","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_rx_Eth_3","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_tx_Eth_3","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_rx_Eth_4","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_tx_Eth_4","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_errors_Eth_1","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_errors_Eth_1","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_errors_Eth_2","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_errors_Eth_2","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_errors_Eth_3","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_errors_Eth_3","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_errors_Eth_4","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_errors_Eth_4","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_discarded_Eth_1","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_discarded_Eth_1","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_discarded_Eth_2","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_discarded_Eth_2","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_discarded_Eth_3","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_discarded_Eth_3","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_discarded_Eth_4","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_discarded_Eth_4","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"response_icmp","ranges":[{"min":0,"max":100,"status":1},{"min":101,"max":200,"status":2},{"min":201,"max":300,"status":3},{"min":301,"max":1000,"status":4}]},{"name":"server_uptime","ranges":[{"min":0,"max":0,"status":4},{"min":1,"max":1000,"status":1}]},{"name":"total_participants","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"registered_abonents","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"webcasts_HLS_clients","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"total_P2P_rooms","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"conferences_total","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"conferences_active","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"records_active","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"number_of_records_saved","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"replication_status","ranges":[{"min":0,"max":0,"status":4},{"min":1,"max":1,"status":1}]}] \ No newline at end of file +[{"name":"cpu_utilization","ranges":[{"min":0,"max":50,"status":1},{"min":51,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"cpu_load_average_1","ranges":[{"min":0,"max":60,"status":1},{"min":61,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"cpu_load_average_5","ranges":[{"min":0,"max":60,"status":1},{"min":61,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"cpu_load_average_15","ranges":[{"min":0,"max":60,"status":1},{"min":61,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"ram_usage","ranges":[{"min":0,"max":60,"status":1},{"min":61,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"disk_usage","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"disk_read_rate","ranges":[{"min":0,"max":100,"status":1},{"min":101,"max":300,"status":2},{"min":301,"max":500,"status":3},{"min":501,"max":5000,"status":4}]},{"name":"disk_write_rate","ranges":[{"min":0,"max":100,"status":1},{"min":101,"max":300,"status":2},{"min":301,"max":500,"status":3},{"min":501,"max":5000,"status":4}]},{"name":"network_interface_rx_Eth_1","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_tx_Eth_1","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_rx_Eth_2","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_tx_Eth_2","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_rx_Eth_3","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_tx_Eth_3","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_rx_Eth_4","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interface_tx_Eth_4","ranges":[{"min":0,"max":70,"status":1},{"min":71,"max":80,"status":2},{"min":81,"max":90,"status":3},{"min":91,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_errors_Eth_1","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_errors_Eth_1","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_errors_Eth_2","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_errors_Eth_2","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_errors_Eth_3","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_errors_Eth_3","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_errors_Eth_4","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_errors_Eth_4","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_discarded_Eth_1","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_discarded_Eth_1","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_discarded_Eth_2","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_discarded_Eth_2","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_discarded_Eth_3","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_discarded_Eth_3","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_read_packets_discarded_Eth_4","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"network_interfaces_write_packets_discarded_Eth_4","ranges":[{"min":0,"max":1,"status":1},{"min":2,"max":10,"status":2},{"min":11,"max":20,"status":3},{"min":21,"max":100,"status":4}]},{"name":"response_icmp","ranges":[{"min":0,"max":100,"status":1},{"min":101,"max":200,"status":2},{"min":201,"max":300,"status":3},{"min":301,"max":1000,"status":4}]},{"name":"server_uptime","ranges":[{"min":0,"max":0,"status":4},{"min":1,"max":1000,"status":1}]},{"name":"total_participants","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"registered_abonents","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"webcasts_HLS_clients","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"total_P2P_rooms","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"conferences_total","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"conferences_active","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"records_active","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"number_of_records_saved","ranges":[{"min":0,"max":10,"status":1},{"min":11,"max":30,"status":2},{"min":31,"max":50,"status":3},{"min":51,"max":1000,"status":4}]},{"name":"replication_status","ranges":[{"min":0,"max":0,"status":4},{"min":1,"max":1,"status":1}]}] \ No newline at end of file diff --git a/src/zvksmetrics/zvksmetrics.service.ts b/src/zvksmetrics/zvksmetrics.service.ts index 18e8dff..e306b1b 100644 --- a/src/zvksmetrics/zvksmetrics.service.ts +++ b/src/zvksmetrics/zvksmetrics.service.ts @@ -3,7 +3,7 @@ import axios, { Axios, AxiosResponse } from 'axios'; import { readFile, writeFile } from 'node:fs/promises'; import { response } from 'express'; import { json } from 'node:stream/consumers'; -import math, { create, all, evaluate, number, random, complex, string } from 'mathjs' +import math, { create, all, evaluate, number, random, complex, string, SQRT1_2 } from 'mathjs' @Injectable() @@ -127,7 +127,7 @@ export class ZvksmetricsService { for (let i = 0; i < length; i++) { let metr = {"source": ""}; let val = await this.setComplexMetricValue(complexCalc[i].values, complexCalc[i].formula, inputData.metrics, prevousData.metrics, devices[d], metr); - if(val){ + if(val !=null || val != undefined){ let complexMetric = new MetricK2(); complexMetric.id = complexCalc[i].id; complexMetric.name = complexCalc[i].name; @@ -148,28 +148,43 @@ export class ZvksmetricsService { return complexData; } - async setComplexMetricValue(value: string, formula: string, currMetrics: MetricK2[], prevMetrics: MetricK2[], device: number, obj: any): Promise { + async setComplexMetricValue(value: string, formula: string, currMetrics: MetricK2[], prevMetrics: MetricK2[], device: number, obj: any): Promise { const val = JSON.parse(JSON.stringify(value)); let arr = val.arr; + // let dev = currMetrics.find(element => element.id == "measure_1217")?.id; + // console.log(dev); let arr_len: number = arr.length; obj.source = currMetrics.find(element => element.name == arr[0] && element.device == device)?.source; // console.log(obj.source); for (let i = 0; i < arr_len; i++) { + let temp = arr[i]; arr[i] = currMetrics.find(element => element.name == arr[i] && element.device == device)?.value; + + // if(!arr[i]){ + // console.log(arr[i], temp, device); + // arr[i]=0; + // } } let prevarr = val.prevarr; if (prevarr) { let prevarr_len: number = prevarr.length; for (let i = 0; i < prevarr_len; i++) { - prevarr[i] = prevMetrics.find(element => element.name == prevarr[i] && element.device == device)?.value; + let temp1 = prevarr[i]; + prevarr[i] = prevMetrics.find(element => element.name == prevarr[i] && element.device == device)?.value; + // console.log(prevarr[i], temp1, device); } } // console.log(obj.soure); - let result: number = evaluate(formula, val); + try{ + let result: number = evaluate(formula, val); + // console.log(result); + return result; // console.log(result); - return result; + } catch { + return null; + } } async setMetricsStatus(metric: MetricK2, scope: MetricsRanges[]): Promise {