@aiassesstech/mighty-mark 0.3.28 → 0.3.31
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/checks/data-integrity.d.ts +8 -0
- package/dist/checks/data-integrity.d.ts.map +1 -1
- package/dist/checks/data-integrity.js +163 -0
- package/dist/checks/data-integrity.js.map +1 -1
- package/package.json +1 -1
- package/src/watchdog/install.sh +55 -4
- package/src/watchdog/morning-check.sh +14 -0
|
@@ -12,6 +12,14 @@ export declare function checkNoahStore(topology?: FleetTopology, ctx?: CheckCont
|
|
|
12
12
|
export declare function checkNoleState(topology?: FleetTopology, ctx?: CheckContext): Promise<CheckResult>;
|
|
13
13
|
/** Check #26: Mark self-check — store writable + Telegram reachable. */
|
|
14
14
|
export declare function checkMarkSelf(dataDir: string, telegramToken?: string, ctx?: CheckContext): Promise<CheckResult[]>;
|
|
15
|
+
/** Check #27: Docs backup freshness — validates today's (or yesterday's) backup manifest from GitHub. */
|
|
16
|
+
export declare function checkDocsBackupFreshness(ctx?: CheckContext): Promise<CheckResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Check #28: Fleet backup freshness — validates the local VPS backup manifest
|
|
19
|
+
* written by nole-fleet-backup. Tier-aware: "full" backups are validated for
|
|
20
|
+
* extension count; "light" backups skip that check since they only contain .md files.
|
|
21
|
+
*/
|
|
22
|
+
export declare function checkFleetBackupFreshness(ctx?: CheckContext): Promise<CheckResult>;
|
|
15
23
|
/** Run all data integrity checks. */
|
|
16
24
|
export declare function runDataChecks(dataDir: string, telegramToken?: string, topology?: FleetTopology, ctx?: CheckContext): Promise<CheckResult[]>;
|
|
17
25
|
//# sourceMappingURL=data-integrity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-integrity.d.ts","sourceRoot":"","sources":["../../src/checks/data-integrity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAoD,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwCzG,8EAA8E;AAC9E,wBAAsB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiCzG;AAED,2DAA2D;AAC3D,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAmBvG;AAED,yCAAyC;AACzC,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAkBvG;AAED,wEAAwE;AACxE,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAqCxB;AAED,qCAAqC;AACrC,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,aAAa,EACxB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"data-integrity.d.ts","sourceRoot":"","sources":["../../src/checks/data-integrity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAoD,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwCzG,8EAA8E;AAC9E,wBAAsB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiCzG;AAED,2DAA2D;AAC3D,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAmBvG;AAED,yCAAyC;AACzC,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAkBvG;AAED,wEAAwE;AACxE,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAqCxB;AAED,yGAAyG;AACzG,wBAAsB,wBAAwB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAgFvF;AAKD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAwFxF;AAED,qCAAqC;AACrC,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,aAAa,EACxB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CASxB"}
|
|
@@ -135,6 +135,167 @@ export async function checkMarkSelf(dataDir, telegramToken, ctx) {
|
|
|
135
135
|
}
|
|
136
136
|
return results;
|
|
137
137
|
}
|
|
138
|
+
/** Check #27: Docs backup freshness — validates today's (or yesterday's) backup manifest from GitHub. */
|
|
139
|
+
export async function checkDocsBackupFreshness(ctx) {
|
|
140
|
+
const start = Date.now();
|
|
141
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
142
|
+
try {
|
|
143
|
+
const manifestUrl = `https://raw.githubusercontent.com/spar65/compsi/docs-backup/${today}/manifest.json`;
|
|
144
|
+
const res = await fetchUrl(manifestUrl, { signal: AbortSignal.timeout(10_000) }, ctx);
|
|
145
|
+
if (!res.ok) {
|
|
146
|
+
const yesterday = new Date(Date.now() - 86_400_000).toISOString().slice(0, 10);
|
|
147
|
+
const yesterdayUrl = `https://raw.githubusercontent.com/spar65/compsi/docs-backup/${yesterday}/manifest.json`;
|
|
148
|
+
const yRes = await fetchUrl(yesterdayUrl, { signal: AbortSignal.timeout(10_000) }, ctx);
|
|
149
|
+
if (!yRes.ok) {
|
|
150
|
+
return {
|
|
151
|
+
name: 'Docs backup freshness',
|
|
152
|
+
category: 'data',
|
|
153
|
+
status: 'warn',
|
|
154
|
+
message: `No backup found for ${today} or ${yesterday}`,
|
|
155
|
+
timestamp: now(),
|
|
156
|
+
durationMs: Date.now() - start,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const yManifest = await yRes.json();
|
|
160
|
+
return {
|
|
161
|
+
name: 'Docs backup freshness',
|
|
162
|
+
category: 'data',
|
|
163
|
+
status: 'pass',
|
|
164
|
+
message: `Backup current (yesterday): ${yManifest.pages} pages, ${yManifest.agent_docs} agent docs, checksum present: ${!!yManifest.checksum}`,
|
|
165
|
+
timestamp: now(),
|
|
166
|
+
durationMs: Date.now() - start,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const manifest = await res.json();
|
|
170
|
+
if (manifest.pages < 20) {
|
|
171
|
+
return {
|
|
172
|
+
name: 'Docs backup freshness',
|
|
173
|
+
category: 'data',
|
|
174
|
+
status: 'warn',
|
|
175
|
+
message: `Only ${manifest.pages} pages backed up (expected 20+). Possible incomplete backup.`,
|
|
176
|
+
timestamp: now(),
|
|
177
|
+
durationMs: Date.now() - start,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
if (manifest.date !== today) {
|
|
181
|
+
return {
|
|
182
|
+
name: 'Docs backup freshness',
|
|
183
|
+
category: 'data',
|
|
184
|
+
status: 'warn',
|
|
185
|
+
message: `Manifest date ${manifest.date} does not match today ${today}`,
|
|
186
|
+
timestamp: now(),
|
|
187
|
+
durationMs: Date.now() - start,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
name: 'Docs backup freshness',
|
|
192
|
+
category: 'data',
|
|
193
|
+
status: 'pass',
|
|
194
|
+
message: `Backup current: ${manifest.pages} pages, ${manifest.agent_docs} agent docs, checksum: ${manifest.checksum?.slice(0, 20)}...`,
|
|
195
|
+
timestamp: now(),
|
|
196
|
+
durationMs: Date.now() - start,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
return {
|
|
201
|
+
name: 'Docs backup freshness',
|
|
202
|
+
category: 'data',
|
|
203
|
+
status: 'warn',
|
|
204
|
+
message: `Could not verify backup: ${err instanceof Error ? err.message : 'unknown'}`,
|
|
205
|
+
timestamp: now(),
|
|
206
|
+
durationMs: Date.now() - start,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/** Default path where nole-fleet-backup writes its manifest. */
|
|
211
|
+
const DEFAULT_FLEET_BACKUP_MANIFEST = '/opt/fleet-backup/latest-manifest.json';
|
|
212
|
+
/**
|
|
213
|
+
* Check #28: Fleet backup freshness — validates the local VPS backup manifest
|
|
214
|
+
* written by nole-fleet-backup. Tier-aware: "full" backups are validated for
|
|
215
|
+
* extension count; "light" backups skip that check since they only contain .md files.
|
|
216
|
+
*/
|
|
217
|
+
export async function checkFleetBackupFreshness(ctx) {
|
|
218
|
+
const start = Date.now();
|
|
219
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
220
|
+
const yesterday = new Date(Date.now() - 86_400_000).toISOString().slice(0, 10);
|
|
221
|
+
const manifestPath = ctx?.dataDir
|
|
222
|
+
? path.join(ctx.dataDir, 'latest-manifest.json')
|
|
223
|
+
: DEFAULT_FLEET_BACKUP_MANIFEST;
|
|
224
|
+
try {
|
|
225
|
+
if (!fs.existsSync(manifestPath)) {
|
|
226
|
+
return {
|
|
227
|
+
name: 'Fleet backup freshness',
|
|
228
|
+
category: 'data',
|
|
229
|
+
status: 'warn',
|
|
230
|
+
message: `Manifest not found: ${manifestPath}`,
|
|
231
|
+
timestamp: now(),
|
|
232
|
+
durationMs: Date.now() - start,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
const raw = fs.readFileSync(manifestPath, 'utf-8');
|
|
236
|
+
const manifest = JSON.parse(raw);
|
|
237
|
+
if (manifest.date !== today && manifest.date !== yesterday) {
|
|
238
|
+
return {
|
|
239
|
+
name: 'Fleet backup freshness',
|
|
240
|
+
category: 'data',
|
|
241
|
+
status: 'warn',
|
|
242
|
+
message: `Backup stale: manifest date ${manifest.date} (expected ${today} or ${yesterday})`,
|
|
243
|
+
timestamp: now(),
|
|
244
|
+
durationMs: Date.now() - start,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
const tier = manifest.tier ?? 'full';
|
|
248
|
+
if (tier === 'full' && (manifest.extensions ?? 0) < 4) {
|
|
249
|
+
return {
|
|
250
|
+
name: 'Fleet backup freshness',
|
|
251
|
+
category: 'data',
|
|
252
|
+
status: 'warn',
|
|
253
|
+
message: `Full backup has only ${manifest.extensions} extensions (expected 4+). Possible incomplete backup.`,
|
|
254
|
+
timestamp: now(),
|
|
255
|
+
durationMs: Date.now() - start,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
if (tier === 'light' && (manifest.memory_files ?? 0) < 10) {
|
|
259
|
+
return {
|
|
260
|
+
name: 'Fleet backup freshness',
|
|
261
|
+
category: 'data',
|
|
262
|
+
status: 'warn',
|
|
263
|
+
message: `Light backup has only ${manifest.memory_files} memory files (expected 10+). Possible incomplete backup.`,
|
|
264
|
+
timestamp: now(),
|
|
265
|
+
durationMs: Date.now() - start,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
if (!manifest.checksum) {
|
|
269
|
+
return {
|
|
270
|
+
name: 'Fleet backup freshness',
|
|
271
|
+
category: 'data',
|
|
272
|
+
status: 'warn',
|
|
273
|
+
message: 'Backup manifest missing checksum',
|
|
274
|
+
timestamp: now(),
|
|
275
|
+
durationMs: Date.now() - start,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
const age = manifest.date === today ? 'today' : 'yesterday';
|
|
279
|
+
return {
|
|
280
|
+
name: 'Fleet backup freshness',
|
|
281
|
+
category: 'data',
|
|
282
|
+
status: 'pass',
|
|
283
|
+
message: `Backup current [${tier}] (${age}): ${manifest.extensions} ext, ${manifest.agents} agents, ${manifest.memory_files ?? '?'} files, ${manifest.size_mb} MB, checksum: ${manifest.checksum.slice(0, 20)}...`,
|
|
284
|
+
timestamp: now(),
|
|
285
|
+
durationMs: Date.now() - start,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
catch (err) {
|
|
289
|
+
return {
|
|
290
|
+
name: 'Fleet backup freshness',
|
|
291
|
+
category: 'data',
|
|
292
|
+
status: 'warn',
|
|
293
|
+
message: `Could not verify fleet backup: ${err instanceof Error ? err.message : 'unknown'}`,
|
|
294
|
+
timestamp: now(),
|
|
295
|
+
durationMs: Date.now() - start,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
}
|
|
138
299
|
/** Run all data integrity checks. */
|
|
139
300
|
export async function runDataChecks(dataDir, telegramToken, topology, ctx) {
|
|
140
301
|
const results = [];
|
|
@@ -142,6 +303,8 @@ export async function runDataChecks(dataDir, telegramToken, topology, ctx) {
|
|
|
142
303
|
results.push(await checkNoahStore(topology, ctx));
|
|
143
304
|
results.push(await checkNoleState(topology, ctx));
|
|
144
305
|
results.push(...await checkMarkSelf(dataDir, telegramToken, ctx));
|
|
306
|
+
results.push(await checkDocsBackupFreshness(ctx));
|
|
307
|
+
results.push(await checkFleetBackupFreshness(ctx));
|
|
145
308
|
return results;
|
|
146
309
|
}
|
|
147
310
|
/** Recursively find JSON files in a directory. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-integrity.js","sourceRoot":"","sources":["../../src/checks/data-integrity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-integrity.js","sourceRoot":"","sources":["../../src/checks/data-integrity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiassesstech/mighty-mark",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.31",
|
|
4
4
|
"description": "System Health Sentinel for AI Assess Tech Fleet — autonomous monitoring, watchdog recovery, and fleet infrastructure oversight.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
package/src/watchdog/install.sh
CHANGED
|
@@ -147,8 +147,14 @@ CRON_TZ=America/Chicago
|
|
|
147
147
|
*/5 * * * * root ${MARK_HOME}/watchdog.sh >> ${MARK_HOME}/logs/watchdog-cron.log 2>&1
|
|
148
148
|
|
|
149
149
|
# Morning Check: daily at 6:00 AM Chicago time (auto-adjusts for CDT/CST)
|
|
150
|
+
# Runs fleet backup first, then health check (including backup freshness validation)
|
|
150
151
|
0 6 * * * root ${MARK_HOME}/morning-check.sh >> ${MARK_HOME}/logs/morning-cron.log 2>&1
|
|
151
152
|
CRONEOF
|
|
153
|
+
# Remove standalone fleet-backup cron if it exists (now integrated into morning check)
|
|
154
|
+
if [ -f /etc/cron.d/fleet-backup ]; then
|
|
155
|
+
rm -f /etc/cron.d/fleet-backup
|
|
156
|
+
echo " Removed: /etc/cron.d/fleet-backup (now integrated into morning check)"
|
|
157
|
+
fi
|
|
152
158
|
chmod 644 /etc/cron.d/mighty-mark
|
|
153
159
|
echo " Installed: /etc/cron.d/mighty-mark"
|
|
154
160
|
echo " Watchdog: */5 * * * * (every 5 min)"
|
|
@@ -182,8 +188,50 @@ LREOF
|
|
|
182
188
|
echo " Installed: /etc/logrotate.d/mighty-mark (14-day rotation)"
|
|
183
189
|
fi
|
|
184
190
|
|
|
185
|
-
# ── Step 6:
|
|
186
|
-
echo "[6/
|
|
191
|
+
# ── Step 6: Install fleet backup scripts ──
|
|
192
|
+
echo "[6/8] Installing fleet backup (nole-fleet-backup)..."
|
|
193
|
+
|
|
194
|
+
FLEET_BACKUP_DIR="/opt/fleet-backup"
|
|
195
|
+
FLEET_REPO_DIR="/opt/nole-fleet-backup"
|
|
196
|
+
|
|
197
|
+
if [ "$DRY_RUN" = true ]; then
|
|
198
|
+
echo " [DRY RUN] Would set up fleet backup at ${FLEET_BACKUP_DIR}"
|
|
199
|
+
elif [ -d "$FLEET_REPO_DIR" ] && [ -f "$FLEET_REPO_DIR/fleet-backup.sh" ]; then
|
|
200
|
+
mkdir -p "${FLEET_BACKUP_DIR}/backups"
|
|
201
|
+
mkdir -p "${FLEET_BACKUP_DIR}/logs"
|
|
202
|
+
cp "$FLEET_REPO_DIR/fleet-backup.sh" "${FLEET_BACKUP_DIR}/"
|
|
203
|
+
cp "$FLEET_REPO_DIR/fleet-restore.sh" "${FLEET_BACKUP_DIR}/"
|
|
204
|
+
cp "$FLEET_REPO_DIR/config.sh" "${FLEET_BACKUP_DIR}/"
|
|
205
|
+
if [ -f "$FLEET_REPO_DIR/config.local.sh" ]; then
|
|
206
|
+
cp "$FLEET_REPO_DIR/config.local.sh" "${FLEET_BACKUP_DIR}/"
|
|
207
|
+
fi
|
|
208
|
+
chmod +x "${FLEET_BACKUP_DIR}/fleet-backup.sh"
|
|
209
|
+
chmod +x "${FLEET_BACKUP_DIR}/fleet-restore.sh"
|
|
210
|
+
echo " Installed: fleet-backup.sh, fleet-restore.sh, config.sh"
|
|
211
|
+
echo " Backups: ${FLEET_BACKUP_DIR}/backups/"
|
|
212
|
+
echo " Logs: ${FLEET_BACKUP_DIR}/logs/"
|
|
213
|
+
|
|
214
|
+
# Install fleet-backup logrotate
|
|
215
|
+
cat > /etc/logrotate.d/fleet-backup <<FBLREOF
|
|
216
|
+
${FLEET_BACKUP_DIR}/logs/*.log {
|
|
217
|
+
weekly
|
|
218
|
+
rotate 8
|
|
219
|
+
compress
|
|
220
|
+
delaycompress
|
|
221
|
+
missingok
|
|
222
|
+
notifempty
|
|
223
|
+
create 644 root root
|
|
224
|
+
}
|
|
225
|
+
FBLREOF
|
|
226
|
+
chmod 644 /etc/logrotate.d/fleet-backup
|
|
227
|
+
echo " Logrotate: /etc/logrotate.d/fleet-backup"
|
|
228
|
+
else
|
|
229
|
+
echo " Skipped — nole-fleet-backup repo not found at ${FLEET_REPO_DIR}"
|
|
230
|
+
echo " To install: git clone github-nole-backup:spar65/nole-fleet-backup.git ${FLEET_REPO_DIR}"
|
|
231
|
+
fi
|
|
232
|
+
|
|
233
|
+
# ── Step 7: Initialize state ──
|
|
234
|
+
echo "[7/8] Initializing state files..."
|
|
187
235
|
|
|
188
236
|
if [ "$DRY_RUN" = true ]; then
|
|
189
237
|
echo " [DRY RUN] Would initialize state files"
|
|
@@ -196,8 +244,8 @@ else
|
|
|
196
244
|
fi
|
|
197
245
|
fi
|
|
198
246
|
|
|
199
|
-
# ── Step
|
|
200
|
-
echo "[
|
|
247
|
+
# ── Step 8: Test Telegram connectivity ──
|
|
248
|
+
echo "[8/8] Testing Telegram connectivity..."
|
|
201
249
|
|
|
202
250
|
if [ "$DRY_RUN" = true ]; then
|
|
203
251
|
echo " [DRY RUN] Would test Telegram API"
|
|
@@ -240,5 +288,8 @@ if [ -z "${TELEGRAM_TOKEN}" ]; then
|
|
|
240
288
|
echo ""
|
|
241
289
|
fi
|
|
242
290
|
|
|
291
|
+
echo " Fleet backup: ${FLEET_BACKUP_DIR}/fleet-backup.sh"
|
|
292
|
+
echo " Restore: ${FLEET_BACKUP_DIR}/fleet-restore.sh --help"
|
|
293
|
+
echo ""
|
|
243
294
|
echo " Manual test: bash ${MARK_HOME}/watchdog.sh"
|
|
244
295
|
echo " View logs: tail -f ${MARK_HOME}/logs/watchdog.log"
|
|
@@ -21,6 +21,20 @@ mkdir -p "${MARK_LOG_DIR}" "${MARK_STATE_DIR}"
|
|
|
21
21
|
|
|
22
22
|
log_morning "Morning check starting"
|
|
23
23
|
|
|
24
|
+
# ── Run fleet backup before health check ──
|
|
25
|
+
FLEET_BACKUP="/opt/fleet-backup/fleet-backup.sh"
|
|
26
|
+
if [ -x "$FLEET_BACKUP" ]; then
|
|
27
|
+
log_morning "Triggering fleet backup before health check..."
|
|
28
|
+
if "$FLEET_BACKUP" >> "${MORNING_LOG}" 2>&1; then
|
|
29
|
+
log_morning "Fleet backup completed successfully"
|
|
30
|
+
else
|
|
31
|
+
log_morning "WARN: Fleet backup failed (exit code $?)"
|
|
32
|
+
notify_telegram "🟡 *MIGHTY MARK — Backup Warning*%0A%0AFleet backup failed during morning check.%0AHealth check will proceed.%0A%0ACheck logs: /opt/fleet-backup/logs/backup.log%0AServer: $(hostname)%0ATime: $(date)"
|
|
33
|
+
fi
|
|
34
|
+
else
|
|
35
|
+
log_morning "Fleet backup script not found at $FLEET_BACKUP, skipping"
|
|
36
|
+
fi
|
|
37
|
+
|
|
24
38
|
# ── Try Node.js health check first ──
|
|
25
39
|
if command -v npx &> /dev/null; then
|
|
26
40
|
log_morning "Running TypeScript health engine via npx"
|