Send Updated Status to Prometheus (Test)
parent
c7eea2fb71
commit
b2a3c07c59
|
|
@ -23,10 +23,13 @@
|
||||||
"@nestjs/common": "^11.0.1",
|
"@nestjs/common": "^11.0.1",
|
||||||
"@nestjs/core": "^11.0.1",
|
"@nestjs/core": "^11.0.1",
|
||||||
"@nestjs/platform-express": "^11.0.1",
|
"@nestjs/platform-express": "^11.0.1",
|
||||||
|
"axios": "1.8.4",
|
||||||
"module": "^1.2.5",
|
"module": "^1.2.5",
|
||||||
"mqtt": "^5.10.4",
|
"mqtt": "^5.10.4",
|
||||||
"reflect-metadata": "^0.2.2",
|
"reflect-metadata": "^0.2.2",
|
||||||
"rxjs": "^7.8.1"
|
"rxjs": "^7.8.1",
|
||||||
|
"source-map-resolve": "0.6.0",
|
||||||
|
"source-map-url": "0.4.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/eslintrc": "^3.2.0",
|
"@eslint/eslintrc": "^3.2.0",
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,9 @@ importers:
|
||||||
'@nestjs/platform-express':
|
'@nestjs/platform-express':
|
||||||
specifier: ^11.0.1
|
specifier: ^11.0.1
|
||||||
version: 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12)
|
version: 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12)
|
||||||
|
axios:
|
||||||
|
specifier: 1.8.4
|
||||||
|
version: 1.8.4(debug@2.6.9)
|
||||||
module:
|
module:
|
||||||
specifier: ^1.2.5
|
specifier: ^1.2.5
|
||||||
version: 1.2.5
|
version: 1.2.5
|
||||||
|
|
@ -29,6 +32,12 @@ importers:
|
||||||
rxjs:
|
rxjs:
|
||||||
specifier: ^7.8.1
|
specifier: ^7.8.1
|
||||||
version: 7.8.2
|
version: 7.8.2
|
||||||
|
source-map-resolve:
|
||||||
|
specifier: 0.6.0
|
||||||
|
version: 0.6.0
|
||||||
|
source-map-url:
|
||||||
|
specifier: 0.4.1
|
||||||
|
version: 0.4.1
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@eslint/eslintrc':
|
'@eslint/eslintrc':
|
||||||
specifier: ^3.2.0
|
specifier: ^3.2.0
|
||||||
|
|
@ -1308,6 +1317,9 @@ packages:
|
||||||
engines: {node: '>= 4.5.0'}
|
engines: {node: '>= 4.5.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
axios@1.8.4:
|
||||||
|
resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==}
|
||||||
|
|
||||||
b4a@1.6.7:
|
b4a@1.6.7:
|
||||||
resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
|
resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
|
||||||
|
|
||||||
|
|
@ -2054,6 +2066,15 @@ packages:
|
||||||
flatted@3.3.3:
|
flatted@3.3.3:
|
||||||
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
|
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
|
||||||
|
|
||||||
|
follow-redirects@1.15.9:
|
||||||
|
resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
|
||||||
|
engines: {node: '>=4.0'}
|
||||||
|
peerDependencies:
|
||||||
|
debug: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
debug:
|
||||||
|
optional: true
|
||||||
|
|
||||||
for-in@1.0.2:
|
for-in@1.0.2:
|
||||||
resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
|
resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
@ -3183,6 +3204,9 @@ packages:
|
||||||
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
|
|
||||||
|
proxy-from-env@1.1.0:
|
||||||
|
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
|
||||||
|
|
||||||
punycode@2.3.1:
|
punycode@2.3.1:
|
||||||
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
@ -3457,6 +3481,10 @@ packages:
|
||||||
resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
|
resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
|
||||||
deprecated: See https://github.com/lydell/source-map-resolve#deprecated
|
deprecated: See https://github.com/lydell/source-map-resolve#deprecated
|
||||||
|
|
||||||
|
source-map-resolve@0.6.0:
|
||||||
|
resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==}
|
||||||
|
deprecated: See https://github.com/lydell/source-map-resolve#deprecated
|
||||||
|
|
||||||
source-map-support@0.5.13:
|
source-map-support@0.5.13:
|
||||||
resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
|
resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
|
||||||
|
|
||||||
|
|
@ -5405,6 +5433,14 @@ snapshots:
|
||||||
|
|
||||||
atob@2.1.2: {}
|
atob@2.1.2: {}
|
||||||
|
|
||||||
|
axios@1.8.4(debug@2.6.9):
|
||||||
|
dependencies:
|
||||||
|
follow-redirects: 1.15.9(debug@2.6.9)
|
||||||
|
form-data: 4.0.2
|
||||||
|
proxy-from-env: 1.1.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- debug
|
||||||
|
|
||||||
b4a@1.6.7: {}
|
b4a@1.6.7: {}
|
||||||
|
|
||||||
babel-jest@29.7.0(@babel/core@7.26.10):
|
babel-jest@29.7.0(@babel/core@7.26.10):
|
||||||
|
|
@ -6221,6 +6257,10 @@ snapshots:
|
||||||
|
|
||||||
flatted@3.3.3: {}
|
flatted@3.3.3: {}
|
||||||
|
|
||||||
|
follow-redirects@1.15.9(debug@2.6.9):
|
||||||
|
optionalDependencies:
|
||||||
|
debug: 2.6.9
|
||||||
|
|
||||||
for-in@1.0.2: {}
|
for-in@1.0.2: {}
|
||||||
|
|
||||||
for-own@0.1.5:
|
for-own@0.1.5:
|
||||||
|
|
@ -7503,6 +7543,8 @@ snapshots:
|
||||||
forwarded: 0.2.0
|
forwarded: 0.2.0
|
||||||
ipaddr.js: 1.9.1
|
ipaddr.js: 1.9.1
|
||||||
|
|
||||||
|
proxy-from-env@1.1.0: {}
|
||||||
|
|
||||||
punycode@2.3.1: {}
|
punycode@2.3.1: {}
|
||||||
|
|
||||||
pure-rand@6.1.0: {}
|
pure-rand@6.1.0: {}
|
||||||
|
|
@ -7797,6 +7839,11 @@ snapshots:
|
||||||
source-map-url: 0.4.1
|
source-map-url: 0.4.1
|
||||||
urix: 0.1.0
|
urix: 0.1.0
|
||||||
|
|
||||||
|
source-map-resolve@0.6.0:
|
||||||
|
dependencies:
|
||||||
|
atob: 2.1.2
|
||||||
|
decode-uri-component: 0.2.2
|
||||||
|
|
||||||
source-map-support@0.5.13:
|
source-map-support@0.5.13:
|
||||||
dependencies:
|
dependencies:
|
||||||
buffer-from: 1.1.2
|
buffer-from: 1.1.2
|
||||||
|
|
|
||||||
|
|
@ -1,42 +1,9 @@
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
|
|
||||||
|
|
||||||
const mqtt = require('mqtt');
|
|
||||||
let protocol: String = 'mqtt';
|
|
||||||
let host: String = '192.168.2.33';
|
|
||||||
let port: String = '1883'
|
|
||||||
let clientId: String = 'mqttx_20676f4c';
|
|
||||||
|
|
||||||
let connectUrl: String = protocol+'//'+host+':'+port;
|
|
||||||
|
|
||||||
const client = mqtt.connect({ port: 1883, host: '192.168.2.33', keepalive: 10000});
|
|
||||||
/*const client = mqtt.connect(({ port: 1883, host: '192.168.1.100', keepalive: 10000} , {
|
|
||||||
clientId,
|
|
||||||
clean: true,
|
|
||||||
connectTimeout: 4000,
|
|
||||||
username: "tester",
|
|
||||||
password: "GreatTester99",
|
|
||||||
reconnectPeriod: 1000,
|
|
||||||
});*/
|
|
||||||
|
|
||||||
let msg: String = 'Connected';
|
|
||||||
|
|
||||||
client.on('connect', () => {
|
|
||||||
console.log('Connected');
|
|
||||||
});
|
|
||||||
|
|
||||||
/*client.subscribe('testtopic');
|
|
||||||
client.on('message', function (topic, message) {
|
|
||||||
console.log(message)
|
|
||||||
})*/
|
|
||||||
|
|
||||||
client.publish('testtopic', 'hello!');
|
|
||||||
client.end();
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AppService {
|
export class AppService {
|
||||||
getHello(): string {
|
getHello(): string {
|
||||||
return 'Hello worlda World!'+ msg;
|
return 'Hello worlda World!';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { Body, Controller, Get, Post} from '@nestjs/common';
|
import { Body, ConfigurableModuleBuilder, Controller, Get, Post} from '@nestjs/common';
|
||||||
import { ZvksmetricsService } from './zvksmetrics.service';
|
import { ZvksmetricsService } from './zvksmetrics.service';
|
||||||
|
|
||||||
@Controller('api')
|
@Controller('api')
|
||||||
|
|
@ -12,9 +12,13 @@ export class ZvksmetricsController {
|
||||||
|
|
||||||
|
|
||||||
@Post('input')
|
@Post('input')
|
||||||
getMtetrics (@Body() dto : string) : string {
|
|
||||||
console.log(dto);
|
async getPostMessage (@Body() inputMetrics : any) : Promise<string> {
|
||||||
return dto;
|
//console.log(inputMetrics);
|
||||||
|
//this.metricsService.getMetrics(inputMetrics);
|
||||||
|
let out: any = await this.metricsService.useStatusModel(inputMetrics);
|
||||||
|
console.log(out);
|
||||||
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,79 @@
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import axios from 'axios';
|
||||||
|
import { response } from 'express';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ZvksmetricsService {}
|
export class MetricK2 {
|
||||||
|
id : string;
|
||||||
|
type : string;
|
||||||
|
addr : string;
|
||||||
|
value : any;
|
||||||
|
description: string;
|
||||||
|
status: any;
|
||||||
|
};
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class K2Metrics {
|
||||||
|
service_name: string;
|
||||||
|
endpoint_name: string;
|
||||||
|
metrics: MetricK2 [];
|
||||||
|
};
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class ZvksmetricsService {
|
||||||
|
async useStatusModel(inputDate : any) : Promise<any> {
|
||||||
|
let inp : K2Metrics = new K2Metrics();
|
||||||
|
inp = inputDate;
|
||||||
|
let editedMetrics : K2Metrics = await this.getMetrics (inp);
|
||||||
|
let responseFromExporter : any = await this.sendMetrics (editedMetrics);
|
||||||
|
|
||||||
|
return responseFromExporter;
|
||||||
|
}
|
||||||
|
|
||||||
|
async getMetrics(inputDate : K2Metrics): Promise<K2Metrics> {
|
||||||
|
|
||||||
|
inputDate.metrics.forEach(async element => {
|
||||||
|
element.status = await this.setMetricsStatus(element);
|
||||||
|
});
|
||||||
|
|
||||||
|
return inputDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
async setMetricsStatus( metric : MetricK2) : Promise<number> {
|
||||||
|
let stat = Math.floor(Math.random()*4);
|
||||||
|
// if (stat < 1) {
|
||||||
|
// stat = 99;
|
||||||
|
// }
|
||||||
|
return stat;
|
||||||
|
}
|
||||||
|
|
||||||
|
async sendMetrics(inputDate : K2Metrics) : Promise<string> {
|
||||||
|
let resp : any;
|
||||||
|
let path : string = 'http://192.168.2.34:9049/update';
|
||||||
|
let body : any = inputDate;
|
||||||
|
let options : any = {
|
||||||
|
headers: {'Content-Type' : 'application/json'}
|
||||||
|
};
|
||||||
|
|
||||||
|
await axios.post(path, body, options).then((response)=>{
|
||||||
|
//resp = JSON.parse(response.data);
|
||||||
|
resp = response.status + ' ' + response.data;
|
||||||
|
//console.log(resp);
|
||||||
|
}).catch((error)=>{
|
||||||
|
resp = error;
|
||||||
|
});
|
||||||
|
|
||||||
|
return resp;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*async showMetrics(inputDate : any){
|
||||||
|
let metric : K2Metrics = new K2Metrics();
|
||||||
|
metric = inputDate;
|
||||||
|
await this.getMetrics(metric);
|
||||||
|
console.log(metric);
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue