-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
99 lines (80 loc) · 2.33 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import express from 'express';
import cors from 'cors';
import * as os from 'os';
import * as client from 'prom-client';
import * as calculate from './models/system-calculate.js';
const app = express();
app.use(express.json());
app.use(cors());
const register = new client.Registry();
const collectDefaultMetrics = client.collectDefaultMetrics;
collectDefaultMetrics({
app: 'node-exporter-2.0',
timeout: 10000,
gcDurationBuckets: [1, 2, 5, 7, 9],
register,
});
const guageCPULoad1m = new client.Gauge({
name: 'CPU_Load_1m',
help: 'Average Load duration 1m',
});
const guageCPULoad5m = new client.Gauge({
name: 'CPU_Load_5m',
help: 'Average Load 5m',
});
const guageCPULoad15m = new client.Gauge({
name: 'CPU_Load_15m',
help: 'Average Load 15m',
});
const guageCPUsage = new client.Gauge({
name: 'CPU_Average_Usage',
help: '(%)',
});
const guageMemoryUsage = new client.Gauge({
name: 'Memory_Usage',
help: '(%)',
});
const guageDiskRead = new client.Gauge({
name: 'Disk_Read_Average_Time',
help: '(ms)',
labelNames: ['device'],
});
const guageDiskWrite = new client.Gauge({
name: 'Disk_Write_Average_Time',
help: '(ms)',
labelNames: ['device'],
});
register.registerMetric(guageCPULoad1m);
register.registerMetric(guageCPULoad5m);
register.registerMetric(guageCPULoad15m);
register.registerMetric(guageCPUsage);
register.registerMetric(guageMemoryUsage);
register.registerMetric(guageDiskRead);
register.registerMetric(guageDiskWrite);
async function setMetrics() {
guageCPULoad1m.set(os.loadavg()[0]);
guageCPULoad5m.set(os.loadavg()[1]);
guageCPULoad15m.set(os.loadavg()[2]);
const CPUsage = calculate.getCPUInfo();
guageCPUsage.set(CPUsage);
const memoryUsage = calculate.getMemoryUsage();
guageMemoryUsage.set(memoryUsage);
const diskInfos = await calculate.getDiskInfo();
for (const info of diskInfos) {
guageDiskRead.set({ device: info.diskDevice }, info.readAwait);
guageDiskWrite.set({ device: info.diskDevice }, info.writeAwait);
}
}
app.get('/metrics', async (req, res) => {
try {
await setMetrics();
res.set('Content-Type', register.contentType);
res.send(await register.metrics());
} catch (error) {
console.error(error);
res.status(500).send('Error setting metrics');
}
});
app.listen(9100, '0.0.0.0', () => {
console.log('The port in openning in 9100');
});