<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Observability stack on Tom Meurs</title>
    <link>https://tommeurs.nl/nl/series/observability-stack/</link>
    <description>Recent content in Observability stack on Tom Meurs</description>
    <generator>Hugo</generator>
    <language>nl</language>
    <copyright>© Tom Meurs</copyright>
    <lastBuildDate>Sat, 02 May 2026 20:15:00 +0100</lastBuildDate>
    <atom:link href="https://tommeurs.nl/nl/series/observability-stack/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Prometheus en Thanos: metrics op schaal</title>
      <link>https://tommeurs.nl/nl/posts/prometheus-thanos-metrics/</link>
      <pubDate>Sun, 31 Aug 2025 10:00:00 +0200</pubDate>
      <guid>https://tommeurs.nl/nl/posts/prometheus-thanos-metrics/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; Prometheus alleen bewaart een week of twee aan metrics op lokale schijf en kan geen vraag over meerdere clusters heen beantwoorden. Thanos zet een sidecar naast elke Prometheus, stuurt de blocks naar object storage en zet er een querier voor die alles terugleest via dezelfde PromQL. Hieronder de installatie, de vier componenten, de bedrading voor HA en multi-cluster, en de getallen die ik in productie draai.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;De eerste keer dat iemand me vroeg &amp;ldquo;was dit vorige maand trager dan nu?&amp;rdquo;, had ik geen antwoord. M&amp;rsquo;n Prometheus onthield twee weken. De data die ik nodig had was allang van de lokale schijf af en weg. Dat gat is de reden dat deze post bestaat.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Loki voor Kubernetes logging: de Prometheus-achtige aanpak</title>
      <link>https://tommeurs.nl/nl/posts/loki-kubernetes-logging/</link>
      <pubDate>Tue, 31 Mar 2026 21:15:00 +0100</pubDate>
      <guid>https://tommeurs.nl/nl/posts/loki-kubernetes-logging/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; Loki indexeert labels en bewaart de logtekst als gecomprimeerde chunks, dus een maand logs past op commodity hardware. Wat je inlevert is full-text search. Hieronder de single-binary-install waar ik iedereen mee laat beginnen, dezelfde chart op MinIO met drie replicas, en de knoppen waar ik pas aan zat toen het volume echt was.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Je hebt &lt;a href=&#34;https://tommeurs.nl/nl/posts/prometheus-thanos-metrics/&#34;&gt;Prometheus voor metrics&lt;/a&gt;, dus je ziet al wat er in je clusters gebeurt. Metrics vertellen je dat de latency om 14:32 piekte. Ze vertellen je niet dat de payment service een null pointer gooide omdat iemand een config-wijziging met een typefout uitrolde. Daarvoor heb je de logregel nodig.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributed tracing met Tempo en OpenTelemetry</title>
      <link>https://tommeurs.nl/nl/posts/tempo-distributed-tracing/</link>
      <pubDate>Sat, 04 Apr 2026 19:47:00 +0100</pubDate>
      <guid>https://tommeurs.nl/nl/posts/tempo-distributed-tracing/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; Tempo is waar m&amp;rsquo;n traces heen gaan. De OpenTelemetry Collector ontvangt spans van elke service, tail sampling houdt elke error en elke trage request vast, en Tempo schrijft de rest naar MinIO met drie dagen retentie. Vanaf een span in Grafana klik ik door naar de Loki-regels met dezelfde trace ID. M&amp;rsquo;n productie-values staan onderaan.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Je &lt;a href=&#34;https://tommeurs.nl/nl/posts/prometheus-thanos-metrics/&#34;&gt;metrics&lt;/a&gt; zeggen dat iets traag is. Je &lt;a href=&#34;https://tommeurs.nl/nl/posts/loki-kubernetes-logging/&#34;&gt;logs&lt;/a&gt; zeggen dat er errors waren. Prima. Welke request faalde, waar kwam die latency vandaan, en welke service in de keten vrat de timeout op? Geen van beide kan je dat vertellen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Grafana-dashboards die daadwerkelijk gebruikt worden</title>
      <link>https://tommeurs.nl/nl/posts/grafana-dashboards-that-work/</link>
      <pubDate>Sat, 02 May 2026 20:15:00 +0100</pubDate>
      <guid>https://tommeurs.nl/nl/posts/grafana-dashboards-that-work/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; Elk dashboard beantwoordt één vraag, en binnen vijf seconden weet ik of ik me druk moet maken. Vier soorten dashboards dekken alles, variabelen en links knopen ze aan elkaar, en de JSON staat in Git. M&amp;rsquo;n homelab draait er vijf, en wat een maand niet geopend wordt gooi ik weg.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Je hebt Grafana. Je hebt &lt;a href=&#34;https://tommeurs.nl/nl/posts/prometheus-thanos-metrics/&#34;&gt;Prometheus-metrics&lt;/a&gt;. Je hebt &lt;a href=&#34;https://tommeurs.nl/nl/posts/loki-kubernetes-logging/&#34;&gt;logs in Loki&lt;/a&gt; en &lt;a href=&#34;https://tommeurs.nl/nl/posts/tempo-distributed-tracing/&#34;&gt;traces in Tempo&lt;/a&gt;. De data staat er allemaal.&lt;/p&gt;&#xA;&lt;p&gt;Je hebt ook 47 dashboards die niemand opent.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Alerting dat werkt: van alert fatigue naar actionable notificaties</title>
      <link>https://tommeurs.nl/nl/posts/alerting-that-works/</link>
      <pubDate>Thu, 16 Apr 2026 20:15:00 +0100</pubDate>
      <guid>https://tommeurs.nl/nl/posts/alerting-that-works/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; De meeste default alertregels pagen op een getal zonder gebruiker erachter, en na een week lees je geen page meer. Ik alert op error rate, P99-latency, een disk die binnen 24 uur vol zit en een certificaat dat binnen zeven dagen verloopt, een stuk of tien regels bij elkaar, elk met een runbook. Alertmanager stuurt critical naar de pager, warning overdag naar Slack en info nergens heen. Alles wat geen mens nodig heeft gaat weg.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Thanos remote write: push-based metrics voor edge en multi-cluster</title>
      <link>https://tommeurs.nl/nl/posts/thanos-remote-write-push-architecture/</link>
      <pubDate>Fri, 27 Mar 2026 20:38:00 +0100</pubDate>
      <guid>https://tommeurs.nl/nl/posts/thanos-remote-write-push-architecture/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; Thanos Receive draait de metricsstroom om. Elke edge-Prometheus pusht z&amp;rsquo;n samples via &lt;code&gt;remote_write&lt;/code&gt; naar één centraal endpoint, buffert in z&amp;rsquo;n WAL als de link wegvalt, en ziet nooit een object-storage-credential. Hieronder de Receive StatefulSet, de hashring, de edge-config, twee manieren om het endpoint dicht te timmeren, en de hybride die ik draai met sidecars op de core clusters.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;In mijn &lt;a href=&#34;https://tommeurs.nl/nl/posts/prometheus-thanos-metrics/&#34;&gt;vorige post over Prometheus en Thanos&lt;/a&gt; zette ik de sidecar-architectuur op. &lt;span class=&#34;def&#34; tabindex=&#34;0&#34; data-def=&#34;Geeft Prometheus langetermijnopslag in objectopslag en één queryblik over meerdere Prometheus-servers, zonder te veranderen hoe Prometheus scrapet.&#34;&gt;Thanos&lt;/span&gt;&#xA; Sidecar draait naast Prometheus, uploadt TSDB-blocks naar object storage en stelt de data via gRPC beschikbaar aan de Querier. Voor clusters in hetzelfde datacenter, met een dikke stabiele link naar de centrale infrastructuur, heb ik daar niks op aan te merken. Alles pullt, en alles kan bij alles.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
