250 lines
15 KiB
HTML
250 lines
15 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>ZFS Report Preview</title>
|
|
</head>
|
|
<body style="margin:0;padding:0;background:#f1f5f9;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;">
|
|
|
|
<!-- Preview label -->
|
|
<div style="background:#1e40af;color:white;text-align:center;padding:10px;font-size:13px;font-weight:600;letter-spacing:.5px;">
|
|
📧 EMAIL REPORT PREVIEW — This is how the email will look in your inbox
|
|
</div>
|
|
|
|
<table width="100%" cellspacing="0" cellpadding="0" style="background:#f1f5f9;padding:30px 0;">
|
|
<tr><td align="center">
|
|
<table width="680" cellspacing="0" cellpadding="0" style="max-width:680px;width:100%;">
|
|
|
|
<!-- Header -->
|
|
<tr><td style="background:#0f172a;border-radius:10px 10px 0 0;padding:28px 32px;">
|
|
<table width="100%" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td>
|
|
<div style="font-size:11px;color:#94a3b8;letter-spacing:1px;text-transform:uppercase;">ZFS Pool Health Monitor</div>
|
|
<div style="font-size:26px;font-weight:800;color:white;margin-top:4px;">🔌 NAS08</div>
|
|
<div style="font-size:13px;color:#94a3b8;margin-top:4px;">2025-06-10 07:00:01 | 3 pool(s) monitored</div>
|
|
</td>
|
|
<td align="right">
|
|
<div style="background:#b91c1c;color:white;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:700;">
|
|
🚨 CRITICAL
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td></tr>
|
|
|
|
<!-- Status Banner -->
|
|
<tr><td style="background:#b91c1c;padding:12px 32px;">
|
|
<span style="color:white;font-size:14px;font-weight:600;">🚨 CRITICAL issue detected — immediate action required!</span>
|
|
</td></tr>
|
|
|
|
<!-- Body -->
|
|
<tr><td style="padding:28px 24px 8px;">
|
|
|
|
<!-- POOL 1 — CRITICAL -->
|
|
<div style="background:white;border-radius:10px;box-shadow:0 1px 6px rgba(0,0,0,.10);margin-bottom:28px;overflow:hidden;border:1px solid #e5e7eb;">
|
|
<div style="background:#fff1f2;padding:16px 22px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e5e7eb;">
|
|
<div>
|
|
<span style="font-size:18px;font-weight:700;color:#111827;">📉 tank0</span>
|
|
<span style="margin-left:8px;font-size:12px;color:#6b7280;">pool</span>
|
|
</div>
|
|
<span style="background:#b91c1c;color:white;padding:5px 14px;border-radius:20px;font-size:12px;font-weight:700;letter-spacing:.5px;">DEGRADED</span>
|
|
</div>
|
|
<div style="padding:20px 22px;">
|
|
<table width="100%" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Total Size</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">18.2T</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Used</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">14.8T</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Free</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">3.4T</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Capacity</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">81%</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Fragmentation</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">12%</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Health</div>
|
|
<div style="font-size:20px;font-weight:700;color:#b91c1c;margin-top:2px;">DEGRADED</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div style="margin-top:16px;padding:12px 14px;background:#f8fafc;border-radius:6px;border:1px solid #e5e7eb;">
|
|
<span style="font-size:12px;font-weight:600;color:#374151;text-transform:uppercase;letter-spacing:.5px;">🔍 Last Scrub</span>
|
|
<span style="margin-left:10px;font-size:13px;color:#374151;">Completed | Jun 3 07:01:44 2025 | Errors: 0 errors</span>
|
|
</div>
|
|
<div style="margin-top:10px;padding:10px 14px;background:#fff1f2;border-left:4px solid #b91c1c;border-radius:4px;font-family:monospace;font-size:13px;color:#7f1d1d;white-space:pre;"> sdb DEGRADED 0 0 0
|
|
sdb1 FAULTED 5 8 0 too many errors</div>
|
|
<details style="margin-top:14px;">
|
|
<summary style="cursor:pointer;font-size:12px;color:#6b7280;font-weight:600;letter-spacing:.3px;">▶ vdev / drive configuration</summary>
|
|
<pre style="margin-top:8px;background:#1e293b;color:#e2e8f0;padding:14px;border-radius:6px;font-size:12px;line-height:1.6;overflow-x:auto;">config:
|
|
NAME STATE READ WRITE CKSUM
|
|
tank0 DEGRADED 0 0 0
|
|
raidz2-0 DEGRADED 0 0 0
|
|
sda ONLINE 0 0 0
|
|
sdb DEGRADED 5 8 0
|
|
sdc ONLINE 0 0 0
|
|
sdd ONLINE 0 0 0</pre>
|
|
</details>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- POOL 2 — WARNING -->
|
|
<div style="background:white;border-radius:10px;box-shadow:0 1px 6px rgba(0,0,0,.10);margin-bottom:28px;overflow:hidden;border:1px solid #e5e7eb;">
|
|
<div style="background:#fffbeb;padding:16px 22px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e5e7eb;">
|
|
<div>
|
|
<span style="font-size:18px;font-weight:700;color:#111827;">📉 backup</span>
|
|
<span style="margin-left:8px;font-size:12px;color:#6b7280;">pool</span>
|
|
</div>
|
|
<span style="background:#b45309;color:white;padding:5px 14px;border-radius:20px;font-size:12px;font-weight:700;letter-spacing:.5px;">WARNING — CAPACITY</span>
|
|
</div>
|
|
<div style="padding:20px 22px;">
|
|
<table width="100%" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Total Size</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">7.3T</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Used</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">6.1T</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Free</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">1.2T</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Capacity</div>
|
|
<div style="font-size:20px;font-weight:700;color:#b45309;margin-top:2px;">84%</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Fragmentation</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">7%</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Health</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">ONLINE</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div style="margin-top:16px;padding:12px 14px;background:#f8fafc;border-radius:6px;border:1px solid #e5e7eb;">
|
|
<span style="font-size:12px;font-weight:600;color:#374151;text-transform:uppercase;letter-spacing:.5px;">🔍 Last Scrub</span>
|
|
<span style="margin-left:10px;font-size:13px;color:#374151;">Completed | Jun 3 07:01:44 2025 | Errors: 0 errors</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- POOL 3 — HEALTHY -->
|
|
<div style="background:white;border-radius:10px;box-shadow:0 1px 6px rgba(0,0,0,.10);margin-bottom:28px;overflow:hidden;border:1px solid #e5e7eb;">
|
|
<div style="background:#f0fdf4;padding:16px 22px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e5e7eb;">
|
|
<div>
|
|
<span style="font-size:18px;font-weight:700;color:#111827;">📉 media</span>
|
|
<span style="margin-left:8px;font-size:12px;color:#6b7280;">pool</span>
|
|
</div>
|
|
<span style="background:#1a7f4b;color:white;padding:5px 14px;border-radius:20px;font-size:12px;font-weight:700;letter-spacing:.5px;">HEALTHY</span>
|
|
</div>
|
|
<div style="padding:20px 22px;">
|
|
<table width="100%" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Total Size</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">21.8T</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Used</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">9.2T</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Free</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">12.6T</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Capacity</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">42%</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Fragmentation</div>
|
|
<div style="font-size:20px;font-weight:700;color:#111827;margin-top:2px;">3%</div>
|
|
</td>
|
|
<td style="width:4%;"></td>
|
|
<td style="width:16%;padding:8px 12px;background:#f9fafb;border-radius:6px;text-align:center;">
|
|
<div style="font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;">Health</div>
|
|
<div style="font-size:20px;font-weight:700;color:#1a7f4b;margin-top:2px;">ONLINE</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div style="margin-top:16px;padding:12px 14px;background:#f8fafc;border-radius:6px;border:1px solid #e5e7eb;">
|
|
<span style="font-size:12px;font-weight:600;color:#374151;text-transform:uppercase;letter-spacing:.5px;">🔍 Last Scrub</span>
|
|
<span style="margin-left:10px;font-size:13px;color:#374151;">Completed | Jun 3 07:02:11 2025 | Errors: 0 errors</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</td></tr>
|
|
|
|
<!-- Summary -->
|
|
<tr><td style="padding:0 24px 28px;">
|
|
<div style="background:white;border-radius:10px;border:1px solid #e5e7eb;padding:18px 22px;">
|
|
<div style="font-size:13px;font-weight:700;color:#374151;margin-bottom:10px;text-transform:uppercase;letter-spacing:.5px;">📋 Report Summary</div>
|
|
<table width="100%" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td style="font-size:13px;color:#6b7280;">Host</td>
|
|
<td style="font-size:13px;color:#111827;font-weight:600;">NAS08</td>
|
|
</tr>
|
|
<tr><td colspan="2" style="height:6px;"></td></tr>
|
|
<tr>
|
|
<td style="font-size:13px;color:#6b7280;">Report Time</td>
|
|
<td style="font-size:13px;color:#111827;font-weight:600;">2025-06-10 07:00:01</td>
|
|
</tr>
|
|
<tr><td colspan="2" style="height:6px;"></td></tr>
|
|
<tr>
|
|
<td style="font-size:13px;color:#6b7280;">Pools Checked</td>
|
|
<td style="font-size:13px;color:#111827;font-weight:600;">3</td>
|
|
</tr>
|
|
<tr><td colspan="2" style="height:6px;"></td></tr>
|
|
<tr>
|
|
<td style="font-size:13px;color:#6b7280;">Pools with Issues</td>
|
|
<td style="font-size:13px;font-weight:700;color:#b91c1c;">2</td>
|
|
</tr>
|
|
<tr><td colspan="2" style="height:6px;"></td></tr>
|
|
<tr>
|
|
<td style="font-size:13px;color:#6b7280;">Scrub Warning Threshold</td>
|
|
<td style="font-size:13px;color:#111827;font-weight:600;">8 days</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</td></tr>
|
|
|
|
<!-- Footer -->
|
|
<tr><td style="background:#0f172a;border-radius:0 0 10px 10px;padding:16px 32px;text-align:center;">
|
|
<span style="font-size:11px;color:#64748b;">Automated ZFS Monitor | NAS08 | KingDezigns Infrastructure</span>
|
|
</td></tr>
|
|
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
</body>
|
|
</html>
|