@sonde/packs 0.1.1 → 0.1.3
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/.turbo/turbo-build.log +4 -6
- package/.turbo/turbo-test.log +57 -814
- package/CHANGELOG.md +18 -0
- package/dist/docker/manifest (# Edit conflict 2026-02-19 LIl7ilN #).js +54 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/a10.d.ts +3 -0
- package/dist/integrations/a10.d.ts.map +1 -0
- package/dist/integrations/a10.js +218 -0
- package/dist/integrations/a10.js.map +1 -0
- package/dist/integrations/checkpoint.d.ts +3 -0
- package/dist/integrations/checkpoint.d.ts.map +1 -0
- package/dist/integrations/checkpoint.js +249 -0
- package/dist/integrations/checkpoint.js.map +1 -0
- package/dist/integrations/citrix.d.ts.map +1 -1
- package/dist/integrations/citrix.js +14 -19
- package/dist/integrations/citrix.js.map +1 -1
- package/dist/integrations/citrix.test.js +3 -3
- package/dist/integrations/citrix.test.js.map +1 -1
- package/dist/integrations/datadog.d.ts +3 -0
- package/dist/integrations/datadog.d.ts.map +1 -0
- package/dist/integrations/datadog.js +195 -0
- package/dist/integrations/datadog.js.map +1 -0
- package/dist/integrations/graph.d.ts.map +1 -1
- package/dist/integrations/graph.js +10 -15
- package/dist/integrations/graph.js.map +1 -1
- package/dist/integrations/graph.test.js +3 -3
- package/dist/integrations/graph.test.js.map +1 -1
- package/dist/integrations/httpbin.d.ts.map +1 -1
- package/dist/integrations/httpbin.js +2 -7
- package/dist/integrations/httpbin.js.map +1 -1
- package/dist/integrations/jira.d.ts +3 -0
- package/dist/integrations/jira.d.ts.map +1 -0
- package/dist/integrations/jira.js +199 -0
- package/dist/integrations/jira.js.map +1 -0
- package/dist/integrations/loki.d.ts +3 -0
- package/dist/integrations/loki.d.ts.map +1 -0
- package/dist/integrations/loki.js +178 -0
- package/dist/integrations/loki.js.map +1 -0
- package/dist/integrations/meraki.d.ts +3 -0
- package/dist/integrations/meraki.d.ts.map +1 -0
- package/dist/integrations/meraki.js +238 -0
- package/dist/integrations/meraki.js.map +1 -0
- package/dist/integrations/nutanix.d.ts.map +1 -1
- package/dist/integrations/nutanix.js +12 -17
- package/dist/integrations/nutanix.js.map +1 -1
- package/dist/integrations/nutanix.test.js +3 -3
- package/dist/integrations/nutanix.test.js.map +1 -1
- package/dist/integrations/pagerduty.d.ts +3 -0
- package/dist/integrations/pagerduty.d.ts.map +1 -0
- package/dist/integrations/pagerduty.js +229 -0
- package/dist/integrations/pagerduty.js.map +1 -0
- package/dist/integrations/proxmox.d.ts.map +1 -1
- package/dist/integrations/proxmox.js +8 -13
- package/dist/integrations/proxmox.js.map +1 -1
- package/dist/integrations/proxmox.test.js +3 -3
- package/dist/integrations/proxmox.test.js.map +1 -1
- package/dist/integrations/servicenow.d.ts.map +1 -1
- package/dist/integrations/servicenow.js +10 -16
- package/dist/integrations/servicenow.js.map +1 -1
- package/dist/integrations/servicenow.test.js +3 -3
- package/dist/integrations/servicenow.test.js.map +1 -1
- package/dist/integrations/splunk.d.ts.map +1 -1
- package/dist/integrations/splunk.js +8 -13
- package/dist/integrations/splunk.js.map +1 -1
- package/dist/integrations/splunk.test.js +3 -3
- package/dist/integrations/splunk.test.js.map +1 -1
- package/dist/integrations/thousandeyes.d.ts +3 -0
- package/dist/integrations/thousandeyes.d.ts.map +1 -0
- package/dist/integrations/thousandeyes.js +263 -0
- package/dist/integrations/thousandeyes.js.map +1 -0
- package/dist/integrations/vcenter.d.ts +3 -0
- package/dist/integrations/vcenter.d.ts.map +1 -0
- package/dist/integrations/vcenter.js +190 -0
- package/dist/integrations/vcenter.js.map +1 -0
- package/dist/proxmox/probes/ceph-status.test.d.ts (# Edit conflict 2026-02-19 N25hAvJ #).map +1 -0
- package/dist/system/index.d.ts.map +1 -1
- package/dist/system/index.js +10 -0
- package/dist/system/index.js.map +1 -1
- package/dist/system/manifest.d.ts.map +1 -1
- package/dist/system/manifest.js +100 -3
- package/dist/system/manifest.js.map +1 -1
- package/dist/system/probes/logs-dmesg.d.ts +13 -0
- package/dist/system/probes/logs-dmesg.d.ts.map +1 -0
- package/dist/system/probes/logs-dmesg.js +22 -0
- package/dist/system/probes/logs-dmesg.js.map +1 -0
- package/dist/system/probes/logs-dmesg.test.d.ts +2 -0
- package/dist/system/probes/logs-dmesg.test.d.ts.map +1 -0
- package/dist/system/probes/logs-dmesg.test.js +55 -0
- package/dist/system/probes/logs-dmesg.test.js.map +1 -0
- package/dist/system/probes/logs-journal.d.ts +21 -0
- package/dist/system/probes/logs-journal.d.ts.map +1 -0
- package/dist/system/probes/logs-journal.js +70 -0
- package/dist/system/probes/logs-journal.js.map +1 -0
- package/dist/system/probes/logs-journal.test.d.ts +2 -0
- package/dist/system/probes/logs-journal.test.d.ts.map +1 -0
- package/dist/system/probes/logs-journal.test.js +113 -0
- package/dist/system/probes/logs-journal.test.js.map +1 -0
- package/dist/system/probes/logs-tail.d.ts +14 -0
- package/dist/system/probes/logs-tail.d.ts.map +1 -0
- package/dist/system/probes/logs-tail.js +40 -0
- package/dist/system/probes/logs-tail.js.map +1 -0
- package/dist/system/probes/logs-tail.test.d.ts +2 -0
- package/dist/system/probes/logs-tail.test.d.ts.map +1 -0
- package/dist/system/probes/logs-tail.test.js +82 -0
- package/dist/system/probes/logs-tail.test.js.map +1 -0
- package/dist/system/probes/ping.d.ts +20 -0
- package/dist/system/probes/ping.d.ts.map +1 -0
- package/dist/system/probes/ping.js +54 -0
- package/dist/system/probes/ping.js.map +1 -0
- package/dist/system/probes/ping.test.d.ts +2 -0
- package/dist/system/probes/ping.test.d.ts.map +1 -0
- package/dist/system/probes/ping.test.js +127 -0
- package/dist/system/probes/ping.test.js.map +1 -0
- package/dist/system/probes/traceroute.d.ts +17 -0
- package/dist/system/probes/traceroute.d.ts.map +1 -0
- package/dist/system/probes/traceroute.js +72 -0
- package/dist/system/probes/traceroute.js.map +1 -0
- package/dist/system/probes/traceroute.test.d.ts +2 -0
- package/dist/system/probes/traceroute.test.d.ts.map +1 -0
- package/dist/system/probes/traceroute.test.js +98 -0
- package/dist/system/probes/traceroute.test.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +9 -0
- package/src/integrations/a10.ts +370 -0
- package/src/integrations/checkpoint.ts +381 -0
- package/src/integrations/citrix.test.ts +3 -3
- package/src/integrations/citrix.ts +17 -21
- package/src/integrations/datadog.ts +281 -0
- package/src/integrations/graph.test.ts +3 -3
- package/src/integrations/graph.ts +10 -14
- package/src/integrations/httpbin.ts +2 -6
- package/src/integrations/jira.ts +272 -0
- package/src/integrations/loki.ts +228 -0
- package/src/integrations/meraki.ts +344 -0
- package/src/integrations/nutanix.test.ts +3 -3
- package/src/integrations/nutanix.ts +13 -17
- package/src/integrations/pagerduty.ts +319 -0
- package/src/integrations/proxmox.test.ts +3 -3
- package/src/integrations/proxmox.ts +8 -12
- package/src/integrations/servicenow.test.ts +3 -3
- package/src/integrations/servicenow.ts +10 -15
- package/src/integrations/splunk.test.ts +3 -3
- package/src/integrations/splunk.ts +9 -13
- package/src/integrations/thousandeyes.ts +353 -0
- package/src/integrations/vcenter.ts +261 -0
- package/src/system/index.ts +10 -0
- package/src/system/manifest.ts +113 -3
- package/src/system/probes/logs-dmesg.test.ts +83 -0
- package/src/system/probes/logs-dmesg.ts +38 -0
- package/src/system/probes/logs-journal.test.ts +142 -0
- package/src/system/probes/logs-journal.ts +103 -0
- package/src/system/probes/logs-tail.test.ts +140 -0
- package/src/system/probes/logs-tail.ts +70 -0
- package/src/system/probes/ping.test.ts +163 -0
- package/src/system/probes/ping.ts +89 -0
- package/src/system/probes/traceroute.test.ts +149 -0
- package/src/system/probes/traceroute.ts +99 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { parsePingOutput, ping } from './ping.js';
|
|
3
|
+
const LINUX_OUTPUT = `PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
|
|
4
|
+
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.543 ms
|
|
5
|
+
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.401 ms
|
|
6
|
+
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.387 ms
|
|
7
|
+
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.392 ms
|
|
8
|
+
|
|
9
|
+
--- 10.0.0.1 ping statistics ---
|
|
10
|
+
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
|
|
11
|
+
rtt min/avg/max/mdev = 0.387/0.430/0.543/0.065 ms
|
|
12
|
+
`;
|
|
13
|
+
const MACOS_OUTPUT = `PING 192.168.1.1 (192.168.1.1): 56 data bytes
|
|
14
|
+
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=1.234 ms
|
|
15
|
+
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.456 ms
|
|
16
|
+
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.123 ms
|
|
17
|
+
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.345 ms
|
|
18
|
+
|
|
19
|
+
--- 192.168.1.1 ping statistics ---
|
|
20
|
+
4 packets transmitted, 4 packets received, 0.0% packet loss
|
|
21
|
+
round-trip min/avg/max/stddev = 1.123/1.289/1.456/0.122 ms
|
|
22
|
+
`;
|
|
23
|
+
const FULL_LOSS_OUTPUT = `PING 10.99.99.99 (10.99.99.99) 56(84) bytes of data.
|
|
24
|
+
|
|
25
|
+
--- 10.99.99.99 ping statistics ---
|
|
26
|
+
4 packets transmitted, 0 received, 100% packet loss, time 3003ms
|
|
27
|
+
`;
|
|
28
|
+
const PARTIAL_LOSS_OUTPUT = `PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
|
|
29
|
+
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=0.500 ms
|
|
30
|
+
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=0.600 ms
|
|
31
|
+
|
|
32
|
+
--- 10.0.0.5 ping statistics ---
|
|
33
|
+
4 packets transmitted, 2 received, 50% packet loss, time 3004ms
|
|
34
|
+
rtt min/avg/max/mdev = 0.500/0.550/0.600/0.050 ms
|
|
35
|
+
`;
|
|
36
|
+
describe('parsePingOutput', () => {
|
|
37
|
+
it('parses valid Linux ping output', () => {
|
|
38
|
+
const result = parsePingOutput(LINUX_OUTPUT, '10.0.0.1');
|
|
39
|
+
expect(result.host).toBe('10.0.0.1');
|
|
40
|
+
expect(result.packetsTransmitted).toBe(4);
|
|
41
|
+
expect(result.packetsReceived).toBe(4);
|
|
42
|
+
expect(result.packetLossPercent).toBe(0);
|
|
43
|
+
expect(result.rttMs).toEqual({
|
|
44
|
+
min: 0.387,
|
|
45
|
+
avg: 0.43,
|
|
46
|
+
max: 0.543,
|
|
47
|
+
stddev: 0.065,
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
it('parses valid macOS ping output', () => {
|
|
51
|
+
const result = parsePingOutput(MACOS_OUTPUT, '192.168.1.1');
|
|
52
|
+
expect(result.host).toBe('192.168.1.1');
|
|
53
|
+
expect(result.packetsTransmitted).toBe(4);
|
|
54
|
+
expect(result.packetsReceived).toBe(4);
|
|
55
|
+
expect(result.packetLossPercent).toBe(0);
|
|
56
|
+
expect(result.rttMs).toEqual({
|
|
57
|
+
min: 1.123,
|
|
58
|
+
avg: 1.289,
|
|
59
|
+
max: 1.456,
|
|
60
|
+
stddev: 0.122,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
it('handles 100% packet loss', () => {
|
|
64
|
+
const result = parsePingOutput(FULL_LOSS_OUTPUT, '10.99.99.99');
|
|
65
|
+
expect(result.packetsTransmitted).toBe(4);
|
|
66
|
+
expect(result.packetsReceived).toBe(0);
|
|
67
|
+
expect(result.packetLossPercent).toBe(100);
|
|
68
|
+
expect(result.rttMs).toBeUndefined();
|
|
69
|
+
});
|
|
70
|
+
it('handles partial packet loss with RTT', () => {
|
|
71
|
+
const result = parsePingOutput(PARTIAL_LOSS_OUTPUT, '10.0.0.5');
|
|
72
|
+
expect(result.packetsTransmitted).toBe(4);
|
|
73
|
+
expect(result.packetsReceived).toBe(2);
|
|
74
|
+
expect(result.packetLossPercent).toBe(50);
|
|
75
|
+
expect(result.rttMs).toBeDefined();
|
|
76
|
+
expect(result.rttMs?.avg).toBeCloseTo(0.55);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe('ping handler', () => {
|
|
80
|
+
it('throws when host param is missing', async () => {
|
|
81
|
+
const mockExec = async () => '';
|
|
82
|
+
await expect(ping(undefined, mockExec)).rejects.toThrow('Missing required parameter: host');
|
|
83
|
+
await expect(ping({}, mockExec)).rejects.toThrow('Missing required parameter: host');
|
|
84
|
+
});
|
|
85
|
+
it('passes correct args to exec with default count', async () => {
|
|
86
|
+
const calls = [];
|
|
87
|
+
const mockExec = async (cmd, args) => {
|
|
88
|
+
calls.push({ cmd, args });
|
|
89
|
+
return LINUX_OUTPUT;
|
|
90
|
+
};
|
|
91
|
+
const result = (await ping({ host: '10.0.0.1' }, mockExec));
|
|
92
|
+
expect(calls).toHaveLength(1);
|
|
93
|
+
expect(calls[0]?.cmd).toBe('ping');
|
|
94
|
+
expect(calls[0]?.args).toContain('-c');
|
|
95
|
+
expect(calls[0]?.args).toContain('4');
|
|
96
|
+
expect(calls[0]?.args).toContain('10.0.0.1');
|
|
97
|
+
expect(result.host).toBe('10.0.0.1');
|
|
98
|
+
expect(result.packetsTransmitted).toBe(4);
|
|
99
|
+
});
|
|
100
|
+
it('respects custom count param', async () => {
|
|
101
|
+
const calls = [];
|
|
102
|
+
const mockExec = async (cmd, args) => {
|
|
103
|
+
calls.push({ cmd, args });
|
|
104
|
+
return LINUX_OUTPUT;
|
|
105
|
+
};
|
|
106
|
+
await ping({ host: '10.0.0.1', count: 2 }, mockExec);
|
|
107
|
+
expect(calls[0]?.args).toContain('2');
|
|
108
|
+
});
|
|
109
|
+
it('clamps count to valid range', async () => {
|
|
110
|
+
const calls = [];
|
|
111
|
+
const mockExec = async (cmd, args) => {
|
|
112
|
+
calls.push({ cmd, args });
|
|
113
|
+
return LINUX_OUTPUT;
|
|
114
|
+
};
|
|
115
|
+
await ping({ host: '10.0.0.1', count: 100 }, mockExec);
|
|
116
|
+
expect(calls[0]?.args).toContain('20');
|
|
117
|
+
await ping({ host: '10.0.0.1', count: 0 }, mockExec);
|
|
118
|
+
expect(calls[1]?.args).toContain('1');
|
|
119
|
+
});
|
|
120
|
+
it('handles exec failure (DNS resolution error)', async () => {
|
|
121
|
+
const mockExec = async () => {
|
|
122
|
+
throw new Error('ping: unknown host nosuchhost.invalid');
|
|
123
|
+
};
|
|
124
|
+
await expect(ping({ host: 'nosuchhost.invalid' }, mockExec)).rejects.toThrow('unknown host');
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=ping.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ping.test.js","sourceRoot":"","sources":["../../../src/system/probes/ping.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAElD,MAAM,YAAY,GAAG;;;;;;;;;CASpB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;CASpB,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;CAIxB,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;;;;CAO3B,CAAC;AAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAEzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC3B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC3B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,eAAe,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAEhE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG,eAAe,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QAEhE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,QAAQ,GAAW,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACrD,kCAAkC,CACnC,CAAC;QACF,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC9C,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,KAAK,GAA2C,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAW,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1B,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CACxB,EAAE,IAAI,EAAE,UAAU,EAAE,EACpB,QAAQ,CACT,CAAe,CAAC;QAEjB,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,KAAK,GAA2C,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAW,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1B,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAErD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,KAAK,GAA2C,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAW,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1B,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,QAAQ,GAAW,KAAK,IAAI,EAAE;YAClC,MAAM,IAAI,KAAK,CACb,uCAAuC,CACxC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,MAAM,CACV,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,QAAQ,CAAC,CAC/C,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ProbeHandler } from '../../types.js';
|
|
2
|
+
export interface TracerouteHop {
|
|
3
|
+
hop: number;
|
|
4
|
+
ip: string | null;
|
|
5
|
+
rttMs: (number | null)[];
|
|
6
|
+
}
|
|
7
|
+
export interface TracerouteResult {
|
|
8
|
+
host: string;
|
|
9
|
+
hops: TracerouteHop[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Traces the network path to a host via `traceroute -n`.
|
|
13
|
+
* Works on both Linux and macOS.
|
|
14
|
+
*/
|
|
15
|
+
export declare const traceroute: ProbeHandler;
|
|
16
|
+
export declare function parseTracerouteOutput(raw: string, host: string): TracerouteResult;
|
|
17
|
+
//# sourceMappingURL=traceroute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceroute.d.ts","sourceRoot":"","sources":["../../../src/system/probes/traceroute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,YAqBxB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,gBAAgB,CAuBlB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Traces the network path to a host via `traceroute -n`.
|
|
3
|
+
* Works on both Linux and macOS.
|
|
4
|
+
*/
|
|
5
|
+
export const traceroute = async (params, exec) => {
|
|
6
|
+
const host = params?.host;
|
|
7
|
+
if (!host) {
|
|
8
|
+
throw new Error('Missing required parameter: host');
|
|
9
|
+
}
|
|
10
|
+
const maxHops = Math.min(Math.max(Number(params?.maxHops ?? 30), 1), 64);
|
|
11
|
+
const output = await exec('traceroute', [
|
|
12
|
+
'-n',
|
|
13
|
+
'-m',
|
|
14
|
+
String(maxHops),
|
|
15
|
+
'-w',
|
|
16
|
+
'2',
|
|
17
|
+
host,
|
|
18
|
+
]);
|
|
19
|
+
return parseTracerouteOutput(output, host);
|
|
20
|
+
};
|
|
21
|
+
export function parseTracerouteOutput(raw, host) {
|
|
22
|
+
const hops = [];
|
|
23
|
+
const lines = raw.trim().split('\n');
|
|
24
|
+
for (const line of lines) {
|
|
25
|
+
// Skip the header line ("traceroute to ...")
|
|
26
|
+
const hopMatch = line.match(/^\s*(\d+)\s+(.+)/);
|
|
27
|
+
if (!hopMatch)
|
|
28
|
+
continue;
|
|
29
|
+
const hopNum = Number(hopMatch[1]);
|
|
30
|
+
const rest = hopMatch[2] ?? '';
|
|
31
|
+
// All probes timed out: "* * *"
|
|
32
|
+
if (/^\*\s+\*\s+\*\s*$/.test(rest)) {
|
|
33
|
+
hops.push({ hop: hopNum, ip: null, rttMs: [null, null, null] });
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const hop = parseHopLine(hopNum, rest);
|
|
37
|
+
hops.push(hop);
|
|
38
|
+
}
|
|
39
|
+
return { host, hops };
|
|
40
|
+
}
|
|
41
|
+
function parseHopLine(hopNum, rest) {
|
|
42
|
+
let ip = null;
|
|
43
|
+
const rttMs = [];
|
|
44
|
+
// Tokenize the rest of the line
|
|
45
|
+
const tokens = rest.trim().split(/\s+/);
|
|
46
|
+
let i = 0;
|
|
47
|
+
while (i < tokens.length) {
|
|
48
|
+
const token = tokens[i];
|
|
49
|
+
if (!token || token === '*') {
|
|
50
|
+
rttMs.push(null);
|
|
51
|
+
i++;
|
|
52
|
+
}
|
|
53
|
+
else if (token === 'ms') {
|
|
54
|
+
// Skip "ms" — already consumed the number
|
|
55
|
+
i++;
|
|
56
|
+
}
|
|
57
|
+
else if (/^\d+\.\d+\.\d+\.\d+$/.test(token) || token.includes(':')) {
|
|
58
|
+
// IPv4 or IPv6 address
|
|
59
|
+
ip = token;
|
|
60
|
+
i++;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const num = Number.parseFloat(token);
|
|
64
|
+
if (!Number.isNaN(num)) {
|
|
65
|
+
rttMs.push(num);
|
|
66
|
+
}
|
|
67
|
+
i++;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return { hop: hopNum, ip, rttMs };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=traceroute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceroute.js","sourceRoot":"","sources":["../../../src/system/probes/traceroute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceroute.test.d.ts","sourceRoot":"","sources":["../../../src/system/probes/traceroute.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { parseTracerouteOutput, traceroute, } from './traceroute.js';
|
|
3
|
+
const LINUX_TRACEROUTE = `traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
|
|
4
|
+
1 192.168.1.1 1.234 ms 1.100 ms 1.050 ms
|
|
5
|
+
2 10.0.0.1 5.432 ms 5.300 ms 5.200 ms
|
|
6
|
+
3 * * *
|
|
7
|
+
4 172.16.0.1 15.678 ms 15.500 ms 15.400 ms
|
|
8
|
+
5 8.8.8.8 20.123 ms 20.050 ms 19.900 ms`;
|
|
9
|
+
const MACOS_TRACEROUTE = `traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
|
|
10
|
+
1 192.168.0.1 2.345 ms 2.100 ms 2.050 ms
|
|
11
|
+
2 * * *
|
|
12
|
+
3 1.1.1.1 10.567 ms 10.400 ms 10.300 ms`;
|
|
13
|
+
const ALL_TIMEOUT = `traceroute to 10.0.0.99 (10.0.0.99), 5 hops max, 60 byte packets
|
|
14
|
+
1 * * *
|
|
15
|
+
2 * * *
|
|
16
|
+
3 * * *`;
|
|
17
|
+
describe('parseTracerouteOutput', () => {
|
|
18
|
+
it('parses Linux traceroute with mixed hops', () => {
|
|
19
|
+
const result = parseTracerouteOutput(LINUX_TRACEROUTE, '8.8.8.8');
|
|
20
|
+
expect(result.host).toBe('8.8.8.8');
|
|
21
|
+
expect(result.hops).toHaveLength(5);
|
|
22
|
+
// Hop 1: normal response
|
|
23
|
+
expect(result.hops[0]?.hop).toBe(1);
|
|
24
|
+
expect(result.hops[0]?.ip).toBe('192.168.1.1');
|
|
25
|
+
expect(result.hops[0]?.rttMs).toEqual([1.234, 1.1, 1.05]);
|
|
26
|
+
// Hop 3: all timeouts
|
|
27
|
+
expect(result.hops[2]?.hop).toBe(3);
|
|
28
|
+
expect(result.hops[2]?.ip).toBeNull();
|
|
29
|
+
expect(result.hops[2]?.rttMs).toEqual([null, null, null]);
|
|
30
|
+
// Hop 5: destination
|
|
31
|
+
expect(result.hops[4]?.hop).toBe(5);
|
|
32
|
+
expect(result.hops[4]?.ip).toBe('8.8.8.8');
|
|
33
|
+
expect(result.hops[4]?.rttMs).toEqual([20.123, 20.05, 19.9]);
|
|
34
|
+
});
|
|
35
|
+
it('parses macOS traceroute output', () => {
|
|
36
|
+
const result = parseTracerouteOutput(MACOS_TRACEROUTE, '1.1.1.1');
|
|
37
|
+
expect(result.host).toBe('1.1.1.1');
|
|
38
|
+
expect(result.hops).toHaveLength(3);
|
|
39
|
+
expect(result.hops[0]?.ip).toBe('192.168.0.1');
|
|
40
|
+
expect(result.hops[1]?.ip).toBeNull();
|
|
41
|
+
expect(result.hops[2]?.ip).toBe('1.1.1.1');
|
|
42
|
+
});
|
|
43
|
+
it('handles all-timeout output', () => {
|
|
44
|
+
const result = parseTracerouteOutput(ALL_TIMEOUT, '10.0.0.99');
|
|
45
|
+
expect(result.hops).toHaveLength(3);
|
|
46
|
+
for (const hop of result.hops) {
|
|
47
|
+
expect(hop.ip).toBeNull();
|
|
48
|
+
expect(hop.rttMs).toEqual([null, null, null]);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
it('handles empty output', () => {
|
|
52
|
+
const result = parseTracerouteOutput('', '8.8.8.8');
|
|
53
|
+
expect(result.hops).toHaveLength(0);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('traceroute handler', () => {
|
|
57
|
+
it('throws when host is missing', async () => {
|
|
58
|
+
const mockExec = async () => '';
|
|
59
|
+
await expect(traceroute(undefined, mockExec)).rejects.toThrow('Missing required parameter: host');
|
|
60
|
+
await expect(traceroute({}, mockExec)).rejects.toThrow('Missing required parameter: host');
|
|
61
|
+
});
|
|
62
|
+
it('passes correct args with defaults', async () => {
|
|
63
|
+
const calls = [];
|
|
64
|
+
const mockExec = async (cmd, args) => {
|
|
65
|
+
calls.push({ cmd, args });
|
|
66
|
+
return LINUX_TRACEROUTE;
|
|
67
|
+
};
|
|
68
|
+
const result = (await traceroute({ host: '8.8.8.8' }, mockExec));
|
|
69
|
+
expect(calls).toHaveLength(1);
|
|
70
|
+
expect(calls[0]?.cmd).toBe('traceroute');
|
|
71
|
+
expect(calls[0]?.args).toEqual([
|
|
72
|
+
'-n', '-m', '30', '-w', '2', '8.8.8.8',
|
|
73
|
+
]);
|
|
74
|
+
expect(result.host).toBe('8.8.8.8');
|
|
75
|
+
expect(result.hops).toHaveLength(5);
|
|
76
|
+
});
|
|
77
|
+
it('respects custom maxHops', async () => {
|
|
78
|
+
const calls = [];
|
|
79
|
+
const mockExec = async (cmd, args) => {
|
|
80
|
+
calls.push({ cmd, args });
|
|
81
|
+
return '';
|
|
82
|
+
};
|
|
83
|
+
await traceroute({ host: '8.8.8.8', maxHops: 10 }, mockExec);
|
|
84
|
+
expect(calls[0]?.args).toContain('10');
|
|
85
|
+
});
|
|
86
|
+
it('clamps maxHops to valid range', async () => {
|
|
87
|
+
const calls = [];
|
|
88
|
+
const mockExec = async (cmd, args) => {
|
|
89
|
+
calls.push({ cmd, args });
|
|
90
|
+
return '';
|
|
91
|
+
};
|
|
92
|
+
await traceroute({ host: '8.8.8.8', maxHops: 999 }, mockExec);
|
|
93
|
+
expect(calls[0]?.args).toContain('64');
|
|
94
|
+
await traceroute({ host: '8.8.8.8', maxHops: 0 }, mockExec);
|
|
95
|
+
expect(calls[1]?.args).toContain('1');
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=traceroute.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceroute.test.js","sourceRoot":"","sources":["../../../src/system/probes/traceroute.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -39,6 +39,15 @@ export { graphPack } from './integrations/graph.js';
|
|
|
39
39
|
export { splunkPack } from './integrations/splunk.js';
|
|
40
40
|
export { proxmoxPack } from './integrations/proxmox.js';
|
|
41
41
|
export { nutanixPack } from './integrations/nutanix.js';
|
|
42
|
+
export { vcenterPack } from './integrations/vcenter.js';
|
|
43
|
+
export { datadogPack } from './integrations/datadog.js';
|
|
44
|
+
export { lokiPack } from './integrations/loki.js';
|
|
45
|
+
export { jiraPack } from './integrations/jira.js';
|
|
46
|
+
export { pagerdutyPack } from './integrations/pagerduty.js';
|
|
47
|
+
export { thousandeyesPack } from './integrations/thousandeyes.js';
|
|
48
|
+
export { merakiPack } from './integrations/meraki.js';
|
|
49
|
+
export { checkpointPack } from './integrations/checkpoint.js';
|
|
50
|
+
export { a10Pack } from './integrations/a10.js';
|
|
42
51
|
export { proxmoxDiagnosticRunbooks } from './runbooks/proxmox.js';
|
|
43
52
|
export { nutanixDiagnosticRunbooks } from './runbooks/nutanix.js';
|
|
44
53
|
|