@glassmkr/crucible 0.7.1 → 0.8.1
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/dist/alerts/__tests__/rules.test.d.ts +1 -0
- package/dist/alerts/__tests__/rules.test.js +437 -0
- package/dist/alerts/__tests__/rules.test.js.map +1 -0
- package/dist/alerts/rules.d.ts +8 -0
- package/dist/alerts/rules.js +175 -34
- package/dist/alerts/rules.js.map +1 -1
- package/dist/api.d.ts +2 -0
- package/dist/api.js +7 -0
- package/dist/api.js.map +1 -0
- package/dist/collect/__tests__/dmi.test.d.ts +1 -0
- package/dist/collect/__tests__/dmi.test.js +133 -0
- package/dist/collect/__tests__/dmi.test.js.map +1 -0
- package/dist/collect/__tests__/ipmi.test.js +47 -1
- package/dist/collect/__tests__/ipmi.test.js.map +1 -1
- package/dist/collect/__tests__/thermal.test.d.ts +1 -0
- package/dist/collect/__tests__/thermal.test.js +224 -0
- package/dist/collect/__tests__/thermal.test.js.map +1 -0
- package/dist/collect/dmi.d.ts +19 -0
- package/dist/collect/dmi.js +118 -0
- package/dist/collect/dmi.js.map +1 -0
- package/dist/collect/ipmi.d.ts +27 -2
- package/dist/collect/ipmi.js +90 -2
- package/dist/collect/ipmi.js.map +1 -1
- package/dist/collect/thermal.d.ts +10 -0
- package/dist/collect/thermal.js +232 -0
- package/dist/collect/thermal.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +51 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/capability.test.d.ts +1 -0
- package/dist/lib/__tests__/capability.test.js +87 -0
- package/dist/lib/__tests__/capability.test.js.map +1 -0
- package/dist/lib/__tests__/vendor-sensors.test.d.ts +1 -0
- package/dist/lib/__tests__/vendor-sensors.test.js +49 -0
- package/dist/lib/__tests__/vendor-sensors.test.js.map +1 -0
- package/dist/lib/capability.d.ts +21 -0
- package/dist/lib/capability.js +110 -0
- package/dist/lib/capability.js.map +1 -0
- package/dist/lib/cpu-thermal-chips.d.ts +2 -0
- package/dist/lib/cpu-thermal-chips.js +28 -0
- package/dist/lib/cpu-thermal-chips.js.map +1 -0
- package/dist/lib/types.d.ts +58 -0
- package/dist/lib/vendor-sensors.d.ts +27 -0
- package/dist/lib/vendor-sensors.js +63 -0
- package/dist/lib/vendor-sensors.js.map +1 -0
- package/dist/notify/telegram.js +1 -1
- package/dist/notify/telegram.js.map +1 -1
- package/package.json +16 -1
- package/rule-ids.json +29 -0
- package/.dockerignore +0 -13
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -24
- package/.github/ISSUE_TEMPLATE/no_data.md +0 -26
- package/.github/workflows/docker.yml +0 -53
- package/.github/workflows/publish.yml +0 -25
- package/Dockerfile +0 -59
- package/config/collector.example.yaml +0 -43
- package/docker-compose.yml +0 -26
- package/scripts/sign-release.sh +0 -29
- package/src/__tests__/cli.test.ts +0 -74
- package/src/__tests__/reboot-marker.test.ts +0 -122
- package/src/alerts/evaluator.ts +0 -15
- package/src/alerts/rules.ts +0 -283
- package/src/alerts/state.ts +0 -92
- package/src/cli.ts +0 -112
- package/src/collect/__tests__/ipmi.test.ts +0 -96
- package/src/collect/__tests__/smart.test.ts +0 -68
- package/src/collect/__tests__/system.test.ts +0 -29
- package/src/collect/__tests__/zfs.test.ts +0 -72
- package/src/collect/conntrack.ts +0 -27
- package/src/collect/cpu.ts +0 -92
- package/src/collect/disks.ts +0 -91
- package/src/collect/fd.ts +0 -31
- package/src/collect/io-errors.ts +0 -23
- package/src/collect/io-latency.ts +0 -103
- package/src/collect/ipmi.ts +0 -207
- package/src/collect/memory.ts +0 -30
- package/src/collect/network.ts +0 -193
- package/src/collect/ntp.ts +0 -114
- package/src/collect/os-alerts.ts +0 -43
- package/src/collect/raid.ts +0 -40
- package/src/collect/security.ts +0 -268
- package/src/collect/smart.ts +0 -72
- package/src/collect/system.ts +0 -32
- package/src/collect/systemd.ts +0 -33
- package/src/collect/zfs.ts +0 -66
- package/src/config.ts +0 -65
- package/src/index.ts +0 -221
- package/src/lib/__tests__/parse.test.ts +0 -28
- package/src/lib/exec.ts +0 -16
- package/src/lib/parse.ts +0 -29
- package/src/lib/reboot-marker.ts +0 -88
- package/src/lib/types.ts +0 -226
- package/src/lib/version-check.ts +0 -39
- package/src/lib/version.ts +0 -33
- package/src/metrics-server.ts +0 -123
- package/src/notify/email.ts +0 -69
- package/src/notify/slack.ts +0 -47
- package/src/notify/telegram.ts +0 -65
- package/src/push/forge.ts +0 -109
- package/tsconfig.json +0 -15
- package/vitest.config.ts +0 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { promises as fs } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { collectFromHwmon, collectFromThermalZone } from "../thermal.js";
|
|
6
|
+
let root;
|
|
7
|
+
async function writeChip(name, files) {
|
|
8
|
+
const dir = join(root, name);
|
|
9
|
+
await fs.mkdir(dir, { recursive: true });
|
|
10
|
+
for (const [k, v] of Object.entries(files)) {
|
|
11
|
+
await fs.writeFile(join(dir, k), v);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
beforeEach(async () => {
|
|
15
|
+
root = await fs.mkdtemp(join(tmpdir(), "thermal-test-"));
|
|
16
|
+
});
|
|
17
|
+
afterEach(async () => {
|
|
18
|
+
await fs.rm(root, { recursive: true, force: true });
|
|
19
|
+
});
|
|
20
|
+
describe("collectFromHwmon: Intel coretemp", () => {
|
|
21
|
+
it("uses Package id N for cpu_readings, cores for other_readings", async () => {
|
|
22
|
+
await writeChip("hwmon0", {
|
|
23
|
+
name: "coretemp",
|
|
24
|
+
temp1_input: "55000", // Package id 0
|
|
25
|
+
temp1_label: "Package id 0",
|
|
26
|
+
temp2_input: "53000", // Core 0
|
|
27
|
+
temp2_label: "Core 0",
|
|
28
|
+
temp3_input: "54000", // Core 1
|
|
29
|
+
temp3_label: "Core 1",
|
|
30
|
+
});
|
|
31
|
+
await writeChip("hwmon1", {
|
|
32
|
+
name: "coretemp",
|
|
33
|
+
temp1_input: "60000", // Package id 1 (second socket)
|
|
34
|
+
temp1_label: "Package id 1",
|
|
35
|
+
});
|
|
36
|
+
const result = await collectFromHwmon(root);
|
|
37
|
+
expect(result).not.toBeNull();
|
|
38
|
+
const cpuLabels = result.cpu.map(r => r.label).sort();
|
|
39
|
+
expect(cpuLabels).toEqual(["coretemp Package id 0", "coretemp Package id 1"]);
|
|
40
|
+
const max = Math.max(...result.cpu.map(r => r.value_celsius));
|
|
41
|
+
expect(max).toBe(60);
|
|
42
|
+
expect(result.other.map(r => r.label).sort()).toEqual(["coretemp Core 0", "coretemp Core 1"]);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe("collectFromHwmon: AMD k10temp", () => {
|
|
46
|
+
it("prefers Tdie; Tctl + remaining Tccd go to other_readings", async () => {
|
|
47
|
+
await writeChip("hwmon0", {
|
|
48
|
+
name: "k10temp",
|
|
49
|
+
temp1_input: "65000", temp1_label: "Tctl",
|
|
50
|
+
temp2_input: "62000", temp2_label: "Tdie",
|
|
51
|
+
temp3_input: "60000", temp3_label: "Tccd1",
|
|
52
|
+
temp4_input: "61000", temp4_label: "Tccd2",
|
|
53
|
+
});
|
|
54
|
+
const result = await collectFromHwmon(root);
|
|
55
|
+
expect(result.cpu).toHaveLength(1);
|
|
56
|
+
expect(result.cpu[0].label).toBe("k10temp Tdie");
|
|
57
|
+
expect(result.cpu[0].value_celsius).toBe(62);
|
|
58
|
+
// Tctl now goes to other_readings (visible to operators) rather than
|
|
59
|
+
// being silently dropped. Tccd1/Tccd2 also other.
|
|
60
|
+
expect(result.other.map(r => r.label).sort()).toEqual([
|
|
61
|
+
"k10temp Tccd1", "k10temp Tccd2", "k10temp Tctl",
|
|
62
|
+
]);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe("collectFromHwmon: Raspberry Pi", () => {
|
|
66
|
+
it("treats cpu_thermal as a single CPU reading", async () => {
|
|
67
|
+
await writeChip("hwmon0", {
|
|
68
|
+
name: "cpu_thermal",
|
|
69
|
+
temp1_input: "48500",
|
|
70
|
+
});
|
|
71
|
+
const result = await collectFromHwmon(root);
|
|
72
|
+
expect(result.cpu).toHaveLength(1);
|
|
73
|
+
expect(result.cpu[0].value_celsius).toBe(48.5);
|
|
74
|
+
expect(result.cpu[0].source_chip).toBe("cpu_thermal");
|
|
75
|
+
expect(result.other).toHaveLength(0);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe("collectFromHwmon: VM-like with no CPU sensors", () => {
|
|
79
|
+
it("returns empty cpu, populated other when only acpitz is present", async () => {
|
|
80
|
+
await writeChip("hwmon0", {
|
|
81
|
+
name: "acpitz",
|
|
82
|
+
temp1_input: "40000",
|
|
83
|
+
});
|
|
84
|
+
const result = await collectFromHwmon(root);
|
|
85
|
+
expect(result.cpu).toHaveLength(0);
|
|
86
|
+
expect(result.other).toHaveLength(1);
|
|
87
|
+
expect(result.other[0].source_chip).toBe("acpitz");
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
describe("collectFromHwmon: nvme is filtered out", () => {
|
|
91
|
+
it("does not include nvme readings in either bucket", async () => {
|
|
92
|
+
await writeChip("hwmon0", {
|
|
93
|
+
name: "nvme",
|
|
94
|
+
temp1_input: "45000", temp1_label: "Composite",
|
|
95
|
+
});
|
|
96
|
+
await writeChip("hwmon1", {
|
|
97
|
+
name: "coretemp",
|
|
98
|
+
temp1_input: "50000", temp1_label: "Package id 0",
|
|
99
|
+
});
|
|
100
|
+
const result = await collectFromHwmon(root);
|
|
101
|
+
expect(result.cpu.map(r => r.source_chip)).toEqual(["coretemp"]);
|
|
102
|
+
expect(result.other.find(r => r.source_chip === "nvme")).toBeUndefined();
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe("collectFromHwmon: threshold files are not read as inputs", () => {
|
|
106
|
+
it("ignores temp*_max, temp*_crit, temp*_max_hyst", async () => {
|
|
107
|
+
await writeChip("hwmon0", {
|
|
108
|
+
name: "coretemp",
|
|
109
|
+
temp1_input: "50000", temp1_label: "Package id 0",
|
|
110
|
+
temp1_max: "80000",
|
|
111
|
+
temp1_crit: "100000",
|
|
112
|
+
temp1_max_hyst: "78000",
|
|
113
|
+
});
|
|
114
|
+
const result = await collectFromHwmon(root);
|
|
115
|
+
expect(result.cpu).toHaveLength(1);
|
|
116
|
+
expect(result.cpu[0].value_celsius).toBe(50);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe("collectFromHwmon: missing root", () => {
|
|
120
|
+
it("returns null if /sys/class/hwmon does not exist", async () => {
|
|
121
|
+
const fake = join(root, "does-not-exist");
|
|
122
|
+
const result = await collectFromHwmon(fake);
|
|
123
|
+
expect(result).toBeNull();
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
describe("collectFromHwmon: empty root", () => {
|
|
127
|
+
it("returns empty lists for an existing-but-empty hwmon dir", async () => {
|
|
128
|
+
const result = await collectFromHwmon(root);
|
|
129
|
+
expect(result).not.toBeNull();
|
|
130
|
+
expect(result.cpu).toHaveLength(0);
|
|
131
|
+
expect(result.other).toHaveLength(0);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe("collectFromThermalZone: Pi-style fallback", () => {
|
|
135
|
+
it("treats cpu-thermal zone as a CPU reading", async () => {
|
|
136
|
+
const z = join(root, "thermal_zone0");
|
|
137
|
+
await fs.mkdir(z, { recursive: true });
|
|
138
|
+
await fs.writeFile(join(z, "type"), "cpu-thermal\n");
|
|
139
|
+
await fs.writeFile(join(z, "temp"), "47800\n");
|
|
140
|
+
const result = await collectFromThermalZone(root);
|
|
141
|
+
expect(result.cpu).toHaveLength(1);
|
|
142
|
+
expect(result.cpu[0].value_celsius).toBe(47.8);
|
|
143
|
+
expect(result.cpu[0].source).toBe("thermal_zone");
|
|
144
|
+
});
|
|
145
|
+
it("treats unrelated zones as other_readings", async () => {
|
|
146
|
+
const z = join(root, "thermal_zone0");
|
|
147
|
+
await fs.mkdir(z, { recursive: true });
|
|
148
|
+
await fs.writeFile(join(z, "type"), "iwlwifi\n");
|
|
149
|
+
await fs.writeFile(join(z, "temp"), "42000\n");
|
|
150
|
+
const result = await collectFromThermalZone(root);
|
|
151
|
+
expect(result.cpu).toHaveLength(0);
|
|
152
|
+
expect(result.other).toHaveLength(1);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
describe("collectFromHwmon: rejects bogus values", () => {
|
|
156
|
+
it("filters readings outside [-50, 200]°C", async () => {
|
|
157
|
+
await writeChip("hwmon0", {
|
|
158
|
+
name: "coretemp",
|
|
159
|
+
temp1_input: "50000", temp1_label: "Package id 0",
|
|
160
|
+
temp2_input: "999999000", temp2_label: "Package id 1", // bogus
|
|
161
|
+
});
|
|
162
|
+
const result = await collectFromHwmon(root);
|
|
163
|
+
expect(result.cpu).toHaveLength(1);
|
|
164
|
+
expect(result.cpu[0].value_celsius).toBe(50);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe("collectFromHwmon: AMD k10temp Tdie fallback (regression for 0.8.0 P1)", () => {
|
|
168
|
+
it("uses Tccd1 when Tdie is missing", async () => {
|
|
169
|
+
await writeChip("hwmon0", {
|
|
170
|
+
name: "k10temp",
|
|
171
|
+
temp1_input: "65000", temp1_label: "Tctl",
|
|
172
|
+
temp2_input: "60000", temp2_label: "Tccd1",
|
|
173
|
+
temp3_input: "62000", temp3_label: "Tccd2",
|
|
174
|
+
});
|
|
175
|
+
const result = await collectFromHwmon(root);
|
|
176
|
+
expect(result.cpu).toHaveLength(1);
|
|
177
|
+
expect(result.cpu[0].label).toBe("k10temp Tccd1");
|
|
178
|
+
expect(result.cpu[0].value_celsius).toBe(60);
|
|
179
|
+
// Remaining Tccd2 + Tctl in other.
|
|
180
|
+
const otherLabels = result.other.map(r => r.label).sort();
|
|
181
|
+
expect(otherLabels).toEqual(["k10temp Tccd2", "k10temp Tctl"]);
|
|
182
|
+
});
|
|
183
|
+
it("uses Tctl as last resort when only Tctl is exposed", async () => {
|
|
184
|
+
await writeChip("hwmon0", {
|
|
185
|
+
name: "k10temp",
|
|
186
|
+
temp1_input: "70000", temp1_label: "Tctl",
|
|
187
|
+
});
|
|
188
|
+
const result = await collectFromHwmon(root);
|
|
189
|
+
expect(result.cpu).toHaveLength(1);
|
|
190
|
+
expect(result.cpu[0].label).toBe("k10temp Tctl");
|
|
191
|
+
expect(result.cpu[0].value_celsius).toBe(70);
|
|
192
|
+
expect(result.other).toHaveLength(0);
|
|
193
|
+
});
|
|
194
|
+
it("picks Tccd1 over Tccd2/Tccd3 by sort order", async () => {
|
|
195
|
+
await writeChip("hwmon0", {
|
|
196
|
+
name: "k10temp",
|
|
197
|
+
temp1_input: "61000", temp1_label: "Tccd2",
|
|
198
|
+
temp2_input: "60000", temp2_label: "Tccd1",
|
|
199
|
+
temp3_input: "62000", temp3_label: "Tccd3",
|
|
200
|
+
});
|
|
201
|
+
const result = await collectFromHwmon(root);
|
|
202
|
+
expect(result.cpu).toHaveLength(1);
|
|
203
|
+
expect(result.cpu[0].label).toBe("k10temp Tccd1");
|
|
204
|
+
});
|
|
205
|
+
it("zenpower with only Tccd: still produces a CPU reading", async () => {
|
|
206
|
+
await writeChip("hwmon0", {
|
|
207
|
+
name: "zenpower",
|
|
208
|
+
temp1_input: "55000", temp1_label: "Tccd1",
|
|
209
|
+
});
|
|
210
|
+
const result = await collectFromHwmon(root);
|
|
211
|
+
expect(result.cpu).toHaveLength(1);
|
|
212
|
+
expect(result.cpu[0].source_chip).toBe("zenpower");
|
|
213
|
+
});
|
|
214
|
+
it("anonymous AMD reading (no label files) is taken", async () => {
|
|
215
|
+
await writeChip("hwmon0", {
|
|
216
|
+
name: "k10temp",
|
|
217
|
+
temp1_input: "55000",
|
|
218
|
+
});
|
|
219
|
+
const result = await collectFromHwmon(root);
|
|
220
|
+
expect(result.cpu).toHaveLength(1);
|
|
221
|
+
expect(result.cpu[0].label).toBe("k10temp temp1");
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
//# sourceMappingURL=thermal.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thermal.test.js","sourceRoot":"","sources":["../../../src/collect/__tests__/thermal.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DmiInfo, Vendor } from "../lib/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Classify the contents of /sys/class/dmi/id/sys_vendor (and product_name
|
|
4
|
+
* for the Microsoft Hyper-V edge case) into a canonical vendor.
|
|
5
|
+
*
|
|
6
|
+
* Match is case-insensitive substring on sys_vendor unless noted.
|
|
7
|
+
*/
|
|
8
|
+
export declare function classifyVendor(rawVendor: string | null, productName: string | null): {
|
|
9
|
+
vendor: Vendor;
|
|
10
|
+
is_virtual: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function collectDmi(root?: string): Promise<DmiInfo>;
|
|
13
|
+
/**
|
|
14
|
+
* One-line human-readable startup banner.
|
|
15
|
+
* "Vendor: Dell PowerEdge R740 (Dell Inc., BIOS 2.21.2, 2024-08-15)"
|
|
16
|
+
* "Vendor: virtual (KVM)"
|
|
17
|
+
* "Vendor: unknown (DMI not available)"
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatVendorLine(info: DmiInfo): string;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
const DMI_ROOT = "/sys/class/dmi/id";
|
|
4
|
+
async function readTrim(path) {
|
|
5
|
+
try {
|
|
6
|
+
const raw = await fs.readFile(path, "utf-8");
|
|
7
|
+
return raw.trim() || null;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Classify the contents of /sys/class/dmi/id/sys_vendor (and product_name
|
|
15
|
+
* for the Microsoft Hyper-V edge case) into a canonical vendor.
|
|
16
|
+
*
|
|
17
|
+
* Match is case-insensitive substring on sys_vendor unless noted.
|
|
18
|
+
*/
|
|
19
|
+
export function classifyVendor(rawVendor, productName) {
|
|
20
|
+
if (!rawVendor)
|
|
21
|
+
return { vendor: "generic", is_virtual: false };
|
|
22
|
+
const v = rawVendor.toLowerCase();
|
|
23
|
+
const p = (productName ?? "").toLowerCase();
|
|
24
|
+
if (v.includes("dell"))
|
|
25
|
+
return { vendor: "dell", is_virtual: false };
|
|
26
|
+
if (v.includes("hpe") || v.includes("hewlett packard enterprise"))
|
|
27
|
+
return { vendor: "hpe", is_virtual: false };
|
|
28
|
+
// Hewlett-Packard Company / Hewlett-Packard / Hewlett Packard (legacy
|
|
29
|
+
// ProLiant DL3xx Gen8 era and earlier). Match before the standalone
|
|
30
|
+
// "HP" rule so the rule below doesn't ambiguously catch HP-UX style
|
|
31
|
+
// strings.
|
|
32
|
+
if (/hewlett[\s-]?packard/i.test(rawVendor))
|
|
33
|
+
return { vendor: "hpe", is_virtual: false };
|
|
34
|
+
// Standalone "HP" as a whole token. Tightened so non-vendor strings
|
|
35
|
+
// like "HP-UX" (an OS name occasionally seen in product_name in
|
|
36
|
+
// misconfigured firmwares) don't match. The character after "HP"
|
|
37
|
+
// must be whitespace or end-of-string; product names start with a
|
|
38
|
+
// space (e.g. "HP ProLiant ...").
|
|
39
|
+
if (/(^|\s)hp(\s|$)/i.test(rawVendor))
|
|
40
|
+
return { vendor: "hpe", is_virtual: false };
|
|
41
|
+
if (v.includes("supermicro"))
|
|
42
|
+
return { vendor: "supermicro", is_virtual: false };
|
|
43
|
+
if (v.includes("asrockrack") || v.includes("asrock rack"))
|
|
44
|
+
return { vendor: "asrockrack", is_virtual: false };
|
|
45
|
+
if (v.includes("lenovo"))
|
|
46
|
+
return { vendor: "lenovo", is_virtual: false };
|
|
47
|
+
if (v.includes("inspur"))
|
|
48
|
+
return { vendor: "inspur", is_virtual: false };
|
|
49
|
+
if (v.includes("cisco"))
|
|
50
|
+
return { vendor: "cisco", is_virtual: false };
|
|
51
|
+
// Virtualization signatures
|
|
52
|
+
if (v.includes("qemu") || v.includes("kvm"))
|
|
53
|
+
return { vendor: "virtual", is_virtual: true };
|
|
54
|
+
if (v.includes("vmware"))
|
|
55
|
+
return { vendor: "virtual", is_virtual: true };
|
|
56
|
+
if (v.includes("innotek"))
|
|
57
|
+
return { vendor: "virtual", is_virtual: true }; // VirtualBox
|
|
58
|
+
if (v.includes("xen"))
|
|
59
|
+
return { vendor: "virtual", is_virtual: true };
|
|
60
|
+
// Hyper-V advertises sys_vendor=Microsoft Corporation, but so does a real
|
|
61
|
+
// Surface laptop. Only classify as virtual when product_name says so.
|
|
62
|
+
if (v.includes("microsoft") && p.includes("virtual machine")) {
|
|
63
|
+
return { vendor: "virtual", is_virtual: true };
|
|
64
|
+
}
|
|
65
|
+
return { vendor: "generic", is_virtual: false };
|
|
66
|
+
}
|
|
67
|
+
export async function collectDmi(root = DMI_ROOT) {
|
|
68
|
+
const [rawVendor, productName, biosVersion, biosDate] = await Promise.all([
|
|
69
|
+
readTrim(join(root, "sys_vendor")),
|
|
70
|
+
readTrim(join(root, "product_name")),
|
|
71
|
+
readTrim(join(root, "bios_version")),
|
|
72
|
+
readTrim(join(root, "bios_date")),
|
|
73
|
+
]);
|
|
74
|
+
if (!rawVendor && !productName && !biosVersion && !biosDate) {
|
|
75
|
+
return {
|
|
76
|
+
available: false,
|
|
77
|
+
vendor: "generic",
|
|
78
|
+
raw_vendor: null,
|
|
79
|
+
product_name: null,
|
|
80
|
+
bios_version: null,
|
|
81
|
+
bios_date: null,
|
|
82
|
+
is_virtual: false,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const { vendor, is_virtual } = classifyVendor(rawVendor, productName);
|
|
86
|
+
return {
|
|
87
|
+
available: true,
|
|
88
|
+
vendor,
|
|
89
|
+
raw_vendor: rawVendor,
|
|
90
|
+
product_name: productName,
|
|
91
|
+
bios_version: biosVersion,
|
|
92
|
+
bios_date: biosDate,
|
|
93
|
+
is_virtual,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* One-line human-readable startup banner.
|
|
98
|
+
* "Vendor: Dell PowerEdge R740 (Dell Inc., BIOS 2.21.2, 2024-08-15)"
|
|
99
|
+
* "Vendor: virtual (KVM)"
|
|
100
|
+
* "Vendor: unknown (DMI not available)"
|
|
101
|
+
*/
|
|
102
|
+
export function formatVendorLine(info) {
|
|
103
|
+
if (!info.available)
|
|
104
|
+
return "Vendor: unknown (DMI not available)";
|
|
105
|
+
if (info.is_virtual)
|
|
106
|
+
return `Vendor: virtual (${info.raw_vendor ?? "unknown"})`;
|
|
107
|
+
const parts = [];
|
|
108
|
+
parts.push(info.product_name ?? "unknown product");
|
|
109
|
+
const meta = [];
|
|
110
|
+
if (info.raw_vendor)
|
|
111
|
+
meta.push(info.raw_vendor);
|
|
112
|
+
if (info.bios_version)
|
|
113
|
+
meta.push(`BIOS ${info.bios_version}`);
|
|
114
|
+
if (info.bios_date)
|
|
115
|
+
meta.push(info.bios_date);
|
|
116
|
+
return `Vendor: ${parts.join(" ")}${meta.length ? ` (${meta.join(", ")})` : ""}`;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=dmi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dmi.js","sourceRoot":"","sources":["../../src/collect/dmi.ts"],"names":[],"mappings":"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"}
|
package/dist/collect/ipmi.d.ts
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
|
-
import type { IpmiInfo, FanStatus } from "../lib/types.js";
|
|
2
|
-
|
|
1
|
+
import type { IpmiInfo, FanStatus, Vendor, IpmiCapability } from "../lib/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Collect IPMI snapshot.
|
|
4
|
+
*
|
|
5
|
+
* @param vendor Vendor from DMI; controls vendor-aware sensor classification.
|
|
6
|
+
* @param capability Optional cached startup-time IPMI capability. When passed
|
|
7
|
+
* and `available: false`, returns emptyIpmi without spawning
|
|
8
|
+
* any ipmitool processes. When omitted, behaves as before
|
|
9
|
+
* (per-cycle ENOENT on no-BMC hosts; supported for tests
|
|
10
|
+
* and back-compat).
|
|
11
|
+
*/
|
|
12
|
+
export declare function collectIpmi(vendor?: Vendor, capability?: IpmiCapability): Promise<IpmiInfo>;
|
|
13
|
+
/**
|
|
14
|
+
* Re-parse the full SEL elist counting ECC events on the Memory entity.
|
|
15
|
+
* Used for vendors (notably Dell) that don't expose ECC counters as
|
|
16
|
+
* named sensors. Returns cumulative counts since last SEL clear.
|
|
17
|
+
*/
|
|
18
|
+
export declare function collectSelEccCounts(): Promise<{
|
|
19
|
+
correctable: number;
|
|
20
|
+
uncorrectable: number;
|
|
21
|
+
newest_event_timestamp: string | null;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function parseSelEccCounts(output: string): {
|
|
24
|
+
correctable: number;
|
|
25
|
+
uncorrectable: number;
|
|
26
|
+
newest_event_timestamp: string | null;
|
|
27
|
+
};
|
|
3
28
|
export declare function parseSelTimestamp(date: string, time: string): string;
|
|
4
29
|
export declare function classifySensor(sensor: string): string;
|
|
5
30
|
export declare function deriveSelSeverity(event: string, sensorType: string): string;
|
package/dist/collect/ipmi.js
CHANGED
|
@@ -1,8 +1,35 @@
|
|
|
1
1
|
import { run } from "../lib/exec.js";
|
|
2
|
-
|
|
2
|
+
import { isPsuRedundancySensor, classifyPsuRedundancyState } from "../lib/vendor-sensors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Collect IPMI snapshot.
|
|
5
|
+
*
|
|
6
|
+
* @param vendor Vendor from DMI; controls vendor-aware sensor classification.
|
|
7
|
+
* @param capability Optional cached startup-time IPMI capability. When passed
|
|
8
|
+
* and `available: false`, returns emptyIpmi without spawning
|
|
9
|
+
* any ipmitool processes. When omitted, behaves as before
|
|
10
|
+
* (per-cycle ENOENT on no-BMC hosts; supported for tests
|
|
11
|
+
* and back-compat).
|
|
12
|
+
*/
|
|
13
|
+
export async function collectIpmi(vendor = "generic", capability) {
|
|
14
|
+
if (capability && !capability.available) {
|
|
15
|
+
return {
|
|
16
|
+
available: false,
|
|
17
|
+
sensors: [],
|
|
18
|
+
ecc_errors: { correctable: 0, uncorrectable: 0 },
|
|
19
|
+
sel_entries_count: 0,
|
|
20
|
+
sel_events_recent: [],
|
|
21
|
+
fans: [],
|
|
22
|
+
detection: capability,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
3
25
|
const sensorRaw = await run("ipmitool", ["sensor"]);
|
|
4
26
|
if (!sensorRaw) {
|
|
5
|
-
return {
|
|
27
|
+
return {
|
|
28
|
+
available: false, sensors: [],
|
|
29
|
+
ecc_errors: { correctable: 0, uncorrectable: 0 },
|
|
30
|
+
sel_entries_count: 0, sel_events_recent: [], fans: [],
|
|
31
|
+
detection: capability,
|
|
32
|
+
};
|
|
6
33
|
}
|
|
7
34
|
// Parse sensor readings
|
|
8
35
|
const sensors = [];
|
|
@@ -46,17 +73,78 @@ export async function collectIpmi() {
|
|
|
46
73
|
}
|
|
47
74
|
// SEL recent events
|
|
48
75
|
const selEvents = await collectSelEvents();
|
|
76
|
+
// ECC errors from SEL events (Dell iDRAC reports memory ECC only via SEL).
|
|
77
|
+
// Counts ALL events since last SEL clear, not just the recent window —
|
|
78
|
+
// re-parse the full SEL elist for accurate cumulative counts.
|
|
79
|
+
const selEccCounts = await collectSelEccCounts();
|
|
80
|
+
// PSU redundancy state from a vendor sensor (Dell `PS Redundancy`).
|
|
81
|
+
let psuRedundancyState;
|
|
82
|
+
for (const s of sensors) {
|
|
83
|
+
if (isPsuRedundancySensor(s.name, vendor)) {
|
|
84
|
+
const stateText = String(s.status).toLowerCase() === "ok"
|
|
85
|
+
? String(s.value) // value carries the redundancy text on some firmwares
|
|
86
|
+
: String(s.status);
|
|
87
|
+
psuRedundancyState = classifyPsuRedundancyState(stateText);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
49
91
|
// Fan status
|
|
50
92
|
const fans = await collectFanStatus();
|
|
51
93
|
return {
|
|
52
94
|
available: true,
|
|
53
95
|
sensors,
|
|
54
96
|
ecc_errors: { correctable, uncorrectable },
|
|
97
|
+
ecc_errors_from_sel: selEccCounts,
|
|
98
|
+
psu_redundancy_state: psuRedundancyState,
|
|
55
99
|
sel_entries_count: selCount,
|
|
56
100
|
sel_events_recent: selEvents,
|
|
57
101
|
fans,
|
|
102
|
+
detection: capability,
|
|
58
103
|
};
|
|
59
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Re-parse the full SEL elist counting ECC events on the Memory entity.
|
|
107
|
+
* Used for vendors (notably Dell) that don't expose ECC counters as
|
|
108
|
+
* named sensors. Returns cumulative counts since last SEL clear.
|
|
109
|
+
*/
|
|
110
|
+
export async function collectSelEccCounts() {
|
|
111
|
+
const output = await run("ipmitool", ["sel", "elist"]);
|
|
112
|
+
if (!output)
|
|
113
|
+
return { correctable: 0, uncorrectable: 0, newest_event_timestamp: null };
|
|
114
|
+
return parseSelEccCounts(output);
|
|
115
|
+
}
|
|
116
|
+
export function parseSelEccCounts(output) {
|
|
117
|
+
let correctable = 0;
|
|
118
|
+
let uncorrectable = 0;
|
|
119
|
+
let newest = null;
|
|
120
|
+
for (const line of output.split("\n")) {
|
|
121
|
+
const parts = line.split("|").map(s => s.trim());
|
|
122
|
+
if (parts.length < 5)
|
|
123
|
+
continue;
|
|
124
|
+
const [_id, date, time, sensor, event] = parts;
|
|
125
|
+
const sensorLower = sensor.toLowerCase();
|
|
126
|
+
const eventLower = event.toLowerCase();
|
|
127
|
+
// Memory entity: Dell uses sensor names like "Memory", "ECC Corr Err",
|
|
128
|
+
// "ECC Uncorr Err", or DIMM-slot identifiers. Match on sensor type
|
|
129
|
+
// tokens or the event description directly.
|
|
130
|
+
const isMemoryRelated = sensorLower.includes("memory") ||
|
|
131
|
+
sensorLower.includes("dimm") ||
|
|
132
|
+
sensorLower.includes("ecc") ||
|
|
133
|
+
eventLower.includes("ecc");
|
|
134
|
+
if (!isMemoryRelated)
|
|
135
|
+
continue;
|
|
136
|
+
if (eventLower.includes("uncorrectable") || eventLower.includes("uncorr")) {
|
|
137
|
+
uncorrectable++;
|
|
138
|
+
}
|
|
139
|
+
else if (eventLower.includes("correctable") || eventLower.includes("corr")) {
|
|
140
|
+
correctable++;
|
|
141
|
+
}
|
|
142
|
+
const ts = parseSelTimestamp(date, time);
|
|
143
|
+
if (!newest || ts > newest)
|
|
144
|
+
newest = ts;
|
|
145
|
+
}
|
|
146
|
+
return { correctable, uncorrectable, newest_event_timestamp: newest };
|
|
147
|
+
}
|
|
60
148
|
async function collectSelEvents() {
|
|
61
149
|
const output = await run("ipmitool", ["sel", "elist"]);
|
|
62
150
|
if (!output)
|
package/dist/collect/ipmi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipmi.js","sourceRoot":"","sources":["../../src/collect/ipmi.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ipmi.js","sourceRoot":"","sources":["../../src/collect/ipmi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ThermalInfo, ThermalReading } from "../lib/types.js";
|
|
2
|
+
export declare function collectFromHwmon(root?: string): Promise<{
|
|
3
|
+
cpu: ThermalReading[];
|
|
4
|
+
other: ThermalReading[];
|
|
5
|
+
} | null>;
|
|
6
|
+
export declare function collectFromThermalZone(root?: string): Promise<{
|
|
7
|
+
cpu: ThermalReading[];
|
|
8
|
+
other: ThermalReading[];
|
|
9
|
+
} | null>;
|
|
10
|
+
export declare function collectThermal(): Promise<ThermalInfo>;
|