@checkstack/healthcheck-ssh-backend 0.4.0 → 0.4.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/CHANGELOG.md +48 -0
- package/package.json +6 -6
- package/src/command-collector.ts +5 -0
- package/src/strategy.ts +11 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @checkstack/healthcheck-ssh-backend
|
|
2
2
|
|
|
3
|
+
## 0.4.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c55d7c6: Unify the healthcheck chart system on the `@checkstack/ui` SVG kit and
|
|
8
|
+
redesign the HealthCheck drawer.
|
|
9
|
+
|
|
10
|
+
- `@checkstack/ui` gains six chart primitives (each with a Storybook story):
|
|
11
|
+
`StackedTimeline` (stacked status counts per bucket on the colorblind-safe
|
|
12
|
+
status triad), `ChartTooltip` + `useBandHover` (the one shared chart
|
|
13
|
+
tooltip and its cursor hit-testing), `ChartCard` / `chartCardChromeClass`
|
|
14
|
+
(the premium gradient card chrome, flat on low-power devices), `StatTile`
|
|
15
|
+
(number-led metric tile with delta chip, sparkline/ribbon footer, and
|
|
16
|
+
click-to-expand disclosure), `DistributionBar` (stacked horizontal
|
|
17
|
+
distribution + legend, replaces pies), and `CategoryRibbon` (categorical
|
|
18
|
+
history ribbon). `TimeSeriesChart` gains a hover tooltip with a crosshair
|
|
19
|
+
marker.
|
|
20
|
+
- `@checkstack/common` adds four optional chart metadata keys to
|
|
21
|
+
`BaseHealthResultMeta`: `x-chart-priority` (tile sort weight, lower first,
|
|
22
|
+
default 100), `x-chart-good-direction` (`"up" | "down"`, which direction
|
|
23
|
+
of change is an improvement; consumers fall back to
|
|
24
|
+
`x-anomaly-direction`), and `x-chart-true-label` / `x-chart-false-label`
|
|
25
|
+
(prose for a boolean field's values wherever they surface in text, e.g. a
|
|
26
|
+
dominance chip reading "Usually successful (98%)" instead of "Usually
|
|
27
|
+
true"). Built-in collector backends annotate their headline metrics and
|
|
28
|
+
boolean fields accordingly (purely additive metadata).
|
|
29
|
+
- `@checkstack/healthcheck-frontend` rebuilds the drawer: a hero status
|
|
30
|
+
banner (status pill, healthy %, avg latency, interval, last run with the
|
|
31
|
+
exact datetime on hover, full-width status ribbon) replaces the metric
|
|
32
|
+
tiles; the status timeline and latency heroes share the `ChartCard`
|
|
33
|
+
chrome; the auto-generated charts become a prioritized, click-to-expand
|
|
34
|
+
2-up tile grid (collector ids demoted to hover titles); the anomaly
|
|
35
|
+
Expected/Trend derivation is consolidated into one tested module shared by
|
|
36
|
+
the latency hero and the tiles.
|
|
37
|
+
|
|
38
|
+
BREAKING CHANGES: `recharts` is removed from `@checkstack/healthcheck-frontend`
|
|
39
|
+
(and the unused dependency from `@checkstack/ui`); the
|
|
40
|
+
`HealthCheckStatusTimeline` and `SparklineTooltip` components are deleted.
|
|
41
|
+
Extensions rendering into `HealthCheckDiagramSlot` should build on the
|
|
42
|
+
`@checkstack/ui` chart primitives instead.
|
|
43
|
+
|
|
44
|
+
- Updated dependencies [c55d7c6]
|
|
45
|
+
- Updated dependencies [c55d7c6]
|
|
46
|
+
- @checkstack/healthcheck-common@1.13.0
|
|
47
|
+
- @checkstack/common@0.21.0
|
|
48
|
+
- @checkstack/backend-api@0.29.1
|
|
49
|
+
- @checkstack/healthcheck-ssh-common@0.1.28
|
|
50
|
+
|
|
3
51
|
## 0.4.0
|
|
4
52
|
|
|
5
53
|
### Minor Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@checkstack/healthcheck-ssh-backend",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"checkstack": {
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"pack": "bunx @checkstack/scripts plugin-pack"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@checkstack/backend-api": "0.29.
|
|
21
|
-
"@checkstack/common": "0.
|
|
22
|
-
"@checkstack/healthcheck-common": "1.
|
|
23
|
-
"@checkstack/healthcheck-ssh-common": "0.1.
|
|
20
|
+
"@checkstack/backend-api": "0.29.1",
|
|
21
|
+
"@checkstack/common": "0.21.0",
|
|
22
|
+
"@checkstack/healthcheck-common": "1.13.0",
|
|
23
|
+
"@checkstack/healthcheck-ssh-common": "0.1.28",
|
|
24
24
|
"ssh2": "1.16.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@types/ssh2": "1.15.0",
|
|
29
29
|
"typescript": "^5.0.0",
|
|
30
30
|
"@checkstack/tsconfig": "0.0.7",
|
|
31
|
-
"@checkstack/scripts": "0.7.
|
|
31
|
+
"@checkstack/scripts": "0.7.2"
|
|
32
32
|
},
|
|
33
33
|
"description": "Checkstack healthcheck-ssh-backend plugin",
|
|
34
34
|
"author": {
|
package/src/command-collector.ts
CHANGED
|
@@ -43,6 +43,8 @@ const commandResultSchema = healthResultSchema({
|
|
|
43
43
|
// by the aggregated successRate). Treating exit-code changes as anomalies
|
|
44
44
|
// is a classic alert-fatigue source. Still chartable; users can opt in.
|
|
45
45
|
"x-anomaly-enabled": false,
|
|
46
|
+
"x-chart-priority": 20,
|
|
47
|
+
"x-chart-good-direction": "down",
|
|
46
48
|
}),
|
|
47
49
|
stdout: healthResultString({
|
|
48
50
|
"x-chart-type": "text",
|
|
@@ -64,6 +66,7 @@ const commandResultSchema = healthResultSchema({
|
|
|
64
66
|
"x-anomaly-confirmation-window": 3,
|
|
65
67
|
"x-anomaly-min-absolute-delta": 50,
|
|
66
68
|
"x-anomaly-min-relative-delta": 0.5,
|
|
69
|
+
"x-chart-priority": 10,
|
|
67
70
|
}),
|
|
68
71
|
});
|
|
69
72
|
|
|
@@ -83,6 +86,7 @@ const commandAggregatedFields = {
|
|
|
83
86
|
"x-anomaly-confirmation-window": 3,
|
|
84
87
|
"x-anomaly-min-absolute-delta": 50,
|
|
85
88
|
"x-anomaly-min-relative-delta": 0.5,
|
|
89
|
+
"x-chart-priority": 10,
|
|
86
90
|
}),
|
|
87
91
|
successRate: aggregatedRate({
|
|
88
92
|
"x-chart-type": "gauge",
|
|
@@ -94,6 +98,7 @@ const commandAggregatedFields = {
|
|
|
94
98
|
// of real movement before alerting.
|
|
95
99
|
"x-anomaly-confirmation-window": 3,
|
|
96
100
|
"x-anomaly-min-absolute-delta": 5,
|
|
101
|
+
"x-chart-priority": 20,
|
|
97
102
|
}),
|
|
98
103
|
};
|
|
99
104
|
|
package/src/strategy.ts
CHANGED
|
@@ -60,8 +60,12 @@ const sshResultSchema = healthResultSchema({
|
|
|
60
60
|
connected: healthResultBoolean({
|
|
61
61
|
"x-chart-type": "boolean",
|
|
62
62
|
"x-chart-label": "Connected",
|
|
63
|
+
"x-chart-true-label": "connected",
|
|
64
|
+
"x-chart-false-label": "disconnected",
|
|
63
65
|
"x-anomaly-enabled": true,
|
|
64
66
|
"x-anomaly-direction": "dominance",
|
|
67
|
+
"x-chart-priority": 20,
|
|
68
|
+
"x-chart-good-direction": "up",
|
|
65
69
|
}),
|
|
66
70
|
connectionTimeMs: healthResultNumber({
|
|
67
71
|
"x-chart-type": "line",
|
|
@@ -73,6 +77,7 @@ const sshResultSchema = healthResultSchema({
|
|
|
73
77
|
"x-anomaly-confirmation-window": 3,
|
|
74
78
|
"x-anomaly-min-absolute-delta": 50,
|
|
75
79
|
"x-anomaly-min-relative-delta": 0.5,
|
|
80
|
+
"x-chart-priority": 10,
|
|
76
81
|
}),
|
|
77
82
|
error: healthResultString({
|
|
78
83
|
"x-chart-type": "status",
|
|
@@ -97,6 +102,7 @@ const sshAggregatedFields = {
|
|
|
97
102
|
"x-anomaly-confirmation-window": 3,
|
|
98
103
|
"x-anomaly-min-absolute-delta": 50,
|
|
99
104
|
"x-anomaly-min-relative-delta": 0.5,
|
|
105
|
+
"x-chart-priority": 10,
|
|
100
106
|
}),
|
|
101
107
|
maxConnectionTime: aggregatedMinMax({
|
|
102
108
|
"x-chart-type": "line",
|
|
@@ -107,6 +113,8 @@ const sshAggregatedFields = {
|
|
|
107
113
|
// already covers sustained latency regressions, so keep this off by default
|
|
108
114
|
// (still chartable for tail-latency inspection).
|
|
109
115
|
"x-anomaly-enabled": false,
|
|
116
|
+
"x-chart-priority": 30,
|
|
117
|
+
"x-chart-good-direction": "down",
|
|
110
118
|
}),
|
|
111
119
|
successRate: aggregatedRate({
|
|
112
120
|
"x-chart-type": "gauge",
|
|
@@ -118,6 +126,7 @@ const sshAggregatedFields = {
|
|
|
118
126
|
// of real movement before alerting.
|
|
119
127
|
"x-anomaly-confirmation-window": 3,
|
|
120
128
|
"x-anomaly-min-absolute-delta": 5,
|
|
129
|
+
"x-chart-priority": 20,
|
|
121
130
|
}),
|
|
122
131
|
errorCount: aggregatedCounter({
|
|
123
132
|
"x-chart-type": "counter",
|
|
@@ -127,6 +136,8 @@ const sshAggregatedFields = {
|
|
|
127
136
|
// volume rather than with a real problem. Availability is already covered
|
|
128
137
|
// by successRate (the percent form), so prefer that and keep this off.
|
|
129
138
|
"x-anomaly-enabled": false,
|
|
139
|
+
"x-chart-priority": 90,
|
|
140
|
+
"x-chart-good-direction": "down",
|
|
130
141
|
}),
|
|
131
142
|
};
|
|
132
143
|
|