After Disk Recovery

main
DenisN 2025-05-05 09:10:47 -04:00
parent 5e3d836b29
commit d8e5c9af6a
4 changed files with 70 additions and 18 deletions

View File

@ -0,0 +1,20 @@
[
{
"name": "CPU usage",
"values": "{\"arr\":[191, 192, 193]}",
"formula": "arr[1]+arr[2]+arr[3]"
},
{
"name": "RAM usage",
"values": "{\"arr\":[191, 192, 193]}",
"formula": "arr[1]+arr[2]+arr[3]"
},
{
"name": "Hard disks usage",
"values": "{\"arr\":[191, 192, 193]}",
"formula": "arr[1]+arr[2]+arr[3]"
}
]

View File

@ -2,19 +2,19 @@
{ {
"name": "measure_190", "_comment":"Загрузка процессора за 1 минуту", "name": "measure_190", "_comment":"Загрузка процессора за 1 минуту",
"ranges": [ "ranges": [
{"min": 0, "max": 0, "status": 3, "sum": "a+b*a-a"}, {"min": 0, "max": 0, "status": 3},
{"min": 0, "max": 0.1, "status": 0, "sum": "val: a+b"}, {"min": 0, "max": 0.1, "status": 0},
{"min": 0.11, "max": 0.12, "status": 1, "sum": "a+b"} , {"min": 0.11, "max": 0.12, "status": 1},
{"min": 0.13, "max": 1, "status": 2, "sum": "a+b"}, {"min": 0.13, "max": 1, "status": 2},
{"min": 0.5, "max": 0.8, "status": 1, "sum": "a+b"} {"min": 0.5, "max": 0.8, "status": 1}
] ]
}, },
{ {
"name": "measure_191", "_comment":"Загрузка процессора за 5 минут", "name": "measure_191", "_comment":"Загрузка процессора за 5 минут",
"ranges": [ "ranges": [
{"min": 0, "max": 0.2, "status": 0, "sum": "a+b"}, {"min": 0, "max": 0.2, "status": 0},
{"min": 0.21, "max": 0.32, "status": 1, "sum": "a+b"}, {"min": 0.21, "max": 0.32, "status": 1},
{"min": 0.33, "max": 1, "status": 2, "sum": "a+b"} {"min": 0.33, "max": 1, "status": 2}
] ]
} }
] ]

View File

@ -16,12 +16,22 @@ export class ZvksmetricsController {
return sum.value; return sum.value;
} }
//Заглушка для будующей API //Заглушка для будующей API под граничные значения
@Options('config/:code') @Options('ranges/:code')
async showConfig (@Param('code', ParseIntPipe) code: number): Promise<JSON>{ async showRanges (@Param('code', ParseIntPipe) code: number): Promise<JSON>{
let ret : JSON = JSON.parse('{"result":"null"}'); let ret : JSON = JSON.parse('{"result":"null"}');
if(code === 9999){ if(code === 9999){
return await this.metricsService.showRangesConfig('File Name'); return await this.metricsService.showRangesOptions('File Name');
}
return ret;
}
//Заглушка для будующей API под комплексные значения метрик
@Options('complex/:code')
async showComplexMetrics (@Param('code', ParseIntPipe) code: number): Promise<JSON>{
let ret : JSON = JSON.parse('{"result":"null"}');
if(code === 5555){
return await this.metricsService.showComplexMetricsConfig('File Name');
} }
return ret; return ret;
} }

View File

@ -28,7 +28,6 @@ export class RangeValues {
min: number; min: number;
max: number; max: number;
status: number; status: number;
sum: any;
}; };
@Injectable() @Injectable()
@ -49,14 +48,21 @@ export class ZvksmetricsService {
scope = await this.setMetricsRanges (); scope = await this.setMetricsRanges ();
let rng: any = {val: [{x:3}, {x:4}, {x:5}, {x:9}]}; // let rng: any = {val: [{x:3}, {x:4}, {x:5}, {x:9}]};
// console.log(rng.val[0].x); // console.log(rng.val[0].x);
let testFormula: string = (rng.val[0].x + rng.val[1].x - rng.val[2].x + rng.val[3].x).toString(); // let testFormula: string = (rng.val[0].x + rng.val[1].x - rng.val[2].x + rng.val[3].x).toString();
// let formula: string = scope[0].ranges[0].sum; // let formula: string = scope[0].ranges[0].sum;
// let value: any = {formula}; // let value: any = {formula};
console.log(evaluate(testFormula, rng)); // console.log(evaluate(testFormula, rng));
// console.log(JSON.stringify("arr:[191, 192, 193]"));
// let x: any = {arr:[191, 192, 193], sum: 'arr[1]+arr[2]+arr[3]'};
// let x: any = JSON.parse(scope[0].ranges[0].values);
// let y: string = scope[0].ranges[0].formula;
// console.log(y, x);
// console.log(evaluate(y, x));
let editedMetrics : K2Metrics = await this.getMetrics (inp, scope); let editedMetrics : K2Metrics = await this.getMetrics (inp, scope);
let responseFromExporter : any = await this.sendMetrics (editedMetrics); let responseFromExporter : any = await this.sendMetrics (editedMetrics);
@ -95,6 +101,7 @@ export class ZvksmetricsService {
await axios.post(path, body, options).then((response)=>{ await axios.post(path, body, options).then((response)=>{
resp = response.status + ' ' + response.data; resp = response.status + ' ' + response.data;
// console.log(resp);
}).catch((error)=>{ }).catch((error)=>{
resp = error; resp = error;
}); });
@ -120,7 +127,7 @@ export class ZvksmetricsService {
} }
async setMetricsRanges (@Body() rangesData : any = null) : Promise<MetricsRanges []> { async setMetricsRanges (@Body() rangesData : any = null) : Promise<MetricsRanges []> {
let url : string = 'http://192.168.2.39:9999/api/config/9999'; let url : string = 'http://192.168.2.39:9999/api/ranges/9999';
let options : any = { let options : any = {
headers: {'Content-Type' : 'application/json'} headers: {'Content-Type' : 'application/json'}
}; };
@ -134,7 +141,7 @@ export class ZvksmetricsService {
return rangesData; return rangesData;
} }
async showRangesConfig(filePath: string) : Promise<JSON> { async showRangesOptions(filePath: string) : Promise<JSON> {
let content : JSON = JSON.parse('{"name":"name"}'); let content : JSON = JSON.parse('{"name":"name"}');
filePath = './src/zvksmetrics/conf/ranges.json'; filePath = './src/zvksmetrics/conf/ranges.json';
try { try {
@ -146,4 +153,19 @@ export class ZvksmetricsService {
return content; return content;
} }
async showComplexMetricsConfig(filePath: string) : Promise<JSON> {
let content : JSON = JSON.parse('{"name":"name"}');
filePath = './src/zvksmetrics/conf/complex.json';
try {
content = JSON.parse(await readFile(filePath, { encoding: 'utf8' }));
}
catch {
console.log('Error read file');
}
return content;
}
}; };