Files
k8s-gitops/apps/portfolio/site/observability.html
T

48 lines
6.0 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Case study: infrastructure observability using Prometheus, Grafana, Loki, Alertmanager, Uptime Kuma, and Zabbix.">
<meta name="robots" content="noindex, nofollow">
<!-- PUBLIC-METADATA-START -->
<meta name="author" content="Jay Phillips">
<meta name="theme-color" content="#07111f">
<link rel="canonical" href="https://portfolio.phillips-home.net/observability.html">
<meta property="og:locale" content="en_US">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Jay Phillips Infrastructure Portfolio">
<meta property="og:title" content="Observability and Alerting | Jay Phillips">
<meta property="og:description" content="Observability case study using Prometheus, Grafana, Loki, Alertmanager, Uptime Kuma, Zabbix, health probes, dashboards, logs, and email alerts.">
<meta property="og:url" content="https://portfolio.phillips-home.net/observability.html">
<meta property="og:image" content="https://portfolio.phillips-home.net/social-card.png">
<meta property="og:image:type" content="image/png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Jay Phillips - Senior Systems Administrator and Infrastructure Engineer">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Observability and Alerting | Jay Phillips">
<meta name="twitter:description" content="Observability case study using Prometheus, Grafana, Loki, Alertmanager, Uptime Kuma, Zabbix, health probes, dashboards, logs, and email alerts.">
<meta name="twitter:image" content="https://portfolio.phillips-home.net/social-card.png">
<!-- PUBLIC-METADATA-END --><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="stylesheet" href="/styles.css">
<title>Observability Case Study | Jay Phillips</title>
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="site-header"><nav class="nav shell" aria-label="Primary navigation"><a class="brand" href="/"><span class="brand-mark" aria-hidden="true">JP</span><span>Jay Phillips</span></a><div class="nav-links"><a href="/">Home</a><a href="/#projects" aria-current="page">Projects</a><a href="/resume.html">Résumé</a><a href="mailto:Phillips-Jay@outlook.com">Contact</a></div></nav></header>
<main id="main" class="shell">
<div class="page-hero"><div class="breadcrumb"><a href="/">Home</a> / <a href="/#projects">Projects</a> / Observability</div><div class="eyebrow">Case study 04 · Reliability engineering</div><h1>Observability and <span>alerting.</span></h1><p class="lead">A layered monitoring design that combines infrastructure metrics, logs, synthetic availability checks, VMware visibility, dashboards, and actionable email notification.</p></div>
<div class="case-layout">
<div class="case-content">
<section class="case-section"><h2>Monitoring layers</h2><ul><li><strong>Prometheus:</strong> cluster, node, controller, and application metrics.</li><li><strong>Grafana:</strong> dashboards for operational visibility and trend analysis.</li><li><strong>Loki and Promtail:</strong> centralized Kubernetes log collection and search.</li><li><strong>Alertmanager:</strong> routing, grouping, repeat intervals, and email delivery through an internal relay.</li><li><strong>Uptime Kuma:</strong> synthetic checks for service and endpoint availability.</li><li><strong>Zabbix:</strong> infrastructure and VMware monitoring outside the Kubernetes-native stack.</li></ul></section>
<section class="case-section"><h2>Alert delivery</h2><p>Alertmanager was integrated with an internal SMTP relay and verified end to end with a dedicated PrometheusRule. The configuration separates actionable alerts from noise, routes Watchdog-style signals away from the user receiver, and applies a repeat interval to reduce unnecessary messages.</p></section>
<section class="case-section"><h2>Operational outcomes</h2><ul><li>One place to inspect cluster health, application state, and resource consumption.</li><li>Centralized logs for troubleshooting restarts, ingress failures, and application errors.</li><li>Email notification for conditions that need attention away from the dashboard.</li><li>Independent uptime checks that validate the user-facing path rather than only pod health.</li><li>VMware and traditional-server monitoring alongside cloud-native telemetry.</li></ul></section>
<section class="case-section"><h2>Reliability mindset</h2><p>Monitoring is treated as part of the service design, not an afterthought. New workloads should expose health checks, declare resource requirements, produce useful logs, and have a clear alerting path. The objective is early detection with enough context to shorten diagnosis and recovery.</p></section>
</div>
<aside class="case-sidebar"><section class="panel"><h3>Toolchain</h3><dl class="fact-list"><div><dt>Metrics</dt><dd>Prometheus</dd></div><div><dt>Dashboards</dt><dd>Grafana</dd></div><div><dt>Logs</dt><dd>Loki + Promtail</dd></div><div><dt>Alerts</dt><dd>Alertmanager</dd></div><div><dt>Uptime</dt><dd>Uptime Kuma</dd></div><div><dt>Infrastructure</dt><dd>Zabbix</dd></div></dl></section><section class="panel"><h3>Practices</h3><div class="tags"><span class="tag">Health probes</span><span class="tag">Synthetic checks</span><span class="tag">Alert routing</span><span class="tag">Log aggregation</span><span class="tag">Dashboards</span><span class="tag">Email relay</span></div></section></aside>
</div>
<section><div class="callout"><div><h2>Return to the complete portfolio.</h2><p>Review the experience, skills, credentials, and live platform architecture.</p></div><a class="button primary" href="/">Back to portfolio</a></div></section>
</main>
<footer class="site-footer shell"><span>© 2026 Jay Phillips</span><span>Case study: observability and alerting.</span></footer>
</body>
</html>