Add hit counter service and expand frontend content sections

- New hit-counter FastAPI service (Prometheus metrics, SQLite storage), wired into Caddy (hits.carloselugo.com) and docker-compose
- Scrape hit-counter in Prometheus every 5m
- Add articles, about, contact, experience, and expertise sections to the frontend, with per-article hit tracking

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-27 20:31:52 +00:00
co-authored by Claude Sonnet 5
parent fd961a0668
commit 44d6c1e5a9
21 changed files with 959 additions and 320 deletions
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>From SNMP Polling to Kafka Streaming and AI: The Evolution of Network Monitoring — Carlos Lugo</title>
<meta name="description" content="Why polling every five minutes leaves a network blind most of the time — and the streaming architecture the whole industry is moving toward." />
<!-- Open Graph (LinkedIn, Facebook) -->
<meta property="og:type" content="article" />
<meta property="og:title" content="From SNMP Polling to Kafka Streaming and AI: The Evolution of Network Monitoring" />
<meta property="og:description" content="Why polling every five minutes leaves a network blind most of the time — and the streaming architecture the whole industry is moving toward." />
<meta property="og:url" content="https://carloselugo.com/articles/snmp-to-kafka-aiops.html" />
<meta property="og:image" content="https://carloselugo.com/images/profile_rev2.png" />
<meta property="og:site_name" content="Carlos Lugo" />
<!-- Twitter/X card (harmless to include, some tools reuse it) -->
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="From SNMP Polling to Kafka Streaming and AI: The Evolution of Network Monitoring" />
<meta name="twitter:description" content="Why polling every five minutes leaves a network blind most of the time — and the streaming architecture the whole industry is moving toward." />
<meta name="twitter:image" content="https://carloselugo.com/images/profile_rev2.png" />
<link rel="canonical" href="https://carloselugo.com/#article-snmp-to-kafka-aiops" />
<!-- Human visitors get redirected straight into the real article on the SPA. -->
<meta http-equiv="refresh" content="0; url=/#article-snmp-to-kafka-aiops" />
<script>window.location.replace('/#article-snmp-to-kafka-aiops');</script>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, sans-serif; background:#faf9f5; color:#201e1d;
display:flex; align-items:center; justify-content:center; min-height:100vh; margin:0; }
a { color:#ec3013; }
</style>
</head>
<body>
<noscript>
<p>Redirecting… If nothing happens, <a href="/#article-snmp-to-kafka-aiops">read the article here</a>.</p>
</noscript>
</body>
</html>
+4
View File
@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect width="100" height="100" fill="#201e1d"/>
<text x="50" y="66" font-family="Arial, sans-serif" font-size="44" font-weight="800" fill="#ec3013" text-anchor="middle">CL</text>
</svg>

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 MiB