@glassmkr/crucible 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.md +24 -0
- package/.github/ISSUE_TEMPLATE/no_data.md +26 -0
- package/README.md +48 -52
- package/dist/alerts/rules.js +120 -0
- package/dist/alerts/rules.js.map +1 -1
- package/dist/collect/cpu.js +57 -16
- package/dist/collect/cpu.js.map +1 -1
- package/dist/collect/disks.js +48 -2
- package/dist/collect/disks.js.map +1 -1
- package/dist/collect/ipmi.js +151 -2
- package/dist/collect/ipmi.js.map +1 -1
- package/dist/collect/security.d.ts +39 -0
- package/dist/collect/security.js +176 -0
- package/dist/collect/security.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +48 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/types.d.ts +64 -0
- package/dist/lib/version-check.d.ts +7 -0
- package/dist/lib/version-check.js +39 -0
- package/dist/lib/version-check.js.map +1 -0
- package/dist/metrics-server.d.ts +3 -0
- package/dist/metrics-server.js +113 -0
- package/dist/metrics-server.js.map +1 -0
- package/dist/notify/telegram.js +27 -9
- package/dist/notify/telegram.js.map +1 -1
- package/dist/push/forge.d.ts +1 -0
- package/dist/push/forge.js +80 -4
- package/dist/push/forge.js.map +1 -1
- package/package.json +1 -1
- package/scripts/sign-release.sh +29 -0
- package/src/alerts/rules.ts +99 -0
- package/src/collect/cpu.ts +64 -16
- package/src/collect/disks.ts +57 -2
- package/src/collect/ipmi.ts +138 -3
- package/src/collect/security.ts +238 -0
- package/src/config.ts +5 -0
- package/src/index.ts +49 -3
- package/src/lib/types.ts +44 -0
- package/src/lib/version-check.ts +38 -0
- package/src/metrics-server.ts +123 -0
- package/src/notify/telegram.ts +29 -9
- package/src/push/forge.ts +89 -5
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug Report
|
|
3
|
+
about: Something is not working as expected
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
**Crucible version:** (check package.json or service logs)
|
|
7
|
+
**OS and version:** (e.g., Ubuntu 24.04)
|
|
8
|
+
**Kernel:** (output of `uname -r`)
|
|
9
|
+
**Node.js version:** (output of `node --version`)
|
|
10
|
+
**Running as root:** yes/no
|
|
11
|
+
|
|
12
|
+
**What happened:**
|
|
13
|
+
|
|
14
|
+
**What you expected:**
|
|
15
|
+
|
|
16
|
+
**Service status:**
|
|
17
|
+
```
|
|
18
|
+
systemctl status glassmkr-collector
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Last 50 log lines:**
|
|
22
|
+
```
|
|
23
|
+
journalctl -u glassmkr-collector -n 50 --no-pager
|
|
24
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: No Data in Forge
|
|
3
|
+
about: Crucible is running but Forge shows no data
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
**Crucible version:**
|
|
7
|
+
**OS and version:**
|
|
8
|
+
**How long since install:**
|
|
9
|
+
|
|
10
|
+
**Can you reach Forge?**
|
|
11
|
+
```
|
|
12
|
+
curl -s -o /dev/null -w "%{http_code}" https://forge.glassmkr.com/api/health
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Service status:**
|
|
16
|
+
```
|
|
17
|
+
systemctl status glassmkr-collector
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Last 50 log lines:**
|
|
21
|
+
```
|
|
22
|
+
journalctl -u glassmkr-collector -n 50 --no-pager
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Is smartctl installed?** `which smartctl`
|
|
26
|
+
**Is ipmitool installed?** `which ipmitool`
|
package/README.md
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Crucible
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
[](https://www.npmjs.com/package/@glassmkr/crucible)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
Lightweight bare metal server monitoring agent. Collects hardware and OS health data, pushes snapshots to [Forge](https://forge.glassmkr.com) every 5 minutes. Forge evaluates 30 alert rules and sends notifications.
|
|
7
|
+
|
|
8
|
+
Open source. MIT licensed. Built by [Glassmkr](https://glassmkr.com).
|
|
6
9
|
|
|
7
10
|
## Quick Install
|
|
8
11
|
|
|
@@ -10,38 +13,34 @@ Runs as a systemd service. Wakes up every 5 minutes, collects everything, alerts
|
|
|
10
13
|
curl -sf https://forge.glassmkr.com/install | bash
|
|
11
14
|
```
|
|
12
15
|
|
|
13
|
-
Or
|
|
16
|
+
Or via npm:
|
|
14
17
|
|
|
15
18
|
```bash
|
|
16
|
-
npm install -g @glassmkr/
|
|
19
|
+
npm install -g @glassmkr/crucible
|
|
17
20
|
```
|
|
18
21
|
|
|
19
|
-
## What
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
**
|
|
24
|
-
**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
|
29
|
-
|
|
30
|
-
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
| 12 | Interface saturation | Warning | 90% utilization |
|
|
42
|
-
| 13 | CPU temperature high | Warning/Critical | 80C / 90C |
|
|
43
|
-
| 14 | ECC memory errors | Warning/Critical | Correctable / Uncorrectable |
|
|
44
|
-
| 15 | PSU redundancy loss | Critical | Any PSU failed/absent |
|
|
22
|
+
## What Crucible Collects
|
|
23
|
+
|
|
24
|
+
| Module | Data |
|
|
25
|
+
|--------|------|
|
|
26
|
+
| **CPU** | Aggregate and per-core utilization (user, system, iowait, idle, irq, softirq) |
|
|
27
|
+
| **Memory** | RAM usage, swap usage |
|
|
28
|
+
| **Disks** | Space per mount point, inode counts, mount options, filesystem type |
|
|
29
|
+
| **SMART** | Drive health, model, temperature, power-on hours, reallocated sectors, NVMe wear |
|
|
30
|
+
| **Network** | Interface traffic, error/drop counts, link speed |
|
|
31
|
+
| **RAID** | mdadm array status, degraded detection |
|
|
32
|
+
| **IPMI** | Sensor readings (temperatures, fans, voltages, power), ECC errors, SEL events |
|
|
33
|
+
| **Security** | SSH config, firewall status, pending updates, kernel vulnerabilities |
|
|
34
|
+
|
|
35
|
+
## Alert Rules
|
|
36
|
+
|
|
37
|
+
Crucible collects the data. Forge evaluates 30 alert rules server-side and sends notifications via Telegram and Slack.
|
|
38
|
+
|
|
39
|
+
**Categories:** OS (5), Storage (8), Network (3), Hardware/IPMI (6), ZFS (2), Security (6).
|
|
40
|
+
|
|
41
|
+
**Priorities:** P1 Urgent, P2 High, P3 Medium, P4 Low.
|
|
42
|
+
|
|
43
|
+
See the full rule list: [forge.glassmkr.com/docs/alerts](https://forge.glassmkr.com/docs/alerts)
|
|
45
44
|
|
|
46
45
|
## Configuration
|
|
47
46
|
|
|
@@ -57,36 +56,33 @@ forge:
|
|
|
57
56
|
enabled: true
|
|
58
57
|
url: "https://forge.glassmkr.com"
|
|
59
58
|
api_key: "col_xxx"
|
|
60
|
-
thresholds:
|
|
61
|
-
ram_percent: 90
|
|
62
|
-
disk_percent: 85
|
|
63
|
-
channels:
|
|
64
|
-
telegram:
|
|
65
|
-
enabled: true
|
|
66
|
-
bot_token: "123:abc"
|
|
67
|
-
chat_id: "123456"
|
|
68
59
|
```
|
|
69
60
|
|
|
70
|
-
|
|
61
|
+
Full configuration reference: [forge.glassmkr.com/docs/configuration](https://forge.glassmkr.com/docs/configuration)
|
|
71
62
|
|
|
72
63
|
## Requirements
|
|
73
64
|
|
|
74
|
-
- Linux (Ubuntu
|
|
75
|
-
- Node.js
|
|
76
|
-
- Root access
|
|
77
|
-
- Optional: smartmontools (
|
|
78
|
-
- Optional: ipmitool (for IPMI/BMC monitoring)
|
|
65
|
+
- Linux (any distribution: Ubuntu, Debian, RHEL, Rocky, Alma, Arch, Alpine)
|
|
66
|
+
- Node.js 18+
|
|
67
|
+
- Root access (for SMART, IPMI, and system metrics)
|
|
68
|
+
- Optional: `smartmontools` (SMART data), `ipmitool` (IPMI data)
|
|
79
69
|
|
|
80
|
-
##
|
|
70
|
+
## How It Works
|
|
81
71
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
72
|
+
1. Crucible runs as a systemd service
|
|
73
|
+
2. Every 5 minutes, it collects a complete health snapshot
|
|
74
|
+
3. The snapshot is pushed to Forge via HTTPS (POST /api/v1/ingest)
|
|
75
|
+
4. Forge evaluates alert rules and sends notifications
|
|
76
|
+
5. Data appears in the Forge dashboard within seconds of push
|
|
85
77
|
|
|
86
|
-
##
|
|
78
|
+
## Documentation
|
|
87
79
|
|
|
88
|
-
|
|
80
|
+
- [Getting Started](https://forge.glassmkr.com/docs/getting-started)
|
|
81
|
+
- [Configuration Reference](https://forge.glassmkr.com/docs/configuration)
|
|
82
|
+
- [Alert Rules (30)](https://forge.glassmkr.com/docs/alerts)
|
|
83
|
+
- [Troubleshooting](https://forge.glassmkr.com/docs/troubleshooting)
|
|
84
|
+
- [API Reference](https://forge.glassmkr.com/docs/api)
|
|
89
85
|
|
|
90
86
|
## License
|
|
91
87
|
|
|
92
|
-
[
|
|
88
|
+
MIT. See [LICENSE](LICENSE).
|
package/dist/alerts/rules.js
CHANGED
|
@@ -199,5 +199,125 @@ export const allRules = [
|
|
|
199
199
|
evidence: { failed: failed.map(p => ({ name: p.name, status: p.status })) },
|
|
200
200
|
recommendation: "Replace failed PSU. Check power connections." }];
|
|
201
201
|
} },
|
|
202
|
+
// 19. IPMI SEL critical events
|
|
203
|
+
{ type: "ipmi_sel_critical", evaluate(snap) {
|
|
204
|
+
if (!snap.ipmi?.available || !snap.ipmi.sel_events_recent?.length)
|
|
205
|
+
return [];
|
|
206
|
+
const critical = snap.ipmi.sel_events_recent.filter(e => e.severity === "critical" && e.direction === "Asserted");
|
|
207
|
+
if (critical.length === 0)
|
|
208
|
+
return [];
|
|
209
|
+
const byType = {};
|
|
210
|
+
for (const e of critical) {
|
|
211
|
+
if (!byType[e.sensor_type])
|
|
212
|
+
byType[e.sensor_type] = [];
|
|
213
|
+
byType[e.sensor_type].push(e);
|
|
214
|
+
}
|
|
215
|
+
const details = Object.entries(byType).map(([t, evts]) => `${t}: ${evts.map(e => `${e.sensor}: ${e.event}`).join(", ")}`).join("; ");
|
|
216
|
+
const recs = [];
|
|
217
|
+
if (byType.memory)
|
|
218
|
+
recs.push("Memory errors: identify slot with `ipmitool sel elist | grep -i memory`. Schedule DIMM replacement.");
|
|
219
|
+
if (byType.power)
|
|
220
|
+
recs.push("PSU event: check physical PSU and connections. Verify redundancy: `ipmitool chassis status`.");
|
|
221
|
+
if (byType.watchdog)
|
|
222
|
+
recs.push("Watchdog reset: OS or BMC became unresponsive. Check dmesg for root cause.");
|
|
223
|
+
if (byType.processor)
|
|
224
|
+
recs.push("CPU event: check for thermal throttling or MCE. Run `dmesg | grep -i mce`.");
|
|
225
|
+
if (recs.length === 0)
|
|
226
|
+
recs.push("Review full SEL: `ipmitool sel elist`.");
|
|
227
|
+
return [{ type: "ipmi_sel_critical", severity: "critical",
|
|
228
|
+
title: `IPMI: ${critical.length} critical hardware event(s)`,
|
|
229
|
+
message: `BMC System Event Log: ${critical.length} critical event(s). ${details}`,
|
|
230
|
+
evidence: { critical_events: critical, sensor_types: Object.keys(byType) },
|
|
231
|
+
recommendation: recs.join(" ") }];
|
|
232
|
+
} },
|
|
233
|
+
// 20. Fan failure
|
|
234
|
+
{ type: "ipmi_fan_failure", evaluate(snap) {
|
|
235
|
+
if (!snap.ipmi?.available || !snap.ipmi.fans?.length)
|
|
236
|
+
return [];
|
|
237
|
+
const failed = snap.ipmi.fans.filter(f => f.status === "critical" || (f.rpm === 0 && f.status !== "absent"));
|
|
238
|
+
if (failed.length === 0)
|
|
239
|
+
return [];
|
|
240
|
+
const total = snap.ipmi.fans.filter(f => f.status !== "absent").length;
|
|
241
|
+
const names = failed.map(f => `${f.name} (${f.rpm} RPM)`).join(", ");
|
|
242
|
+
return [{ type: "ipmi_fan_failure", severity: "critical",
|
|
243
|
+
title: `Fan failure: ${failed.length} of ${total} fans`,
|
|
244
|
+
message: `${failed.length} fan(s) stopped or critically slow: ${names}. Reduced cooling capacity.`,
|
|
245
|
+
evidence: { failed_fans: failed, total_fans: total, all_fans: snap.ipmi.fans.filter(f => f.status !== "absent") },
|
|
246
|
+
recommendation: "Check physical fans. Monitor temps: `ipmitool sdr type Temperature`. Replace failed fan module." }];
|
|
247
|
+
} },
|
|
248
|
+
// === Security (6) ===
|
|
249
|
+
// 21. SSH root password login
|
|
250
|
+
{ type: "ssh_root_password", evaluate(snap) {
|
|
251
|
+
if (!snap.security?.ssh?.rootPasswordExposed)
|
|
252
|
+
return [];
|
|
253
|
+
return [{ type: "ssh_root_password", severity: "warning",
|
|
254
|
+
title: "SSH root login with password enabled",
|
|
255
|
+
message: `PermitRootLogin is "${snap.security.ssh.permitRootLogin}" and PasswordAuthentication is "${snap.security.ssh.passwordAuthentication}". Root can be brute-forced over SSH.`,
|
|
256
|
+
evidence: { permitRootLogin: snap.security.ssh.permitRootLogin, passwordAuthentication: snap.security.ssh.passwordAuthentication },
|
|
257
|
+
recommendation: 'Set "PermitRootLogin prohibit-password" in /etc/ssh/sshd_config and restart sshd. Key-based root login still works.' }];
|
|
258
|
+
} },
|
|
259
|
+
// 22. No firewall
|
|
260
|
+
{ type: "no_firewall", evaluate(snap) {
|
|
261
|
+
if (!snap.security || snap.security.firewall.active)
|
|
262
|
+
return [];
|
|
263
|
+
return [{ type: "no_firewall", severity: "warning",
|
|
264
|
+
title: "No firewall active",
|
|
265
|
+
message: "No active firewall rules detected (checked UFW, firewalld, nftables, iptables). All ports are exposed unless protected by network-level ACLs.",
|
|
266
|
+
evidence: { source: snap.security.firewall.source },
|
|
267
|
+
recommendation: 'Enable a firewall: "sudo ufw enable" (Debian/Ubuntu) or "sudo systemctl start firewalld" (RHEL/Rocky).' }];
|
|
268
|
+
} },
|
|
269
|
+
// 23. Pending security updates
|
|
270
|
+
{ type: "pending_security_updates", evaluate(snap, t) {
|
|
271
|
+
if (!snap.security?.pending_updates?.available)
|
|
272
|
+
return [];
|
|
273
|
+
const maxPending = 10;
|
|
274
|
+
if (snap.security.pending_updates.pendingCount <= maxPending)
|
|
275
|
+
return [];
|
|
276
|
+
const d = snap.security.pending_updates;
|
|
277
|
+
return [{ type: "pending_security_updates", severity: "warning",
|
|
278
|
+
title: `${d.pendingCount} security updates pending`,
|
|
279
|
+
message: `${d.pendingCount} security updates pending on this ${d.distro} server.`,
|
|
280
|
+
evidence: { pendingCount: d.pendingCount, distro: d.distro },
|
|
281
|
+
recommendation: d.distro === "ubuntu" || d.distro === "debian" ? 'Apply with: "sudo apt-get upgrade"' : 'Apply with: "sudo dnf update --security"' }];
|
|
282
|
+
} },
|
|
283
|
+
// 24. Kernel vulnerabilities
|
|
284
|
+
{ type: "kernel_vulnerabilities", evaluate(snap) {
|
|
285
|
+
if (!snap.security?.kernel_vulns?.length)
|
|
286
|
+
return [];
|
|
287
|
+
const unmitigated = snap.security.kernel_vulns.filter(v => !v.mitigated);
|
|
288
|
+
if (unmitigated.length === 0)
|
|
289
|
+
return [];
|
|
290
|
+
const details = unmitigated.map(v => `${v.name}: ${v.status}`).join("; ");
|
|
291
|
+
return [{ type: "kernel_vulnerabilities", severity: "warning",
|
|
292
|
+
title: `${unmitigated.length} CPU vulnerability mitigations missing`,
|
|
293
|
+
message: `Unmitigated: ${details}. Update the kernel and CPU microcode to apply mitigations.`,
|
|
294
|
+
evidence: { unmitigated, total: snap.security.kernel_vulns.length },
|
|
295
|
+
recommendation: 'Check: "grep . /sys/devices/system/cpu/vulnerabilities/*". Update kernel and microcode packages.' }];
|
|
296
|
+
} },
|
|
297
|
+
// 25. Kernel needs reboot
|
|
298
|
+
{ type: "kernel_needs_reboot", evaluate(snap) {
|
|
299
|
+
if (!snap.security?.kernel_reboot?.needsReboot)
|
|
300
|
+
return [];
|
|
301
|
+
const k = snap.security.kernel_reboot;
|
|
302
|
+
return [{ type: "kernel_needs_reboot", severity: "warning",
|
|
303
|
+
title: "Reboot required for kernel update",
|
|
304
|
+
message: `Running kernel: ${k.running}. Installed kernel: ${k.installed}. A reboot is needed to apply the newer kernel.`,
|
|
305
|
+
evidence: { running: k.running, installed: k.installed },
|
|
306
|
+
recommendation: "Schedule a reboot to apply the newer kernel. Security patches may not be active until then." }];
|
|
307
|
+
} },
|
|
308
|
+
// 26. Unattended upgrades disabled
|
|
309
|
+
{ type: "unattended_upgrades_disabled", evaluate(snap) {
|
|
310
|
+
if (!snap.security || snap.security.auto_updates.configured)
|
|
311
|
+
return [];
|
|
312
|
+
const a = snap.security.auto_updates;
|
|
313
|
+
const hint = a.mechanism === "unattended-upgrades" ? 'Enable: "sudo dpkg-reconfigure -plow unattended-upgrades"'
|
|
314
|
+
: a.mechanism === "dnf-automatic" ? 'Enable: "sudo systemctl enable --now dnf-automatic-install.timer"'
|
|
315
|
+
: 'Install: "sudo apt install unattended-upgrades" (Debian/Ubuntu) or "sudo dnf install dnf-automatic" (RHEL/Rocky)';
|
|
316
|
+
return [{ type: "unattended_upgrades_disabled", severity: "warning",
|
|
317
|
+
title: "Automatic security updates not configured",
|
|
318
|
+
message: `${a.details}. Without automatic updates, security patches must be applied manually.`,
|
|
319
|
+
evidence: { mechanism: a.mechanism, details: a.details },
|
|
320
|
+
recommendation: hint }];
|
|
321
|
+
} },
|
|
202
322
|
];
|
|
203
323
|
//# sourceMappingURL=rules.js.map
|
package/dist/alerts/rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/alerts/rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/alerts/rules.ts"],"names":[],"mappings":"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"}
|
package/dist/collect/cpu.js
CHANGED
|
@@ -1,35 +1,76 @@
|
|
|
1
1
|
import { readProcFile, sleep } from "../lib/parse.js";
|
|
2
|
-
function
|
|
3
|
-
const raw = readProcFile("/proc/stat") || "";
|
|
4
|
-
const line = raw.split("\n").find((l) => l.startsWith("cpu "));
|
|
5
|
-
if (!line)
|
|
6
|
-
return { user: 0, nice: 0, system: 0, idle: 0, iowait: 0, irq: 0, softirq: 0, steal: 0 };
|
|
2
|
+
function parseLine(line) {
|
|
7
3
|
const parts = line.split(/\s+/).slice(1).map(Number);
|
|
8
4
|
return {
|
|
9
5
|
user: parts[0] || 0, nice: parts[1] || 0, system: parts[2] || 0, idle: parts[3] || 0,
|
|
10
6
|
iowait: parts[4] || 0, irq: parts[5] || 0, softirq: parts[6] || 0, steal: parts[7] || 0,
|
|
11
7
|
};
|
|
12
8
|
}
|
|
9
|
+
function parseProcStat() {
|
|
10
|
+
const raw = readProcFile("/proc/stat") || "";
|
|
11
|
+
const lines = raw.split("\n");
|
|
12
|
+
const aggLine = lines.find((l) => l.startsWith("cpu "));
|
|
13
|
+
const aggregate = aggLine ? parseLine(aggLine) : { user: 0, nice: 0, system: 0, idle: 0, iowait: 0, irq: 0, softirq: 0, steal: 0 };
|
|
14
|
+
const cores = [];
|
|
15
|
+
for (const line of lines) {
|
|
16
|
+
if (/^cpu\d+\s/.test(line)) {
|
|
17
|
+
cores.push(parseLine(line));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return { aggregate, cores };
|
|
21
|
+
}
|
|
22
|
+
function calcPercents(d) {
|
|
23
|
+
const total = Object.values(d).reduce((a, b) => a + b, 0) || 1;
|
|
24
|
+
const r = (v) => Math.round((v / total) * 10000) / 100;
|
|
25
|
+
return {
|
|
26
|
+
user: r(d.user + d.nice),
|
|
27
|
+
system: r(d.system),
|
|
28
|
+
iowait: r(d.iowait),
|
|
29
|
+
idle: r(d.idle),
|
|
30
|
+
irq: r(d.irq),
|
|
31
|
+
softirq: r(d.softirq),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function delta(a, b) {
|
|
35
|
+
return {
|
|
36
|
+
user: b.user - a.user, nice: b.nice - a.nice,
|
|
37
|
+
system: b.system - a.system, idle: b.idle - a.idle,
|
|
38
|
+
iowait: b.iowait - a.iowait, irq: b.irq - a.irq,
|
|
39
|
+
softirq: b.softirq - a.softirq, steal: b.steal - a.steal,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
13
42
|
export async function collectCpu() {
|
|
14
43
|
const stat1 = parseProcStat();
|
|
15
44
|
await sleep(1000);
|
|
16
45
|
const stat2 = parseProcStat();
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
system: stat2.system - stat1.system, idle: stat2.idle - stat1.idle,
|
|
20
|
-
iowait: stat2.iowait - stat1.iowait, irq: stat2.irq - stat1.irq,
|
|
21
|
-
softirq: stat2.softirq - stat1.softirq, steal: stat2.steal - stat1.steal,
|
|
22
|
-
};
|
|
23
|
-
const total = Object.values(d).reduce((a, b) => a + b, 0) || 1;
|
|
46
|
+
const aggDelta = delta(stat1.aggregate, stat2.aggregate);
|
|
47
|
+
const agg = calcPercents(aggDelta);
|
|
24
48
|
const loadavg = (readProcFile("/proc/loadavg") || "0 0 0").trim().split(" ");
|
|
49
|
+
// Per-core stats
|
|
50
|
+
const cores = [];
|
|
51
|
+
const coreCount = Math.min(stat1.cores.length, stat2.cores.length);
|
|
52
|
+
for (let i = 0; i < coreCount; i++) {
|
|
53
|
+
const d = delta(stat1.cores[i], stat2.cores[i]);
|
|
54
|
+
const p = calcPercents(d);
|
|
55
|
+
cores.push({
|
|
56
|
+
core: i,
|
|
57
|
+
user_percent: p.user,
|
|
58
|
+
system_percent: p.system,
|
|
59
|
+
iowait_percent: p.iowait,
|
|
60
|
+
idle_percent: p.idle,
|
|
61
|
+
irq_percent: p.irq,
|
|
62
|
+
softirq_percent: p.softirq,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
25
65
|
return {
|
|
26
|
-
user_percent:
|
|
27
|
-
system_percent:
|
|
28
|
-
iowait_percent:
|
|
29
|
-
idle_percent:
|
|
66
|
+
user_percent: agg.user,
|
|
67
|
+
system_percent: agg.system,
|
|
68
|
+
iowait_percent: agg.iowait,
|
|
69
|
+
idle_percent: agg.idle,
|
|
30
70
|
load_1m: parseFloat(loadavg[0]) || 0,
|
|
31
71
|
load_5m: parseFloat(loadavg[1]) || 0,
|
|
32
72
|
load_15m: parseFloat(loadavg[2]) || 0,
|
|
73
|
+
cores,
|
|
33
74
|
};
|
|
34
75
|
}
|
|
35
76
|
//# sourceMappingURL=cpu.js.map
|
package/dist/collect/cpu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpu.js","sourceRoot":"","sources":["../../src/collect/cpu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAQtD,SAAS,aAAa;IACpB,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,
|
|
1
|
+
{"version":3,"file":"cpu.js","sourceRoot":"","sources":["../../src/collect/cpu.ts"],"names":[],"mappings":"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"}
|
package/dist/collect/disks.js
CHANGED
|
@@ -1,9 +1,49 @@
|
|
|
1
1
|
import { run } from "../lib/exec.js";
|
|
2
|
+
import { readProcFile } from "../lib/parse.js";
|
|
3
|
+
function parseMounts() {
|
|
4
|
+
const raw = readProcFile("/proc/mounts") || "";
|
|
5
|
+
const result = [];
|
|
6
|
+
for (const line of raw.split("\n")) {
|
|
7
|
+
const parts = line.split(" ");
|
|
8
|
+
if (parts.length < 4)
|
|
9
|
+
continue;
|
|
10
|
+
result.push({
|
|
11
|
+
device: parts[0],
|
|
12
|
+
mount: parts[1],
|
|
13
|
+
fstype: parts[2],
|
|
14
|
+
options: parts[3],
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
2
19
|
export async function collectDisks() {
|
|
3
20
|
const dfOutput = await run("df", ["-B1", "--output=source,target,size,used,avail,pcent", "-x", "tmpfs", "-x", "devtmpfs", "-x", "squashfs"]);
|
|
4
21
|
if (!dfOutput)
|
|
5
22
|
return [];
|
|
6
|
-
|
|
23
|
+
// Get inode data (df -i without --output, parse standard columns)
|
|
24
|
+
const dfInodeOutput = await run("df", ["-i", "-x", "tmpfs", "-x", "devtmpfs", "-x", "squashfs"]);
|
|
25
|
+
const inodeMap = new Map();
|
|
26
|
+
if (dfInodeOutput) {
|
|
27
|
+
// Standard df -i output: Filesystem Inodes IUsed IFree IUse% Mounted_on
|
|
28
|
+
for (const line of dfInodeOutput.trim().split("\n").slice(1)) {
|
|
29
|
+
const parts = line.trim().split(/\s+/);
|
|
30
|
+
if (parts.length < 6)
|
|
31
|
+
continue;
|
|
32
|
+
const mountPoint = parts[5];
|
|
33
|
+
inodeMap.set(mountPoint, {
|
|
34
|
+
total: parseInt(parts[1]) || 0,
|
|
35
|
+
used: parseInt(parts[2]) || 0,
|
|
36
|
+
free: parseInt(parts[3]) || 0,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Get mount options and fstype from /proc/mounts
|
|
41
|
+
const mounts = parseMounts();
|
|
42
|
+
const mountMap = new Map();
|
|
43
|
+
for (const m of mounts) {
|
|
44
|
+
mountMap.set(m.mount, m);
|
|
45
|
+
}
|
|
46
|
+
const lines = dfOutput.trim().split("\n").slice(1);
|
|
7
47
|
const disks = [];
|
|
8
48
|
for (const line of lines) {
|
|
9
49
|
const parts = line.trim().split(/\s+/);
|
|
@@ -16,9 +56,10 @@ export async function collectDisks() {
|
|
|
16
56
|
const availBytes = parseInt(parts[4]) || 0;
|
|
17
57
|
const pctStr = parts[5].replace("%", "");
|
|
18
58
|
const percent = parseInt(pctStr) || 0;
|
|
19
|
-
// Skip pseudo-filesystems
|
|
20
59
|
if (!device.startsWith("/dev/"))
|
|
21
60
|
continue;
|
|
61
|
+
const mountInfo = mountMap.get(mount);
|
|
62
|
+
const inodes = inodeMap.get(mount);
|
|
22
63
|
disks.push({
|
|
23
64
|
device,
|
|
24
65
|
mount,
|
|
@@ -26,6 +67,11 @@ export async function collectDisks() {
|
|
|
26
67
|
used_gb: Math.round((usedBytes / 1073741824) * 100) / 100,
|
|
27
68
|
available_gb: Math.round((availBytes / 1073741824) * 100) / 100,
|
|
28
69
|
percent_used: percent,
|
|
70
|
+
fstype: mountInfo?.fstype,
|
|
71
|
+
options: mountInfo?.options,
|
|
72
|
+
inodes_total: inodes?.total,
|
|
73
|
+
inodes_used: inodes?.used,
|
|
74
|
+
inodes_free: inodes?.free,
|
|
29
75
|
});
|
|
30
76
|
}
|
|
31
77
|
return disks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disks.js","sourceRoot":"","sources":["../../src/collect/disks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"disks.js","sourceRoot":"","sources":["../../src/collect/disks.ts"],"names":[],"mappings":"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"}
|