<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Grafana Labs on Nicole van der Hoeven</title><link>https://nicolevanderhoeven.com/tags/grafana-labs/</link><description>Recent content in Grafana Labs on Nicole van der Hoeven</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Nicole van der Hoeven</copyright><lastBuildDate>Fri, 30 Oct 2026 09:00:00 +0100</lastBuildDate><atom:link href="https://nicolevanderhoeven.com/tags/grafana-labs/index.xml" rel="self" type="application/rss+xml"/><item><title>AI Tools We Use Every Day on the Grafana AI Team</title><link>https://nicolevanderhoeven.com/blog/20261030-ai-tools-we-use-every-day/</link><pubDate>Fri, 30 Oct 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20261030-ai-tools-we-use-every-day/</guid><description>&lt;p&gt;What AI tools do the people &lt;em&gt;building&lt;/em&gt; AI features actually reach for day to day? I asked around the Grafana AI team to find out which tools have genuinely stuck — the ones we open without thinking — versus the ones that didn&amp;rsquo;t survive contact with real work.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/w6cBB1Tte5I?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;My notes on Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>What Does a Grafana AI Offsite Look Like?</title><link>https://nicolevanderhoeven.com/blog/20261028-ai-offsite-short/</link><pubDate>Wed, 28 Oct 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20261028-ai-offsite-short/</guid><description>&lt;p&gt;A quick behind-the-scenes short: what actually happens when Grafana&amp;rsquo;s AI team gets together in person for an offsite.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/M7XARf69mg4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;My notes on Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Roundtable: How We Really Use AI in Testing (HUSTEF 2026)</title><link>https://nicolevanderhoeven.com/blog/20261008-ai-testing-roundtable-hustef/</link><pubDate>Thu, 08 Oct 2026 14:00:00 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20261008-ai-testing-roundtable-hustef/</guid><description>&lt;p&gt;On the final day of &lt;a href="https://hustef.com/"&gt;HUSTEF 2026&lt;/a&gt; in Budapest, I joined the conference&amp;rsquo;s roundtable on AI in testing — &lt;em&gt;&amp;ldquo;AI Open Space Experiences: a roundtable with speakers on their experiences with AI testing.&amp;rdquo;&lt;/em&gt; It was five of us on stage: me plus &lt;strong&gt;Marta Firlej&lt;/strong&gt;, &lt;strong&gt;Kristoffer Nordström&lt;/strong&gt;, &lt;strong&gt;Callum Akehurst-Ryan&lt;/strong&gt;, and &lt;strong&gt;Maryia Tuleika&lt;/strong&gt;, with Marta moderating.&lt;/p&gt;
&lt;p&gt;The format was refreshingly honest — &amp;ldquo;how we &lt;em&gt;really&lt;/em&gt; use AI, with no bullshit.&amp;rdquo; Marta had run the same &amp;ldquo;AI open space&amp;rdquo; exercise with the Polish testing community, crowdsourcing the actual, un-hyped ways people use AI (information gathering, functionality discovery, generating tests and code, TDD, recruitment, presentation prep, even designing furniture and planning holidays), and then opened it up to the panel and the room. Here&amp;rsquo;s roughly how I answered her questions:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do you use AI for?&lt;/strong&gt; Mostly two things at work: analysing codebases and test code to understand what something actually does, and filling gaps on teams without a dedicated quality engineer — baking my testing knowledge into an AI the team can ask questions of. On the personal side, I&amp;rsquo;ve run some weird experiments: I&amp;rsquo;m a lifelong note-taker with decades of context (journals, therapy notes, eight years of WhatsApp history with my partner), so I&amp;rsquo;ve fed it all into a &lt;em&gt;local, open-weight&lt;/em&gt; model and asked things like &lt;em&gt;&amp;ldquo;what do I claim to believe, and where have I acted contrary to that — cite your evidence?&amp;rdquo;&lt;/em&gt; It&amp;rsquo;s a surprisingly honest mirror. I&amp;rsquo;m in a privileged spot with effectively unlimited AI access right now, and I know it won&amp;rsquo;t last, so I want to find out what&amp;rsquo;s safe and what isn&amp;rsquo;t while I can.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you stay up to date?&lt;/strong&gt; Honestly, I don&amp;rsquo;t — not by chasing model releases or news. I keep up with how &lt;em&gt;other people&lt;/em&gt;, especially in testing, are using AI, and I lean on my coworkers (we&amp;rsquo;re at the forefront of this at work, so stepping outside that bubble is a useful reality check). I do have a scheduled Claude Code task that scrapes my ~34 AI-related Slack channels into a daily digest of just the things I care about.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One piece of advice?&lt;/strong&gt; Don&amp;rsquo;t trust AI too much, and don&amp;rsquo;t believe you&amp;rsquo;re as far behind as you think. Almost no one has really tried this stuff; it&amp;rsquo;s genuinely early, everyone&amp;rsquo;s learning, and your foundational testing skills transfer. Just pick it up, play, and if it&amp;rsquo;s not for you, move on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything you&amp;rsquo;d never use AI for?&lt;/strong&gt; Communicating with people as a &lt;em&gt;proxy&lt;/em&gt;. I&amp;rsquo;ll use it to translate or to help me sound more fluent (I live across multiple languages — Portugal, Dutch, English), but I never want it to craft a whole message I didn&amp;rsquo;t think of. I don&amp;rsquo;t want to lose the discipline of actually talking to a human.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ethical dilemmas?&lt;/strong&gt; Yes — which is exactly why I keep my use mostly in the context of work, and try not to generate imagery or anything that&amp;rsquo;s obviously lifting from artists who deserve to be paid for it. There&amp;rsquo;s no hard line; it&amp;rsquo;s a sliding scale, and I have to keep questioning myself. (A Mastodon line stuck with me: &lt;em&gt;the strange future where the humans do the menial tasks and the robots write poetry and paint.&lt;/em&gt; I try not to let AI stop me from making art.)&lt;/p&gt;
&lt;p&gt;The best part of these panels is always the disagreement and the texture — five people who use AI daily and still land in very different places on trust, ethics, and what it&amp;rsquo;s actually &lt;em&gt;for&lt;/em&gt;. Thanks to Marta for moderating and to Kristoffer, Callum, and Maryia for a genuinely good conversation.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hustef.com/"&gt;HUSTEF 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My HUSTEF keynote: &lt;a href="https://nicolevanderhoeven.com/blog/20261007-asimovs-zeroth-law-testing-for-ai-hustef/"&gt;&lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Testing for AI&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics: Testing for AI (HUSTEF 2026)</title><link>https://nicolevanderhoeven.com/blog/20261007-asimovs-zeroth-law-testing-for-ai-hustef/</link><pubDate>Wed, 07 Oct 2026 10:00:00 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20261007-asimovs-zeroth-law-testing-for-ai-hustef/</guid><description>&lt;p&gt;This week I gave a keynote at &lt;a href="https://hustef.com/nicole_van_der_hoeven_2026/"&gt;HUSTEF 2026&lt;/a&gt; in Budapest, Hungary. The talk is called &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Testing for AI&lt;/em&gt; — a testing-focused evolution of a talk I&amp;rsquo;ve been giving (and rewriting) for a while, previously as &lt;em&gt;Observability for AI&lt;/em&gt; at &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU 2025&lt;/a&gt; in London, &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; in Utrecht, &lt;a href="https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/"&gt;NewCrafts&lt;/a&gt; in Paris, and &lt;a href="https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/"&gt;ExpoQA Madrid 2026&lt;/a&gt;. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A robot may not harm humans. A robot must obey humans. A robot must protect its own existence. These are Isaac Asimov&amp;rsquo;s three Laws of Robotics, created to govern the ethical programming of artificial intelligences. From the Butlerian Jihad to Skynet to cylons, we&amp;rsquo;ve been immortalizing our collective nightmares about artificial intelligence for years. But there&amp;rsquo;s an unmentioned law that comes as a prerequisite to all of that: &lt;strong&gt;a robot must be testable.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI systems fail differently than traditional software. There&amp;rsquo;s no single correct output to assert against. A response can be fluent and completely wrong. Models drift silently over time. And yet we&amp;rsquo;re shipping AI into production — often without knowing what &amp;ldquo;passing&amp;rdquo; even looks like.&lt;/p&gt;
&lt;p&gt;Observability is what makes testing possible. When we can see inside our AI systems — trace the chain of reasoning, measure what changed, surface what failed — we can start to write evaluations, define what &amp;ldquo;good&amp;rdquo; looks like, and catch regressions we didn&amp;rsquo;t know to look for.&lt;/p&gt;
&lt;p&gt;In this talk, I explore what it means to test AI in the real world, drawing on lessons from building and evaluating an AI assistant for a large-scale observability platform. I&amp;rsquo;ll cover how evaluations work as the AI equivalent of a test suite, what to measure, how to catch hallucinations, and how to know when your model has regressed.&lt;/p&gt;
&lt;p&gt;You cannot test what you cannot see — and you cannot trust what you cannot test.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20261007-hustef-01.jpg" alt="Wide shot of me presenting the keynote at HUSTEF 2026, with the title slide reading “The Zeroth Law of Robotics: A robot must be testable” on the big screen above a full audience." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The big shift in this version is right there in the Zeroth Law itself. In earlier iterations I argued that &lt;em&gt;a robot must be observable&lt;/em&gt;. That&amp;rsquo;s still true — observability is the only way to see the reasoning behind a system and find out what actually happened. But I&amp;rsquo;ve come to think that pure knowledge isn&amp;rsquo;t the same as trust. You can know exactly what a system did and still not trust it. The only way to trust something is to put it through its paces: to know how it behaves in the situations you foresee, and even the ones you don&amp;rsquo;t. So the Zeroth Law has become &lt;strong&gt;a robot must be &lt;em&gt;testable&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I framed the whole thing around Asimov&amp;rsquo;s short story &lt;em&gt;Runaround&lt;/em&gt; (from &lt;em&gt;I, Robot&lt;/em&gt;) and its robot, Speedy. Speedy&amp;rsquo;s smuggler owners sent him to collect selenium on Mercury, and he got stuck in a loop — circling the selenium pool, unable to resolve the conflict between obedience (the second law) and self-preservation (the third). His owners couldn&amp;rsquo;t predict his behaviour and couldn&amp;rsquo;t reason about it, so they had to do the only thing left: go out into the danger zone and fix him in production. Speedy wasn&amp;rsquo;t untestable because his owners were incompetent or lacked the tools — he was untestable because he was never &lt;em&gt;built&lt;/em&gt; to be tested. That&amp;rsquo;s the trap I think a lot of AI systems are walking into right now.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20261007-hustef-02.jpg" alt="Me looking up at a slide of an armoured robot running across the surface of Mars while I present." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The through-line for a testing audience: AI is rewriting &lt;em&gt;how&lt;/em&gt; software gets built, but it doesn&amp;rsquo;t rewrite the discipline of trust. Trust that a system does what we say it does, and that when it breaks we know why and can fix it — that&amp;rsquo;s always been the job, and it isn&amp;rsquo;t going anywhere. There&amp;rsquo;s a whole generation of AI engineers shipping software they haven&amp;rsquo;t tested and can&amp;rsquo;t explain, and when someone says &amp;ldquo;the agent does this,&amp;rdquo; our job is still to ask &lt;em&gt;how do you know?&lt;/em&gt; Testing isn&amp;rsquo;t just going to survive the age of AI — testing is the reason AI gets to survive, if we make it testable.&lt;/p&gt;
&lt;p&gt;I demoed this with my TTRPG side project: an AI Dungeon Master, instrumented and put under test. It turns out that writing evals for something non-deterministic forces you to confront your real requirements. I thought I knew exactly when a dungeon master should call for a dice roll — I GM myself! — but trying to put it into words (&amp;ldquo;in &lt;em&gt;this&lt;/em&gt; situation I&amp;rsquo;d roll, but in &lt;em&gt;that&lt;/em&gt; one I wouldn&amp;rsquo;t, because I want to keep the story moving&amp;rdquo;) surfaced decisions I&amp;rsquo;d never had to make explicit. Those are things we&amp;rsquo;d normally discover much later, in production. Having to figure them out up front is a win.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20261007-hustef-03.jpg" alt="Me grinning during the talk, holding a microphone and presenter clicker." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The Q&amp;amp;A was genuinely great and ranged well beyond the slides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;When has an AI been tested &lt;em&gt;enough&lt;/em&gt;?&amp;rdquo;&lt;/strong&gt; Same answer as for anything else — it&amp;rsquo;s a mix of risk and budget. If it were a life-critical robot like Speedy, you test every scenario the people relying on it need. For my little demo app, less so.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testers vs. developers in the age of AI.&lt;/strong&gt; I said I&amp;rsquo;d fire developers before testers — provocatively, but the point stands: anyone can write code now. What made a good developer good was never the coding; it was communicating with business &lt;em&gt;and&lt;/em&gt; engineers, translating requirements, finding creative-but-safe solutions. Testers already think at that level and translate across teams, which makes them &lt;em&gt;more&lt;/em&gt; important in the age of AI, not less.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Defining expected results for non-deterministic systems&lt;/strong&gt;, multi-turn evals (I give the simulated user a &lt;em&gt;personality&lt;/em&gt; — adversarial, cooperative, beginner — rather than a script), and the broader shift from imperative to declarative: we no longer instruct step by step, we declare the end state we want, the way we do with Kubernetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Convincing colleagues not to fear AI.&lt;/strong&gt; I don&amp;rsquo;t, really. AI is here to stay; the question isn&amp;rsquo;t whether you approve of it, it&amp;rsquo;s whether you want to stay in this industry and help make it safe and trustworthy — or sit on the sidelines.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also recommended the book &lt;a href="https://link.amazon/B0e4SIur8"&gt;&lt;em&gt;Slow AI&lt;/em&gt;&lt;/a&gt;, which lands where I do: not an AI apologist, not a boycott, but a clear-eyed list of what AI is and isn&amp;rsquo;t good for — and the reminder to keep checking whether a given use of AI is making you &lt;em&gt;more&lt;/em&gt; capable or less.&lt;/p&gt;
&lt;p&gt;The demo app (the instrumented AI DM) lives on &lt;a href="https://nicole.to/asimov"&gt;GitHub&lt;/a&gt;, and I keep refining it with each iteration of this talk.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll update this post with the recording once HUSTEF publishes it.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicole.to/hustef"&gt;Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicole.to/asimov"&gt;Demo app on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://link.amazon/B0e4SIur8"&gt;&lt;em&gt;Slow AI&lt;/em&gt; (book)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Previous versions of this talk: &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU 2025&lt;/a&gt; · &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; · &lt;a href="https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/"&gt;NewCrafts 2025&lt;/a&gt; · &lt;a href="https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/"&gt;ExpoQA Madrid 2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Context Engineering Fundamentals (The Context Window #06)</title><link>https://nicolevanderhoeven.com/blog/20261002-context-window-06-context-engineering-fundamentals/</link><pubDate>Fri, 02 Oct 2026 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20261002-context-window-06-context-engineering-fundamentals/</guid><description>&lt;p&gt;What actually counts as &amp;ldquo;context&amp;rdquo; for an AI agent — and how does it find the right things to put in a limited window? In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I dig into &lt;strong&gt;context engineering fundamentals&lt;/strong&gt; with &lt;a href="https://www.linkedin.com/in/ben-sully/"&gt;Ben Sully&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/ioanna-armouti/"&gt;Ioanna Armouti&lt;/a&gt;. We treat the context window as an &lt;strong&gt;attention budget&lt;/strong&gt;, walk through Assistant Search and semantic retrieval, embeddings, and how you actually &lt;em&gt;evaluate&lt;/em&gt; whether the retrieved context was any good.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Vn04wQ0T9PU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="what-we-cover"&gt;What we cover&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What counts as context&lt;/strong&gt; — and why the context window behaves more like an &lt;em&gt;attention budget&lt;/em&gt; than just a size limit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finding the right context&lt;/strong&gt; — Assistant Search, semantic retrieval, and embeddings: how an agent surfaces what it needs instead of being handed everything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluating retrieved context&lt;/strong&gt; — because retrieval that &lt;em&gt;looks&lt;/em&gt; relevant isn&amp;rsquo;t the same as retrieval that &lt;em&gt;is&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The tool tax and tool deferral&lt;/strong&gt; — every tool definition costs context, so when do you load it versus defer it?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Progressive disclosure and long-term memory&lt;/strong&gt; — giving the agent what it needs, when it needs it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why removing 80% of a system prompt can change nothing&lt;/strong&gt; — a nice illustration that more context is not automatically better context.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Context+Engineering"&gt;My notes on Context Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Context"&gt;My notes on Context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;My notes on Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>When to use Grafana Assistant vs MCP vs GCX: Grafana GCX</title><link>https://nicolevanderhoeven.com/blog/20260821-when-to-use-grafana-gcx/</link><pubDate>Fri, 21 Aug 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260821-when-to-use-grafana-gcx/</guid><description>&lt;p&gt;Three AI tools people confuse: Assistant, MCP, and GCX. &lt;a href="https://nicolevanderhoeven.com/blog/20260819-when-to-use-grafana-mcp/"&gt;Last time&lt;/a&gt; I talked about the easy hand — the MCP server. Now the &lt;em&gt;power&lt;/em&gt; hand: &lt;strong&gt;GCX&lt;/strong&gt;, a CLI built for AI agents.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/bWtlNE8GdAI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;If Assistant is the brain and Grafana MCP is the easy hand, then GCX is the &lt;strong&gt;power hand&lt;/strong&gt; — a CLI built for an agent to drive. (Quick refresher: a &lt;strong&gt;CLI&lt;/strong&gt; is a command line interface — no clicking, just typed commands.)&lt;/p&gt;
&lt;p&gt;So when does GCX win?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;When you&amp;rsquo;re using terminal coding agents&lt;/strong&gt; — Claude Code, Cursor, Codex. It writes code, pulls the exact log or metric, and verifies against it — without leaving the editor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you need &lt;em&gt;everything.&lt;/em&gt;&lt;/strong&gt; GCX wraps the &lt;em&gt;entire&lt;/em&gt; Grafana Cloud API — SLOs, Synthetics, IRM, k6, Fleet — the esoteric corners MCP skips. The full banana.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want automation and CI/CD.&lt;/strong&gt; Dry-run mode, JSON output, and exit codes an agent can act on — built for GitOps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do you need Grafana Assistant for this? &lt;strong&gt;No — not even a subscription.&lt;/strong&gt; Bring your own brain, same as MCP: metrics, logs, dashboards, and alerts run on nothing but a service account token. You only really pay for Assistant if you call &lt;code&gt;gcx assistant&lt;/code&gt; directly — which taps its reasoning, billed separately.&lt;/p&gt;
&lt;p&gt;So there&amp;rsquo;s your map: &lt;strong&gt;Assistant&amp;rsquo;s the brain, MCP&amp;rsquo;s the easy hand, GCX is the power hand.&lt;/strong&gt; It&amp;rsquo;s not one versus another — they work really well together to give you the best choice in how to access your Grafana stack.&lt;/p&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m differentiating Assistant, Grafana MCP and GCX and in this one I&amp;rsquo;m talking about &lt;strong&gt;GCX&lt;/strong&gt;. If Assistant is the brain and Grafana MCP is the easy hand, then GCX is the power hand — a CLI built for AI agents.&lt;/p&gt;
&lt;p&gt;Quick refresher: a &lt;strong&gt;CLI&lt;/strong&gt; is a command line interface — no clicking, just typed commands. GCX is a CLI built for an agent to drive.&lt;/p&gt;
&lt;p&gt;So when does GCX win?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;When you&amp;rsquo;re using terminal coding agents&lt;/strong&gt; — Claude Code, Cursor, Codex. It writes code, pulls the exact log or metric, and verifies against it — without leaving the editor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you need &lt;em&gt;everything.&lt;/em&gt;&lt;/strong&gt; GCX wraps the &lt;em&gt;entire&lt;/em&gt; Grafana Cloud API — SLOs, Synthetics, IRM, k6, Fleet — the esoteric corners MCP skips — the full banana.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want to do automation and CI/CD.&lt;/strong&gt; Dry-run mode, JSON output, exit codes an agent can act on — built for GitOps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do you need Grafana Assistant for this? &lt;strong&gt;No — not even a subscription.&lt;/strong&gt; Bring your own brain, same as MCP: metrics, logs, dashboards, alerts run on nothing but a service account token. You only really pay for Assistant if you call &lt;code&gt;gcx assistant&lt;/code&gt; directly — which taps its reasoning, billed separately.&lt;/p&gt;
&lt;p&gt;So there&amp;rsquo;s your map: &lt;strong&gt;Assistant&amp;rsquo;s the brain, MCP&amp;rsquo;s the easy hand, GCX is the power hand.&lt;/strong&gt; It&amp;rsquo;s not one versus another. They actually work really well together to give you the best choice in how to access your Grafana stack.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/GCX"&gt;My notes on GCX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260817-when-to-use-grafana-assistant/"&gt;When to use Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260819-when-to-use-grafana-mcp/"&gt;When to use Grafana MCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>When to use Grafana Assistant vs MCP vs GCX: Grafana MCP</title><link>https://nicolevanderhoeven.com/blog/20260819-when-to-use-grafana-mcp/</link><pubDate>Wed, 19 Aug 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260819-when-to-use-grafana-mcp/</guid><description>&lt;p&gt;Three AI tools people confuse: Assistant, MCP, and GCX. &lt;a href="https://nicolevanderhoeven.com/blog/20260817-when-to-use-grafana-assistant/"&gt;Last time&lt;/a&gt; I talked about the brain — Assistant. Now hand number one: &lt;strong&gt;the MCP server&lt;/strong&gt;, the &lt;em&gt;easy&lt;/em&gt; hand.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/HDmJyo9cyf8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Grafana MCP — Model Context Protocol — lets &lt;em&gt;any&lt;/em&gt; AI client reach into Grafana. The magic part: &lt;strong&gt;you bring your own brain.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using MCP requires &lt;strong&gt;two pieces&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;client&lt;/strong&gt; is your AI app — the brain you bring: claude.ai, ChatGPT, Cursor.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;server&lt;/strong&gt; is the door into Grafana that exposes the tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are two ways to get that server. The easiest is the &lt;strong&gt;Grafana Cloud hosted&lt;/strong&gt; one — already running, auth built in, just connect and go. But you can also &lt;strong&gt;self-host&lt;/strong&gt; the open-source one on your own infra.&lt;/p&gt;
&lt;p&gt;So when do you reach for Grafana MCP?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;When you&amp;rsquo;re using hosted chat tools with no terminal&lt;/strong&gt; — claude.ai, ChatGPT, your phone. No shell means no CLI, so MCP is the only way in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want to bolt Grafana onto a tool you already use&lt;/strong&gt; — already in Cursor or Claude? Just add the server. No new workflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want the best discovery out of the box&lt;/strong&gt; — the tools describe themselves up front, so even smaller or cheaper models just &lt;em&gt;know&lt;/em&gt; what&amp;rsquo;s available. No trial-and-error.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One honest catch: those tool definitions &lt;em&gt;can&lt;/em&gt; eat some context if you load everything — but modern hosts fix that with lazy tool search.&lt;/p&gt;
&lt;p&gt;MCP is deliberately curated — it doesn&amp;rsquo;t expose &lt;em&gt;every&lt;/em&gt; corner of Grafana. So what do you do when you need the esoteric stuff? That&amp;rsquo;s exactly what the power hand, &lt;strong&gt;GCX&lt;/strong&gt;, is for — next up.&lt;/p&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Three AI tools people confuse: Assistant, MCP, GCX. Last time, I talked about the brain — Assistant. Now hand number one: &lt;strong&gt;the MCP server,&lt;/strong&gt; the &lt;em&gt;easy&lt;/em&gt; hand.&lt;/p&gt;
&lt;p&gt;Grafana MCP — Model Context Protocol — lets &lt;em&gt;any&lt;/em&gt; AI client reach into Grafana. The magic part: &lt;strong&gt;you bring that AI client - you bring your own brain.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using MCP requires &lt;strong&gt;two pieces.&lt;/strong&gt; The &lt;strong&gt;client&lt;/strong&gt; is your AI app — the brain you bring: claude.ai, ChatGPT, Cursor. The &lt;strong&gt;server&lt;/strong&gt; is the door into Grafana that exposes the tools.&lt;/p&gt;
&lt;p&gt;Two ways to get that server: the easiest way is to use the &lt;strong&gt;Grafana Cloud hosted&lt;/strong&gt; one — already running, auth built in, just connect and go. But you can also &lt;strong&gt;self-host&lt;/strong&gt; the open-source one on your own infra.&lt;/p&gt;
&lt;p&gt;So when do you reach for Grafana MCP?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;When you&amp;rsquo;re using hosted chat tools with no terminal&lt;/strong&gt; — claude.ai, ChatGPT, your phone. No shell means no CLI, so MCP is the only way in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want to bolt Grafana onto a tool you already use&lt;/strong&gt; — already in Cursor or Claude? Just add the server. No new workflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want the best discovery out of the box&lt;/strong&gt; — the tools describe themselves up front, so even smaller or cheaper models just &lt;em&gt;know&lt;/em&gt; what&amp;rsquo;s available. No trial-and-error.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One honest catch: those tool definitions &lt;em&gt;can&lt;/em&gt; eat some context if you load everything — but modern hosts fix that with lazy tool search.&lt;/p&gt;
&lt;p&gt;But MCP is deliberately curated — it doesn&amp;rsquo;t expose &lt;em&gt;every&lt;/em&gt; corner of Grafana. So what do you do when you need the esoteric stuff? That&amp;rsquo;s exactly what the power hand is for. Next up is &lt;strong&gt;GCX.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/mcp-grafana"&gt;Grafana MCP server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/"&gt;Model Context Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/GCX"&gt;My notes on GCX&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>When to use Grafana Assistant vs MCP vs GCX: Grafana Assistant</title><link>https://nicolevanderhoeven.com/blog/20260817-when-to-use-grafana-assistant/</link><pubDate>Mon, 17 Aug 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260817-when-to-use-grafana-assistant/</guid><description>&lt;p&gt;Grafana has three AI things people keep confusing — Assistant, MCP, and GCX. They&amp;rsquo;re not competitors. Think of it as &lt;strong&gt;a brain and two hands.&lt;/strong&gt; In this short, I start with the brain: &lt;strong&gt;Grafana Assistant&lt;/strong&gt;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xo7meD4Yn0k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Assistant isn&amp;rsquo;t just a chatbot — it&amp;rsquo;s the &lt;em&gt;reasoning layer&lt;/em&gt;. It manages context and knows your Grafana: your dashboards, your data sources, a knowledge graph of your infrastructure. Instead of clicking around, you tell Assistant &lt;em&gt;what&lt;/em&gt; you want to do and it figures out the &lt;em&gt;how&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Reach for the Assistant when the work is &lt;strong&gt;visual or exploratory&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Building a dashboard?&lt;/strong&gt; Assistant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Teach me how to do this&amp;rdquo; or &amp;ldquo;where is this in the UI&amp;rdquo;?&lt;/strong&gt; Assistant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A real incident that needs root-cause analysis across multiple data sources?&lt;/strong&gt; Assistant. That&amp;rsquo;s its sweet spot — it forms a hypothesis, correlates your signals, and can even open a pull request with the fix.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s the key thing though: Assistant is Grafana&amp;rsquo;s &lt;em&gt;own&lt;/em&gt; brain — but it&amp;rsquo;s &lt;strong&gt;not the only brain that can drive Grafana.&lt;/strong&gt; That&amp;rsquo;s where the two hands come in, and I&amp;rsquo;ll cover the first of those (the MCP server) next.&lt;/p&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Grafana has three AI things people keep confusing — Assistant, MCP, and GCX. I&amp;rsquo;m going to talk a bit about each one so you know which one is best for your use case.&lt;/p&gt;
&lt;p&gt;Spoiler: They&amp;rsquo;re not competitors. Think of it as &lt;strong&gt;a brain and two hands.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start with &lt;strong&gt;Grafana Assistant&lt;/strong&gt;, which is the brain.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not just a chatbot — it&amp;rsquo;s the &lt;em&gt;reasoning layer&lt;/em&gt;. It manages context, it knows your Grafana: your dashboards, your data sources, a knowledge graph of your infrastructure. So instead of you clicking around to do something, you can say what you want to do to Assistant and it figures out the &lt;em&gt;how.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Reach for the Assistant when the work is &lt;strong&gt;visual or exploratory.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you&amp;rsquo;re building a dashboard? Assistant.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Teach me how to do this&amp;rdquo; or &amp;ldquo;where is this in the UI&amp;rdquo;? Assistant.&lt;/li&gt;
&lt;li&gt;You have a real incident where you need root-cause analysis across multiple data sources? Assistant.
&lt;ul&gt;
&lt;li&gt;That&amp;rsquo;s its sweet spot — it forms a hypothesis, correlates your signals, and can even open a pull request with the fix.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s the key thing though: Assistant is Grafana&amp;rsquo;s &lt;em&gt;own&lt;/em&gt; brain — but it&amp;rsquo;s &lt;strong&gt;not the only brain that can drive Grafana.&lt;/strong&gt; That&amp;rsquo;s where the two hands come in… and I&amp;rsquo;ll show you those next.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/products/cloud/ai-tools/"&gt;Grafana Assistant&lt;/a&gt; (product page)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;My notes on Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/GCX"&gt;My notes on GCX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;Unlearnings from building Grafana Assistant&lt;/a&gt; — my Context Horizon piece&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI Week Day 5: Collaborating (Grafana AI Week — Friday)</title><link>https://nicolevanderhoeven.com/blog/20260731-ai-week-friday-collaborating/</link><pubDate>Fri, 31 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260731-ai-week-friday-collaborating/</guid><description>&lt;p&gt;The final day of AI Week is about &lt;strong&gt;collaborating&lt;/strong&gt; — using AI right where your team already works, no context switching required. &lt;strong&gt;Grafana Assistant in Slack is now generally available&lt;/strong&gt;: investigate issues, ask follow-up questions, and query your metrics and logs from the channel where the incident conversation is already happening. And that&amp;rsquo;s just one place Assistant now meets you — also announced: the &lt;strong&gt;Grafana mobile app is GA&lt;/strong&gt; (with Assistant on mobile in public preview), &lt;strong&gt;Assistant Desktop&lt;/strong&gt; in public preview, &lt;strong&gt;Microsoft Teams&lt;/strong&gt; support in private preview, and context-aware &lt;strong&gt;Assistant Search&lt;/strong&gt; in public preview. Add it all up and Assistant is now wherever you are: the Grafana UI, the API, your terminal, your coding agent, Slack, Teams, mobile, desktop, and search. That&amp;rsquo;s a wrap on five days of announcements.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/obBh4pMrHCM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s the final day of Grafana Labs&amp;rsquo; AI Week, and Friday is all about &lt;strong&gt;collaborating&lt;/strong&gt; — using AI right where your team already works, no context switching required.&lt;/p&gt;
&lt;p&gt;Today, &lt;strong&gt;Grafana Assistant in Slack is generally available.&lt;/strong&gt; Investigate issues, ask follow-up questions, query your metrics and logs — all from the channel where your incident conversation is already happening.&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s just one place Assistant now meets you. Today we also announced: the &lt;strong&gt;Grafana mobile app is GA&lt;/strong&gt;, with Assistant on mobile in public preview. &lt;strong&gt;Assistant Desktop&lt;/strong&gt; is in public preview. &lt;strong&gt;Microsoft Teams&lt;/strong&gt; support is in private preview. And &lt;strong&gt;Assistant Search&lt;/strong&gt; — deeper, context-aware search — is in public preview too.&lt;/p&gt;
&lt;p&gt;Add it all up, and Assistant is now wherever you are: the Grafana UI, the API, your terminal, your coding agent, Slack, Teams, mobile, desktop, and search.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a wrap on five days of announcements — and I know it was a &lt;em&gt;lot&lt;/em&gt;. So if you missed a day, or you just want the full picture of where AI at Grafana stands today, I made a video for exactly that: everything you can do with AI in Grafana Cloud, including everything we shipped this week. It&amp;rsquo;s linked below and pinned in the comments.&lt;/p&gt;
&lt;p&gt;One last time: &lt;strong&gt;grafana.ai&lt;/strong&gt; for all of it. Thanks for spending AI Week with me.&lt;/p&gt;</description></item><item><title>Observability and AI explained</title><link>https://nicolevanderhoeven.com/blog/20260731-observability-and-ai-explained/</link><pubDate>Fri, 31 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260731-observability-and-ai-explained/</guid><description>&lt;p&gt;&amp;ldquo;AI observability&amp;rdquo; gets thrown around a lot, and it can mean one of two very different things. So in this video I map out the whole landscape of AI-related work at Grafana across the entire software development lifecycle — and show how AI and observability come together in two directions: &lt;strong&gt;AI for observability&lt;/strong&gt; (AI that helps you observe your systems) and &lt;strong&gt;observability for AI&lt;/strong&gt; (observing the AI itself).&lt;/p&gt;
&lt;p&gt;The framing is deliberate: AI in observability isn&amp;rsquo;t about replacing engineers. It&amp;rsquo;s about handing back the exhausting parts of the job — the 3am triage, the repetitive queries, the report nobody wanted to write — so you can spend your energy on the work only humans can do.&lt;/p&gt;
&lt;p&gt;I walk through each phase of the lifecycle and where the tools fit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Planning&lt;/strong&gt; — clarity about what&amp;rsquo;s really going on, with &lt;a href="https://notes.nicolevanderhoeven.com/Grafana%20Assistant"&gt;Grafana Assistant&lt;/a&gt;: not just a chatbot, but an agent that knows your telemetry, writes your queries, and builds your dashboards.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Building&lt;/strong&gt; — momentum without losing control: Assistant, the open-source &lt;a href="https://notes.nicolevanderhoeven.com/GCX"&gt;GCX&lt;/a&gt; CLI, the Grafana MCP server, the specialized Loki/Tempo/k6 MCP servers, and the AI SDK for building your own agents in Go.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operating&lt;/strong&gt; — staying calm under load: Investigations for agentic incident triage, Assistant Automations and the Watcher Agent for staying proactive, plus &lt;a href="https://notes.nicolevanderhoeven.com/Grafana%20Machine%20Learning"&gt;Grafana Machine Learning&lt;/a&gt; (Metrics Forecasting, Outlier Detection) and Adaptive Telemetry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing &amp;amp; evaluating&lt;/strong&gt; — &lt;a href="https://notes.nicolevanderhoeven.com/Doubt%20is%20a%20form%20of%20care"&gt;doubt is a form of care&lt;/a&gt;: &lt;a href="https://notes.nicolevanderhoeven.com/k6%20%28tool%29"&gt;k6&lt;/a&gt; and agentic testing on the systems side, and Agent Observability plus the open-source o11y-bench benchmark on the &amp;ldquo;observing your AI&amp;rdquo; side.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaborating&lt;/strong&gt; — bringing it all to where your team already works: Assistant in Slack (and coming to Teams), on mobile, on the desktop, and via API/MCP, plus Assistant Search across your Grafana artifacts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;re new to the Grafana stack itself, start with my open source observability video for the non-AI foundations that all of this builds on.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/OTmgMF6gD1k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana%20Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/GCX"&gt;GCX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/k6%20%28tool%29"&gt;k6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://o11ybench.ai"&gt;o11ybench.ai&lt;/a&gt; — the open leaderboard for AI agents doing observability work&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI Week Day 4: Evaluating (Grafana AI Week — Thursday)</title><link>https://nicolevanderhoeven.com/blog/20260730-ai-week-thursday-evaluating/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-ai-week-thursday-evaluating/</guid><description>&lt;p&gt;Day four of AI Week is all about &lt;strong&gt;evaluating&lt;/strong&gt; — because building an agent is the easy part; &lt;em&gt;trusting&lt;/em&gt; it is where things get hard. The headline: &lt;strong&gt;Grafana Agent Observability is now generally available&lt;/strong&gt; — the tool Grafana built for itself while scaling Assistant, once it grew too complex to evaluate with unit tests. Instrument your agent with the SDK and your conversations, tool calls, traces, latency, token use, and cost all become observable in one place; add evaluators (LLM judges plus deterministic checks) to score quality on live traffic, feed low-scoring conversations into your test suite, and gate CI on experiments comparing a candidate against a baseline. And because evaluator metrics land in Prometheus, you can get paged when a bad prompt change tanks quality. The fun bonus: &lt;strong&gt;k6 agentic testing&lt;/strong&gt; — describe a browser test in plain language and an agent embedded in k6 drives the browser, no script required (they proved it by getting it to beat Wordle).&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/FOHdEm-_DEQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s day four of Grafana Labs&amp;rsquo; AI Week, and Thursday is all about &lt;strong&gt;evaluating&lt;/strong&gt; — because building an agent is the easy part. &lt;em&gt;Trusting&lt;/em&gt; it is where things get hard.&lt;/p&gt;
&lt;p&gt;The big news: &lt;strong&gt;Grafana Agent Observability is now generally available.&lt;/strong&gt; This is the tool we built for ourselves while scaling Grafana Assistant, when it grew too complex to evaluate with unit tests. Now it&amp;rsquo;s available to everyone on Grafana Cloud.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how it works: instrument your agent with the SDK, and your conversations, tool calls, traces, latency, token use, and cost all become observable in one place. Then add evaluators — LLM judges plus deterministic checks — to score quality on live traffic. Low-scoring conversations feed your test suite, and experiments let you compare a candidate against a baseline before you ship — you can even make it a CI gate. And because evaluator metrics land in Prometheus, you can get paged if a bad prompt change tanks quality in production.&lt;/p&gt;
&lt;p&gt;But my favorite part of today? &lt;strong&gt;k6 agentic testing.&lt;/strong&gt; Describe a browser test in plain natural language, and an agent embedded in k6 drives the browser for you — no script at all. And to prove it, we gave it one job: beat Wordle. Go watch that video. I&amp;rsquo;ll wait.&lt;/p&gt;
&lt;p&gt;Everything&amp;rsquo;s at &lt;strong&gt;grafana.ai&lt;/strong&gt; — see you tomorrow for the finale: using AI where your team already works.&lt;/p&gt;</description></item><item><title>Investigations Arena: how we test Assistant investigations</title><link>https://nicolevanderhoeven.com/blog/20260730-investigations-arena/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-investigations-arena/</guid><description>&lt;p&gt;How do you test an AI agent whose whole job is to investigate incidents — when every investigation is different and &amp;ldquo;correct&amp;rdquo; isn&amp;rsquo;t a single deterministic answer? In this interview I sit down with &lt;strong&gt;Will&lt;/strong&gt;, a software engineer at Grafana who&amp;rsquo;s spent the last year focused on AI: the Grafana Assistant, investigations, and memory features.&lt;/p&gt;
&lt;p&gt;The story here is how the team got from Investigations V1 to a much better V2. V1 hit a ceiling, and the demo environment they&amp;rsquo;d been testing against turned out to be the problem — the cases were too easy and too far from the messy reality of a production cluster. So they built an &lt;strong&gt;arena&lt;/strong&gt;: think competitive bot programming, but the &amp;ldquo;game&amp;rdquo; is investigating real incidents in Grafana&amp;rsquo;s own production environment. Different AI agents, each with its own strategy and tools, all take a swing at the same incident, and an LLM-as-judge scores their answers against a human-verified root cause.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s interesting is that the &lt;em&gt;score&lt;/em&gt; wasn&amp;rsquo;t even the most valuable output at first — the &lt;strong&gt;insights&lt;/strong&gt; were. Watching which strategies worked, which tools returned so much noise that they poisoned the context, and which agents wandered off is what let the team optimize bit by bit into the V2 release. The arena also compares more than models: different harnesses running Sonnet vs. Opus, Claude Code with the Grafana MCP, even just hitting the public API directly with &lt;code&gt;curl&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A couple of my favorite moments: Will explains the &lt;strong&gt;guardrails&lt;/strong&gt; that stop agents from &amp;ldquo;cheating&amp;rdquo; (they can only look at data from within the incident&amp;rsquo;s time window, so they can&amp;rsquo;t peek at the fix commit that resolved it) — and how the models mostly play fair because they treat it like a game. And there&amp;rsquo;s a lovely example of emergent creativity: an agent reached for tools the team hadn&amp;rsquo;t even considered, they turned out to be genuinely useful for investigation, and those tools got promoted into the real harness. Will&amp;rsquo;s hope for the future is to open this up — an OliBench-style shared benchmark where the community can throw their own investigation agents into the arena and raise quality across the board.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/YPfqchw8LCo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
Hey, my name is Will. I&amp;rsquo;m a software engineer at Grafana. I&amp;rsquo;ve been there for three years, and for the last year I&amp;rsquo;ve been focusing on AI — the Grafana Assistant, investigations, and memory features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
And what&amp;rsquo;s the latest thing you&amp;rsquo;ve been working on?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
So we developed Investigations V1, and we saw that we hit a ceiling at some point. We came up with a different approach, but this time we needed a good evaluation environment — the demo environment wasn&amp;rsquo;t enough, because those cases were too easy and too far from the reality of a production environment. So we decided to build an arena.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a little bit like the idea of competitive bot programming, where bots fight against each other on specific tasks or games. In this case, the topic was investigations in our production cluster — real incidents. We started building bots that had different strategies and different tools; these were AI agents. Comparing a diversity of strategies let us surface the best approaches, and from there we could iterate, bring in more test cases from more incidents, and reach higher and higher quality.&lt;/p&gt;
&lt;p&gt;The idea is that the bots try to solve the same case, and we use an LLM as a judge to compare the different approaches. We have different criteria, because for each incident we have a root cause that&amp;rsquo;s been verified by a human. That gives us our ground truth, and the LLM-as-judge compares that ground truth against the answers the agents came up with.&lt;/p&gt;
&lt;p&gt;The important part at first wasn&amp;rsquo;t even the score — it was the insights. This tool was better with this strategy; this one had noise in the results that poisoned the context; the results returned from this specific tool were just too much. So we managed to really optimize bit by bit and come up with Investigations V2, which we just released. It&amp;rsquo;s a massive improvement compared to our V1 approach.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So is it comparing just different models for investigations, or is it also comparing things like Claude Code and the Grafana MCP versus Assistant?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
Both, actually. We have different versions of our harness for investigations that we run with Sonnet and with Opus, but we also use the Claude Code harness with the Grafana MCP — and even just using &lt;code&gt;curl&lt;/code&gt; to directly hit our public API.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Do the models ever cheat?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
So far it&amp;rsquo;s been quite good. We have guardrails. Because we investigate past incidents, we need to make sure the LLM only looks at a specific time window — only from when the incident started — otherwise it would be able to find the pull request that was used to solve the incident. But they&amp;rsquo;re pretty good at following the rules; they take it as a game a little bit. We even have an agent that checks afterward, with the judge, to make sure they followed every rule.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s funny, actually — we had a case using Claude Code where it started to use some tools we hadn&amp;rsquo;t thought about in the first place, and they turned out to be very useful for investigation. We&amp;rsquo;d never considered them, so we brought them into our investigation harness and it helped a lot. Giving the agents freedom and creativity in this kind of environment is really useful. That diversity sponsors new ideas that we can put into our own work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Cool. Do you have any plans to publish this and share it so that other people can do it too — kind of like OliBench?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
Yeah, I think, why not? I think we can go this way too. I&amp;rsquo;m sure it would be useful for other agents. And it would be very nice if we could compare agents from other people and other companies — maybe with different harnesses, maybe even different tools — because right now it&amp;rsquo;s mostly about our MCP, our CLI, and our investigation harness. But if the community comes up with their own investigation agents — and I think I&amp;rsquo;ve seen a few — it would be fun to put them in the arena and help not just our product, but any product improve in quality.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>The Great Doubt: What Building an AI Agent Taught Us About Trust (KubeCon Japan 2026)</title><link>https://nicolevanderhoeven.com/blog/20260730-the-great-doubt-kubecon-japan/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0900</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-the-great-doubt-kubecon-japan/</guid><description>&lt;p&gt;This week I spoke at &lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-japan/"&gt;KubeCon + CloudNativeCon Japan 2026&lt;/a&gt; in Yokohama, Japan. I gave a talk called &lt;em&gt;The Great Doubt: What Building an AI Agent Taught Us About Trust&lt;/em&gt;. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When we started building an AI assistant for observability, we thought the hard part would be making it smart. We were wrong. The hard part was knowing when to trust it.&lt;/p&gt;
&lt;p&gt;AI agents hallucinate, forget context, and confidently give wrong answers. Traditional testing doesn&amp;rsquo;t catch these failures. What&amp;rsquo;s needed is evaluation grounded in systematic doubt.&lt;/p&gt;
&lt;p&gt;This talk shares lessons from shipping an AI agent to production: how to build a golden dataset of use cases you must get right, how to use LLM-as-judge when there&amp;rsquo;s no ground truth, and how to use OpenTelemetry traces to debug eval failures. You&amp;rsquo;ll also hear what&amp;rsquo;s still unsolved: evaluating multi-agent handoffs and closing the feedback loop between what users ask and what your evals cover.&lt;/p&gt;
&lt;p&gt;Kyoto School philosopher Nishitani Keiji called this &amp;ldquo;The Great Doubt&amp;rdquo; (大疑): questioning every assumption until only what survives is real. For AI agents, that&amp;rsquo;s not philosophy. It&amp;rsquo;s the job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The talk walks through the layers of doubt we worked through while building &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;: doubting the agent itself, then doubting our tests, then the LLM-as-judge, then our own scores — and finally doubting whether the doubt was even justified. Each layer needed a different tool, from a golden dataset run in a fully synthetic observability environment, through online evals on live traffic, to per-conversation OpenTelemetry traces that link every eval score back to the exact LLM and tool calls that produced it.&lt;/p&gt;
&lt;p&gt;You can find the slides at &lt;a href="https://nicole.to/doubtslides"&gt;nicole.to/doubtslides&lt;/a&gt;, and you can watch the full talk below:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/uW9Hlp3fT14?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;p&gt;Grafana Assistant (generally available for Grafana OSS, Grafana Cloud, and Grafana Play):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/assistant/"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.grafana.org"&gt;Try it out on Grafana Play&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Assistant Investigations (Grafana Cloud):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/investigations"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent Observability (Grafana Cloud):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/agento11y"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;o11y-bench (OSS):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/o11ybench"&gt;Site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Investigations Arena:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/YPfqchw8LCo"&gt;Video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="related-reading"&gt;Related reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My Context Horizon piece &lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;&lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4vZNlPD"&gt;&lt;em&gt;The Way of Zen&lt;/em&gt;&lt;/a&gt; by Alan W. Watts&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/3RgXGIP"&gt;&lt;em&gt;Zen Mind, Beginner&amp;rsquo;s Mind&lt;/em&gt;&lt;/a&gt; by Shunryu Suzuki&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4vQW2eQ"&gt;&lt;em&gt;Religion and Nothingness, Volume 1&lt;/em&gt;&lt;/a&gt; by Nishitani Keiji&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4yFff6d"&gt;&lt;em&gt;Philosophers of Nothingness: An Essay on the Kyoto School&lt;/em&gt;&lt;/a&gt; by James W. Heisig&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI Week Day 3: Operations &amp; Maintenance (Grafana AI Week — Wednesday)</title><link>https://nicolevanderhoeven.com/blog/20260729-ai-week-wednesday-operations/</link><pubDate>Wed, 29 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260729-ai-week-wednesday-operations/</guid><description>&lt;p&gt;Day three of AI Week is about &lt;strong&gt;operations and maintenance&lt;/strong&gt; — because once code reaches production, the operational work is still surprisingly manual: someone&amp;rsquo;s watching dashboards, deciding whether an error spike is real, and writing up what happened, every single day. Two Grafana Assistant features went GA to take that off your plate. &lt;strong&gt;Assistant Automations&lt;/strong&gt; handle recurring work — save a prompt and run it on a schedule (like a morning brief on your service&amp;rsquo;s health), each run keeping its own history and able to notify you in Slack. &lt;strong&gt;Assistant Investigations&lt;/strong&gt; is for when something actually breaks: it digs across metrics, logs, traces, and profiles, develops and tests hypotheses, and hands you a structured report you can follow along with in a Workspace. You&amp;rsquo;re offloading vigilance, not accountability — the evidence is always there to review, and you still make the call.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5P7qSKIRSek?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s day three of AI Week, and Wednesday is all about &lt;strong&gt;operations and maintenance&lt;/strong&gt;. Because here&amp;rsquo;s the thing: once your code reaches production, the operational work is still surprisingly manual. Someone&amp;rsquo;s watching dashboards, someone&amp;rsquo;s deciding whether that error spike is real, and someone&amp;rsquo;s writing up what happened — every single day.&lt;/p&gt;
&lt;p&gt;Today, two features of Grafana Assistant are now generally available to take that burden off your plate: &lt;strong&gt;Investigations&lt;/strong&gt; and &lt;strong&gt;Automations&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Assistant Automations&lt;/strong&gt; handle the recurring work of operating a system. Save an Assistant prompt and run it on a schedule — like a morning brief that summarizes the operational health of your service over the last 24 hours. Every run keeps its own conversation and history, and it can notify you in Slack when it&amp;rsquo;s done or needs approval.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Assistant Investigations&lt;/strong&gt; is for when something actually breaks. Investigations digs into issues across your metrics, logs, traces, and profiles, develops and tests hypotheses, and hands you a structured report. You can follow along in a Workspace, see what&amp;rsquo;s been ruled out, and add guidance while it works.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;re offloading vigilance, not accountability — the evidence and reasoning are always there to review, and you still make the call.&lt;/p&gt;
&lt;p&gt;Everything&amp;rsquo;s at &lt;strong&gt;grafana.ai&lt;/strong&gt; — see you tomorrow for day four: evaluating your agents.&lt;/p&gt;</description></item><item><title>AI Week Day 2: Building (Grafana AI Week — Tuesday)</title><link>https://nicolevanderhoeven.com/blog/20260728-ai-week-tuesday-building/</link><pubDate>Tue, 28 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260728-ai-week-tuesday-building/</guid><description>&lt;p&gt;Day two of AI Week is all about &lt;strong&gt;building&lt;/strong&gt; — the AI tools that help you write software with confidence. Two big announcements went generally available: &lt;strong&gt;gcx&lt;/strong&gt; (the Grafana CLI) and the &lt;strong&gt;Grafana MCP server&lt;/strong&gt;. Both connect your coding agents — Claude Code, Cursor, and friends — to your Grafana telemetry. The MCP server gives agents opinionated, ready-made tools for the common cases (querying metrics and logs, reading and updating dashboards); gcx is the more flexible, less opinionated option, built for agents from the ground up with read-only guardrails and its own bundle of agent skills. Both work for OSS and Grafana Cloud. The point: when an agent writes your code, it shouldn&amp;rsquo;t be guessing — it should be looking at how your system &lt;em&gt;actually&lt;/em&gt; behaves in production. That&amp;rsquo;s telemetry-driven development.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Y3QtH94f77U?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s day two of Grafana Labs&amp;rsquo; AI Week, and Tuesday is all about &lt;strong&gt;building&lt;/strong&gt; — the AI tools that help you build software with confidence.&lt;/p&gt;
&lt;p&gt;Today we have two big announcements: &lt;strong&gt;gcx&lt;/strong&gt; and the &lt;strong&gt;Grafana MCP server&lt;/strong&gt; are both now generally available.&lt;/p&gt;
&lt;p&gt;Both of them connect your coding agents — think Claude Code or Cursor — to your Grafana telemetry. So what&amp;rsquo;s the difference?&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Grafana MCP server&lt;/strong&gt; gives your agent opinionated, ready-made tools for the most common use cases: querying your metrics and logs, reading and updating dashboards, that kind of thing. You can run it yourself, or use the hosted MCP server with your Grafana Cloud stack — so yes, it works for both &lt;strong&gt;OSS and Grafana Cloud&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gcx&lt;/strong&gt; is the Grafana CLI, and it&amp;rsquo;s the more flexible, less opinionated option. Agents can explore it and build their own workflows, and it was designed for agents from the ground up, with read-only guardrails so your agent can&amp;rsquo;t touch anything you didn&amp;rsquo;t approve. It works with Cloud stacks and self-managed instances, and it even ships with its own bundle of agent skills.&lt;/p&gt;
&lt;p&gt;Why does this matter? Because when an agent writes your code, it shouldn&amp;rsquo;t be guessing — it should be looking at how your system &lt;em&gt;actually&lt;/em&gt; behaves in production. That&amp;rsquo;s telemetry-driven development.&lt;/p&gt;
&lt;p&gt;Head to &lt;strong&gt;grafana.ai&lt;/strong&gt; for everything we&amp;rsquo;re shipping this week, and I&amp;rsquo;ll see you tomorrow for day three.&lt;/p&gt;</description></item><item><title>AI Week Day 1: Planning (Grafana AI Week — Monday)</title><link>https://nicolevanderhoeven.com/blog/20260727-ai-week-monday-planning/</link><pubDate>Mon, 27 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260727-ai-week-monday-planning/</guid><description>&lt;p&gt;It&amp;rsquo;s day one of Grafana Labs&amp;rsquo; AI Week, and Monday is all about &lt;strong&gt;planning&lt;/strong&gt; — getting the clarity you need on what&amp;rsquo;s going on in your system so you can figure out what to build. Kicking things off is &lt;strong&gt;Workspace for Grafana Assistant&lt;/strong&gt;: a full-page view of Assistant so your conversations and generated graphs aren&amp;rsquo;t crammed into the little right-hand sidebar. It&amp;rsquo;s a much less cluttered place to run investigations and to be agent-first. On top of that, Assistant is now easier to try — enable it in Grafana 13 for OSS without linking a Grafana Cloud account, or try it with no signup or download at all on &lt;a href="https://play.grafana.org"&gt;Grafana Play&lt;/a&gt;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/AEU73mjeh0c?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Hi everyone! I&amp;rsquo;m Nicole van der Hoeven and I&amp;rsquo;m really excited to welcome you to AI Week. Today is Monday, which is planning day, where we give you the tools you need to get clarity on what even is going on in your system so that you can figure out what to build.&lt;/p&gt;
&lt;p&gt;Now we&amp;rsquo;re kicking things off with a feature called Workspace for Grafana Assistant. Now if you&amp;rsquo;ve used Assistant before, you&amp;rsquo;ll know that it comes up on the little sidebar on the right side of Grafana. Well, that can start to get cramped if you have multiple conversations or if you&amp;rsquo;ve asked Assistant to generate multiple graphs for you. Well, we&amp;rsquo;ve heard you, and now we&amp;rsquo;re giving you a full page view of Assistant. So you&amp;rsquo;ll have all of your conversations on the left, and this is also an excellent place to run investigations from. You can also zoom in on any of those graphs, and it&amp;rsquo;s just a much less cluttered view if you want to be agent-first.&lt;/p&gt;
&lt;p&gt;Speaking of Assistant, the second thing I want to tell you is that you know, Assistant was already available everywhere. But now, Assistant is available&amp;hellip; in more places than everywhere? And also more easily. So Assistant was already available for OSS, but you had to link your Grafana Cloud account, which was not so handy if you wanted to try it out. But not anymore. Now if you download Grafana 13 and enable Assistant, then you&amp;rsquo;ll just be able to go and try it out and chat with Assistant without doing anything else. It&amp;rsquo;s still not free or open source, but it IS a lot easier to try it out.&lt;/p&gt;
&lt;p&gt;And if you don&amp;rsquo;t want to download anything, that&amp;rsquo;s what Grafana Play is for. Grafana Assistant is now available to try out on Grafana Play without any signup or any download required. Try it out at play.grafana.org. I really love seeing it there. Tune in tomorrow where we&amp;rsquo;re going to talk about everything we&amp;rsquo;re announcing to help you start to build.&lt;/p&gt;</description></item><item><title>An Overview of AI Evaluation (The Context Window #05)</title><link>https://nicolevanderhoeven.com/blog/20260626-context-window-05-ai-evaluation/</link><pubDate>Fri, 26 Jun 2026 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260626-context-window-05-ai-evaluation/</guid><description>&lt;p&gt;How do you know if an AI agent is actually any good — and whether the change you just made to it made it &lt;em&gt;better&lt;/em&gt; or &lt;em&gt;worse&lt;/em&gt;? In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I&amp;rsquo;m joined by &lt;a href="https://www.linkedin.com/in/yasirekinci/"&gt;Yas Ekinci&lt;/a&gt;, an engineer on Grafana&amp;rsquo;s AI team who has spent the last several months focused almost entirely on evaluation. We talk about why trusting AI is so hard (non-deterministic models, oversized PRs, and the shift from &lt;em&gt;writing&lt;/em&gt; code to &lt;em&gt;reviewing&lt;/em&gt; it), the difference between online and offline evals, how we actually test &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;, and &lt;code&gt;o11y-bench&lt;/code&gt;, the open observability benchmark we announced at GrafanaCON. We recorded this one ahead of Yas&amp;rsquo;s two-month leave — so consider it a deep dive banked for the road.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/_XGLBqVpL-Y?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="the-final-answer-problem"&gt;The &amp;ldquo;final answer problem&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;A recurring theme — and one close to my testing heart — is what I call the final answer problem. As a tester I&amp;rsquo;m used to looking at an outcome and asking &amp;ldquo;did this pass or fail?&amp;rdquo; But with AI, a plausible-looking answer isn&amp;rsquo;t enough. If the &lt;em&gt;process&lt;/em&gt; was wrong, you can&amp;rsquo;t trust the outcome even when it looks right — and a plausible-but-wrong answer is the dangerous case, because nothing on the surface tells you it&amp;rsquo;s wrong. Yas&amp;rsquo;s example: a broken Tempo tool that returned no spans, while the agent still answered convincingly by guessing from metadata. Plausible ≠ correct.&lt;/p&gt;
&lt;p&gt;This is also why the bottleneck has moved. The cost of &lt;em&gt;writing&lt;/em&gt; code has collapsed, so the burden now sits on review. Developers, as I like to put it, are becoming &lt;strong&gt;shepherds of intent&lt;/strong&gt; — less about typing the code, more about making sure the intent is clear and faithfully implemented.&lt;/p&gt;
&lt;h2 id="what-evals-are-and-online-vs-offline"&gt;What evals are, and online vs offline&lt;/h2&gt;
&lt;p&gt;An eval is simply a test of whether an AI agent behaves the way you want — from &amp;ldquo;who are you?&amp;rdquo; → &amp;ldquo;I&amp;rsquo;m Grafana Assistant&amp;rdquo; all the way up to multi-step querying and dashboarding. The point is to know &lt;em&gt;with confidence&lt;/em&gt; whether a change made the agent better, which is what lets you improve it consistently over time.&lt;/p&gt;
&lt;p&gt;There are two complementary flavours, and they map neatly onto testing concepts we already have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Online evals&lt;/strong&gt; — scoring a sample of real production conversations, usually with an LLM-as-a-judge. Great as a pulse check (it&amp;rsquo;ll catch a quality drop when a model provider silently swaps models), but it only tests the deployed variant and is hard to verify. Closest analogy: traditional observability / RUM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline evals&lt;/strong&gt; — a &amp;ldquo;golden set&amp;rdquo; of tasks run during development and CI against a controlled, reproducible environment. You can test every change, prompt, and implementation, and drill into specific skills (PromQL vs LogQL, dashboarding). Closest analogy: integration testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-we-test-grafana-assistant"&gt;How we test Grafana Assistant&lt;/h2&gt;
&lt;p&gt;Assistant evals run a real agent-plus-tools &lt;em&gt;harness&lt;/em&gt; against a real-ish environment (a Grafana with data sources, alerts, and dashboards), then grade the full transcript with &amp;ldquo;graders&amp;rdquo; or &amp;ldquo;verifiers.&amp;rdquo; The hard tension is that the environment has to be &lt;strong&gt;real and reproducible&lt;/strong&gt; at the same time. Because Assistant is a front-end plugin that runs some tools in the browser, the team uses Playwright to replicate real browser behaviour — which is where I made my pitch for k6&amp;rsquo;s browser module (now approaching Playwright parity) as a dogfooding option. The internal eval tool is a CLI called &lt;strong&gt;LLM Spec&lt;/strong&gt;, now on its third major iteration after the lessons from o11y-bench.&lt;/p&gt;
&lt;h2 id="o11y-bench"&gt;o11y-bench&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;&lt;code&gt;o11y-bench&lt;/code&gt;&lt;/a&gt; is our public benchmark, announced at GrafanaCON, with six task categories: dashboarding, investigation, logs, metrics, and traces. A few things I think make it genuinely interesting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s built on the &lt;strong&gt;Harbor&lt;/strong&gt; framework (also used by terminal-bench), which separates harness from environment from tasks — so you can swap harnesses and compare, say, &lt;code&gt;gcx&lt;/code&gt; + Claude Code against the Grafana MCP.&lt;/li&gt;
&lt;li&gt;The leaderboard includes open models (Qwen 3.6, Kimi), not just the frontier labs.&lt;/li&gt;
&lt;li&gt;It distinguishes &lt;strong&gt;pass@3&lt;/strong&gt; (got it right at least once in three runs — rough capability) from &lt;strong&gt;pass^3&lt;/strong&gt; (got it right all three times — reliability). The 10–20% gaps between the two are the whole reliability story in a single number.&lt;/li&gt;
&lt;li&gt;It runs against a &lt;strong&gt;synthetic environment&lt;/strong&gt; (Prometheus, Loki, Tempo in Docker) with generated data, so the correct answer is known in advance — and it uses &lt;strong&gt;fact-based rubrics&lt;/strong&gt;, where the grader runs its own known-good queries against the environment and checks the agent&amp;rsquo;s answer against them. That&amp;rsquo;s how you catch the subtle, plausible-but-wrong failures.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The internal eval set is a superset that adds scenarios drawn from real (private) conversations and Assistant-specific behaviour — like Slack&amp;rsquo;s not-quite-markdown formatting — while o11y-bench stays generic and harness-independent, grading on outcome rather than method.&lt;/p&gt;
&lt;h2 id="the-evaluation-loop"&gt;The evaluation loop&lt;/h2&gt;
&lt;p&gt;Yas&amp;rsquo;s blog post (the first engineering post on Grafana&amp;rsquo;s new community &lt;em&gt;Unprompted&lt;/em&gt; blog) and our GrafanaCON talk both center on the &lt;strong&gt;evaluation loop&lt;/strong&gt;: measure → make changes (new tools, prompt tweaks, bug fixes) → measure again. The crucial bit is that the loop can be driven by a coding agent — via an &lt;code&gt;LLM Spec Improve&lt;/code&gt; skill — because you can&amp;rsquo;t unit-test natural-language &amp;ldquo;programming&amp;rdquo; the way you test code. There&amp;rsquo;s no clean relationship between the instructions you write and what the model does, so the only way to know the impact of a change is to run the loop.&lt;/p&gt;
&lt;h2 id="where-its-going"&gt;Where it&amp;rsquo;s going&lt;/h2&gt;
&lt;p&gt;We closed on open questions and wishes: higher environment fidelity, more and harder tasks (very likely an o11y-bench 2.0), and getting more contributors — including PMs writing evals to capture desired product behaviour. I floated a k6-extension-style community model for evaluators, and using o11y-bench to support &lt;strong&gt;bring-your-own-model&lt;/strong&gt;, so users can see exactly where a smaller or local model falls short instead of assuming Assistant is broken. Yas&amp;rsquo;s industry hope is the neat one: if labs tune their models against o11y-bench, observability and Grafana performance improve across the board — free fine-tuning out of the box.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;Introducing o11y-bench: an open benchmark for observability agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/o11y-bench"&gt;o11y-bench on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/engineering/demystifying-evals"&gt;Anthropic: Demystifying evals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.grafana.com"&gt;Grafana Community Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-reading"&gt;Related reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;My Context Horizon piece: &lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="more-from-the-context-window"&gt;More from The Context Window&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260603-context-window-04-cli-mcp/"&gt;#04: CLI and MCP Basics for AI Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/"&gt;#03: All About AI Observability&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Hey everyone. Welcome to another episode of The Context Window. This is a semi-regular podcast — we try to make it every month — and it&amp;rsquo;s all about the things going on with AI at Grafana. Usually this is live, and you might think looking at this that it&amp;rsquo;s live, but it&amp;rsquo;s actually prerecorded, because Yas has a busy schedule ahead and I wanted to get him on here before he left. So hi, I&amp;rsquo;m Nicole van der Hoeven, a senior developer advocate at Grafana Labs, and I&amp;rsquo;m assigned to the AI team these days. And one of the people on the AI team is — this person over here. How do you say your last name, actually?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Oh, it&amp;rsquo;s Ekinci.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Ekinci. I was totally confused because I just found out you speak Dutch. Did not know that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;m based in Belgium, and I was like, &amp;ldquo;Nicole van der Hoeven&amp;rdquo; — okay, that sounds familiar enough to me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Yeah, it&amp;rsquo;s the name of my ex-husband, but it&amp;rsquo;s okay, we still like him. So tell us what you do on the AI team.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;m an engineer on the AI team — I&amp;rsquo;m getting to five years at Grafana next week. When I joined, this was pre-AI; we had the machine learning team building predictive models, forecasting, that kind of stuff. As the AI wave came, we all got absorbed into this newer, larger AI department. It&amp;rsquo;s been quite varied — the assistant, the AI agent inside Grafana — but especially the latter half of this year I&amp;rsquo;ve been more and more focused specifically on evals: how do we figure out the quality and reliability of these things we&amp;rsquo;re deploying?&lt;/p&gt;
&lt;p&gt;AI is a very useful tool. It has utility — it&amp;rsquo;s not like NFTs. We use it day to day. My job has changed drastically over the last two years. But you still notice it needs guidance and sometimes has reliability issues. The trend is that the guidance has come down — a year or two ago I&amp;rsquo;d steer an agent 50, 60, 70 times in a session; now it&amp;rsquo;s more like five or ten. But you still need to do it. If you just blindly vibe-code your way out of this, you&amp;rsquo;re not going to end up in a good place.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
It moves so quickly. Whenever someone tells me they tried AI and it didn&amp;rsquo;t do what they wanted, I ask, &amp;ldquo;Well, when was that?&amp;rdquo; Because if it was six months ago — try it again. In this episode we&amp;rsquo;ll talk all about evals, but first, some announcements. Assistant is now available for OSS and self-hosted Grafana, and I made a video showing how to do that. There&amp;rsquo;s also a new Medium blog for Grafana Labs called &lt;em&gt;Unprompted&lt;/em&gt; — a community-focused blog — and Yas wrote the first engineering post, about building an evaluation loop. And we&amp;rsquo;ve started AI weekly videos: the AI team has a weekly meeting, Mat Ryer had the idea to publish excerpts, usually the demo part. Just be warned we demo things that may never make it to production — you&amp;rsquo;re getting it raw, warts and all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I need to make sure I don&amp;rsquo;t wear my PJs anymore for the AI weekly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
A bit of quick AI news: Warp is now open source. There are new models — GPT-5.5, Gemini 3.1 Ultra with a two-million-token context window, Anthropic&amp;rsquo;s Claude Mythos security preview. And there&amp;rsquo;s a great article by Matt Shumer called &amp;ldquo;Something Big Is Happening,&amp;rdquo; where he says, &amp;ldquo;I am no longer needed for the actual technical work of my job&amp;rdquo; — which hits hard — and advises leaning into what&amp;rsquo;s hardest to replace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
It&amp;rsquo;s still that guidance thing — you need a human in the loop to guide it. But if you ask me how much code I&amp;rsquo;ve manually written lately, the actual technical piece is very close to zero. We&amp;rsquo;ll talk about how that&amp;rsquo;s different for evals, because evals don&amp;rsquo;t work as well as coding does there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So why is it so hard to trust AI? Why don&amp;rsquo;t we just YOLO it and accept everything?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
A mix of things. Everybody knows these models are non-deterministic and not perfect — these aren&amp;rsquo;t new problems; underneath it&amp;rsquo;s all machine learning, numbers and math and stats. Every time you talk to it you might get a slightly different response. The second part is it writes &lt;em&gt;a lot&lt;/em&gt; of code. You can 10x your output — send ten agents at ten different features and launch all those PRs — but then someone needs to review them, and the PRs are typically big and over-engineered. One thing I always do at the end of a piece of work is ask it to find a simpler way and simplify. Bigger PRs plus so many changes makes it hard to keep a mental model of the whole thing. And interestingly, I&amp;rsquo;ll use AI to help review a PR — which gets you back to the same problem: if you use AI to review the AI, how much can you trust that?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I like the phrase that developers are becoming shepherds of intent — we&amp;rsquo;re not writing the code so much as making sure the intent is clear and implemented. And this is the difference between process and outcome — what I call the final answer problem. I come from performance testing; I&amp;rsquo;m used to looking at the outcome and asking did it pass or fail. But now, even if the outcome looks right, if the process was wrong I don&amp;rsquo;t trust it. And the reverse too: right process, wrong outcome, something else is broken.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Tests are interesting here, because most of those tests are also AI-generated — and the AI doesn&amp;rsquo;t shy away from just changing the test to make its branch pass. For any branch I review, I still look at all the changes; I won&amp;rsquo;t blindly rubber-stamp. That&amp;rsquo;s probably the biggest bottleneck right now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
One approach to trusting AI is human evaluation — thumbs up/thumbs down, or something like LMArena where you compare two answers blind. Useful, but not scalable; you can&amp;rsquo;t run it in CI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
On the eval side they&amp;rsquo;re all complementary. So, what &lt;em&gt;is&lt;/em&gt; an eval? It&amp;rsquo;s testing whether the AI agent behaves like you want. A simple one: ask &amp;ldquo;who are you?&amp;rdquo; and expect &amp;ldquo;I&amp;rsquo;m Grafana Assistant.&amp;rdquo; There are much more complicated ones around querying and dashboarding. At its core, an eval is how you figure out if the agent is any good — and the reason we do it is so that when we make changes, we know if it&amp;rsquo;s better. Answer that with confidence and you have a path to improve consistently over time.&lt;/p&gt;
&lt;p&gt;We split into online and offline. Online — we recently launched AI observability for agents — is about measuring how the deployed agent does against real production conversations from real users. Valuable, because you get a score based on real behaviour, but hard to verify; we typically use an LLM as a judge, so it&amp;rsquo;s not as robust. Offline is used more during development, in CI — much more controlled. You have a golden set of evals covering the behaviour you expect in production, and because you always test the same set, you can see whether changes make it better, and dig into PromQL vs LogQL, or dashboarding. Online is a great pulse check — it can catch quality dropping when Anthropic swaps a model — but it only tests the deployed variant. Offline can test all your changes, your implementation, and all your prompts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
It took me a while to translate these, because the testing industry already has this — we call it pre-prod and production testing. Pre-prod is everything from unit to system integration testing in dev and staging; you can really hammer the thing. Production you have to be more careful — synthetic monitoring, real user monitoring — same idea with an AI flavour.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Definitely. Online is much more like traditional observability — you&amp;rsquo;re observing a system that happens to be powered by AI, turning natural language into a number you track over time and alert on. Offline is closer to an integration test: you give it a task, it runs the whole agent against a real environment, you get something out, and then separately you grade that outcome.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
We did an AI observability episode without you — you were at GrafanaCON — so I&amp;rsquo;ll link that. Let&amp;rsquo;s talk more about offline evals, since we haven&amp;rsquo;t covered those.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Offline is a bit of a beast. There&amp;rsquo;s a good Anthropic post called &amp;ldquo;Demystifying evals.&amp;rdquo; Back when we had simple single-turn LLM calls — incident summary was one of the first — the prompt was &amp;ldquo;here&amp;rsquo;s the context of the incident, summarize this,&amp;rdquo; and grading checked readability, completeness, appropriate length. Easy enough to set up. Agents get more complicated, because every time you run a task the agent can take very different trajectories — five steps one time, seven the next. The agent plus its tools is roughly the harness; it runs against an environment — a real Grafana with data sources, a certain alert and dashboard state — and keeps interacting using the tools until it&amp;rsquo;s done. Then we take the whole transcript and grade it with graders, sometimes called verifiers, to verify it actually got the task right.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So how do you do it for Assistant, given how broad that environment is?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
We have the public benchmark we released recently and our internal evals — same approach, different number of tasks and some different data sources. We want an environment as real as possible, but with the tension that we also need to control it so a benchmark is reproducible. If two people run it and get different scores, which one was right? We started, like everybody, with manual tests — listing data sources to confirm a tool is wired up, some CPU questions, showing logs — with a human as the judge. That&amp;rsquo;s fine at four or five scenarios; you can&amp;rsquo;t do it as a human at 500. Assistant is a front-end plugin — some tools run in your browser, which is good for auth and security but makes testing hard — so we use Playwright to replicate real behaviour and pull the telemetry out. The internal eval tool is a CLI we call LLM Spec, and it can run against cloud instances or a local controlled environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Before the environment — did you consider using k6 instead of Playwright?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Interesting — yes and no. k6 is also a tool the assistant needs to use, but our goal isn&amp;rsquo;t to load test; it&amp;rsquo;s to hook into the plugin and get the messages and telemetry out, so we have a Playwright harness.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
There&amp;rsquo;s actually a browser module for k6 going towards feature parity with Playwright.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I did not know that. Might be interesting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Just dogfood all the things. I&amp;rsquo;d love to work with you on that. Okay, the environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
We test against cloud instances — for incidents especially, it&amp;rsquo;s a lot of data. And we run LLM Spec against a local controlled environment, which is quite similar to the open benchmark we published.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
You&amp;rsquo;ve mentioned o11y-bench — the benchmark announced at the last GrafanaCON. That was fast.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
o11y-bench has tasks across six categories — dashboarding, investigation, logs, metrics, traces. We wanted to bring our internal approaches outward, and it was a learning opportunity: we used a framework called Harbor, also used by the makers of terminal-bench. The nice thing is it separates harness from environment from tasks — so the default harness is a simple system prompt plus the Grafana MCP, but the folks working on GCX run Claude Code plus GCX against o11y-bench and compare GCX with MCP. There&amp;rsquo;s a leaderboard with a bunch of models, including open ones like Qwen 3.6 and Kimi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
They&amp;rsquo;re getting good. Qwen 3.6 is awesome — not top five, but for an open-weight model, impressive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
And this is the interesting part: sort on pass@3 and it looks different from pass^3. pass@3 runs each task three times and passes if it gets it right one out of three — rough capability. pass^3 means you need three out of three on every task — reliably solving it, not just getting lucky once. You see 10–20% differences between the two scores.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
That&amp;rsquo;s awesome. And this is public, right?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Yep — the repo&amp;rsquo;s on GitHub with all the tasks. We run o11y-bench against a synthetic environment — a Prometheus, Loki, and Tempo in Docker — and we generate the data, so every run uses the same data and we know what the answer should be before we even run it. We also do fact-based rubrics: separately from what the agent does, the grading side runs its own known-good queries against the environment and checks whether the agent&amp;rsquo;s answer matches. That matters because these agents fail in subtle ways. We once made a change to the Tempo tool that broke the spans — the agent got no spans but still answered, fairly realistically, from metadata. Without testing for it you&amp;rsquo;d never catch it; the text looked plausible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
That&amp;rsquo;s exactly process versus outcome. If the answer were negative two seconds it&amp;rsquo;s obviously wrong, but a plausible answer is the dangerous one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Exactly, and that happens a lot.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
An early Assistant once told me it created a dashboard, and it didn&amp;rsquo;t look right — turned out it couldn&amp;rsquo;t find the data source so it just used dummy data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Same thing happened to me locally — I broke all the tools, and it still came up with tool calls it couldn&amp;rsquo;t execute because of rough instructions in the system prompt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So what&amp;rsquo;s missing in o11y-bench that means you still need an internal one?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Two levels. First, some scenarios are based on real conversations or our own internal environments — anything involving private data can&amp;rsquo;t go public. Second, there are very Assistant-specific things we want to test — Slack, for instance, has its own version of markdown that looks like markdown but isn&amp;rsquo;t, and early Slack Assistant struggled to write it consistently, so we wrote tests for that. The internal set is a superset; the public set is still part of it. The public set is generic observability tasks — asking questions about your data, dashboarding, basic Grafana API checks — and because the harness is independent, we can test GCX, MCP, our assistant, or any other agent against it, grading on the outcome rather than how it was solved.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
We talked about your blog post — let&amp;rsquo;s define the evaluation loop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
At its core: measure the current state, see where it works and where it doesn&amp;rsquo;t, make changes — a new tool, tool instructions, the system prompt, bug fixes — then measure again, and again. The key is that loop can be driven by a coding agent, not us manually. If your evals are robust enough to pass a clean feedback signal back, the agent can keep improving until it hits 100%, and then you make harder tasks or increase coverage. At scale it&amp;rsquo;s nearly impossible for one human to understand the whole system and make targeted improvements, because an agent isn&amp;rsquo;t programmed as code — it&amp;rsquo;s programmed with natural language, and there&amp;rsquo;s no clear relationship between the instructions and what the model does. The only way to probe that is to run a bunch of these loops.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Is the loop equally implemented for o11y-bench and LLM Spec?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
It&amp;rsquo;s implemented internally. o11y-bench is really just the measurement part — we&amp;rsquo;ve used it for GCX and MCP, but more manually. In LLM Spec we have an &lt;code&gt;LLM Spec Improve&lt;/code&gt; skill — you pick the agent, and it runs measure-improve-measure-improve.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Where are you going next — no promises?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;ve done a lot on the harnesses — the Playwright stuff, and there was an LLM Spec 1.0, then a 2.0 revamp for speed and robustness, then o11y-bench, and the learnings from that went into what I&amp;rsquo;d call LLM Spec 3.0. The two big challenges now are environment fidelity — more an issue for internal evals — and the number and quality of tasks: how do we cover more of Grafana? We weren&amp;rsquo;t sure o11y-bench would be a recurring thing, but there&amp;rsquo;s a lot of interest, so we&amp;rsquo;ll probably do an o11y-bench 2.0. And I want more people contributing — I was talking at the PM all-hands about getting product managers to write evals, because the tasks capture desired behaviour: when someone asks about my product, how should the agent ideally respond?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
What I&amp;rsquo;d love is something like the k6 extension model applied to evaluators. When Grafana acquired k6 — I was on k6 — k6 had extensions and modules, and we got a lot of cool community extensions. I think evaluators would be the same. After my Madrid talk, all the questions about the evaluator section were &amp;ldquo;can we add this, can we add that, why isn&amp;rsquo;t this in the template?&amp;rdquo; — and it could be.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
It would be nice to do that across both o11y-bench and the internal ones — there are open questions on making them work together; internally we&amp;rsquo;re in Go, o11y-bench is on Harbor in Python, but the tasks and most verifiers are language-independent by design. A fourth thing is getting to a better golden set over time — we haven&amp;rsquo;t yet automated going from real AI-observability conversations to verifiable offline tasks. As the product changes, your tasks might not stay relevant — imagine k6 didn&amp;rsquo;t exist and now people ask Assistant about k6. Bridging online and offline in a more automated way would be the fourth big thing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I also have a wish for o11y-bench beyond being a benchmark — with no internal knowledge and no promises: it could be a step toward making Assistant bring-your-own-model. One barrier is that people try Assistant with a tiny local model and conclude it doesn&amp;rsquo;t work, when really you need certain models. A standardized way to measure that and show users where their model falls short — versus where the latest Opus sits on the leaderboard — lets them make an informed decision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;d go beyond Assistant — we&amp;rsquo;ve got GCX and MCP too. If you want to use your own models with them, the benchmark should reflect, for observability tasks, which are the best models and the best &lt;em&gt;open&lt;/em&gt; models. It gets to your point: people can make a more informed decision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Where are we still missing things as an industry, not just as a company?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Just recently a new benchmark called DeepSWE was released, and it&amp;rsquo;s a bit controversial because it flips the ranking from the most popular software-engineering benchmark — where Opus was always leading, here GPT-5.5 leads by a margin. So there&amp;rsquo;s something to be said about the reliability of the benchmarks themselves, since labs test and sometimes tune their models against them. That might actually be good for o11y-bench — I&amp;rsquo;d &lt;em&gt;want&lt;/em&gt; a lab to tune against it, so we get free fine-tuning out of the box: as newer models use o11y-bench to tune on observability tasks, they get better at using Grafana and solving observability problems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Thank you — we just hit time. It was really informative, and I&amp;rsquo;m glad we both found time; this got rescheduled for various reasons. A great overview of all the evals we&amp;rsquo;re doing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Thanks — it&amp;rsquo;s nice to step out of the day-to-day and talk about this stuff.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
And if you&amp;rsquo;re watching, leave any eval questions in the comments and I&amp;rsquo;ll bug Yas to answer them. Thanks everyone for watching.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Bye.&lt;/p&gt;</description></item><item><title>OpenTelemetry's Graduation: What It Took (Grafana ❤️🔥 OpenTelemetry Community Call #8)</title><link>https://nicolevanderhoeven.com/blog/20260622-gocc08-opentelemetry-graduation/</link><pubDate>Mon, 22 Jun 2026 16:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260622-gocc08-opentelemetry-graduation/</guid><description>&lt;p&gt;OpenTelemetry graduated from the CNCF — so for this community call I gathered a panel of people who were in the room for it to talk about what graduation actually &lt;em&gt;means&lt;/em&gt;, what it took to get there, and where the project goes next. We covered the roughly two-year road to graduation, why semantic conventions are so genuinely hard, the state of the signals (traces, metrics, logs — and the newer profiles), AI&amp;rsquo;s double-edged impact on the project, and the most practical ways for new contributors to get involved.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/P9CfVEGwcgo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="what-we-covered"&gt;What we covered&lt;/h2&gt;
&lt;h3 id="-what-graduation-actually-took"&gt;🎓 What graduation actually took&lt;/h3&gt;
&lt;p&gt;Graduation from the CNCF took about two years, with OTel evaluated on traces, metrics, and logs across the major server-side languages. Profiling, mobile, and other newer signals were explicitly out of scope for the graduation criteria. One of the most concrete pieces of CNCF feedback: stop camping on &lt;code&gt;0.x&lt;/code&gt; versions for components that are actually production-ready. The fix is to mark maintained, stable packages as &lt;code&gt;1.0&lt;/code&gt; (reserving &lt;code&gt;2.0&lt;/code&gt; for future breaking changes) — which unblocks the enterprises that simply aren&amp;rsquo;t allowed to ship anything still labeled &amp;ldquo;beta.&amp;rdquo;&lt;/p&gt;
&lt;h3 id="-documentation-thats-actually-findable"&gt;📚 Documentation that&amp;rsquo;s actually findable&lt;/h3&gt;
&lt;p&gt;A recurring theme was that the documentation bar isn&amp;rsquo;t just &amp;ldquo;does it exist&amp;rdquo; — it&amp;rsquo;s &amp;ldquo;can someone find it.&amp;rdquo; Collector component docs are spread across 100+ GitHub repos, which makes discovery painful. The stopgap is an auto-updated component list with metadata on the OpenTelemetry website that links out to the relevant READMEs; the longer-term answer is the &lt;strong&gt;Ecosystem Explorer&lt;/strong&gt; project, which aims to unify instrumentation details, versioning, and component metadata in one place.&lt;/p&gt;
&lt;h3 id="-why-semantic-conventions-are-so-hard"&gt;🏷️ Why semantic conventions are so hard&lt;/h3&gt;
&lt;p&gt;Semantic conventions define normalized attribute names so that the same event — say, an HTTP request — looks identical no matter the language or library that produced it. The naming debates are slow for real reasons: the database SIG took over a year to stabilize a single set of attributes. The process is propose names → check them against all the major databases → build a proof-of-concept in three or more languages → iterate. A name that&amp;rsquo;s obvious for one database may not even exist as a concept in another. (OTel itself is the product of merging OpenTracing, OpenCensus, and Elastic Common Schema — and yes, the name was chosen specifically because it&amp;rsquo;s boring and self-describing. Everything is named what it does.)&lt;/p&gt;
&lt;h3 id="-signals-baggage-and-stability"&gt;🧳 Signals, baggage, and stability&lt;/h3&gt;
&lt;p&gt;All three original signals — traces, metrics, and logs — are now stable, and that includes &lt;strong&gt;baggage&lt;/strong&gt;: a context-propagation mechanism that carries a small &amp;ldquo;bag&amp;rdquo; of attributes (trace ID, span ID, and more) across network hops. It was originally built for tracing but designed to be reusable for other cross-cutting concerns like security and feature flags, and it sat largely unused while the rest of OTel was being finished. &lt;strong&gt;Profiles&lt;/strong&gt;, meanwhile, hit alpha at KubeCon in March and are treated as a bonus on top of the graduation baseline rather than part of it.&lt;/p&gt;
&lt;h3 id="-ais-impact-on-opentelemetry--the-good-and-the-painful"&gt;🤖 AI&amp;rsquo;s impact on OpenTelemetry — the good and the painful&lt;/h3&gt;
&lt;p&gt;The good: the explosion of GenAI and agentic systems is creating real demand for OTel-style observability. The Gen AI SIG is growing fast to standardize telemetry for AI systems, and there&amp;rsquo;s a whole crop of AI-observability startups building on OpenTelemetry. Maintainers are also using AI coding tools to move faster — the &lt;strong&gt;Weaver&lt;/strong&gt; tool is being developed to constrain the problem space so AI-generated instrumentation code is more accurate, with the goal of going from spec to implementation with coding tools.&lt;/p&gt;
&lt;p&gt;The painful: a massive influx of low-quality, AI-generated PRs across all of open source. Some are genuinely malicious (bot accounts farming credibility for supply-chain attacks); others are just thoughtless. One proposed mitigation is to cap the number of open PRs per contributor without merge rights to something like three to five.&lt;/p&gt;
&lt;h3 id="-post-graduation-priorities-and-how-to-get-involved"&gt;🚀 Post-graduation priorities and how to get involved&lt;/h3&gt;
&lt;p&gt;The post-graduation backlog (&amp;ldquo;postgrad app&amp;rdquo;) focuses on stability cleanup, easier deployment, and self-observability. The deployment north star is something close to &lt;code&gt;apt-get install opentelemetry&lt;/code&gt; that auto-instruments everything — including outside Kubernetes. New stable YAML-based collector config lets operators manage all languages from a single file, and the &lt;strong&gt;Blueprint&lt;/strong&gt; project pairs a specific challenge with OTel guidelines and concrete implementation steps.&lt;/p&gt;
&lt;p&gt;If you want in, the panel was refreshingly practical about the fastest path to approver/maintainer status:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Review other people&amp;rsquo;s PRs&lt;/strong&gt; in your subject area.&lt;/li&gt;
&lt;li&gt;Ask maintainers &lt;em&gt;&amp;ldquo;what can I take off your plate?&amp;rdquo;&lt;/em&gt; rather than only filing your own issues.&lt;/li&gt;
&lt;li&gt;Quality over quantity — AI-heavy contributions you can&amp;rsquo;t explain won&amp;rsquo;t earn status.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Localization&lt;/strong&gt; is one of the easiest entry points; around ten language teams are active and docs translation is always welcome.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also went around the panel on how everyone &lt;em&gt;got&lt;/em&gt; started — from debugging giant distributed systems, to a beginner-questions live stream, to Elastic Common Schema work, to copy-editing PRs as a former librarian. The throughline: pick a small, real thing, do it well, and document your learning journey as you go.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opentelemetry.io/docs/"&gt;OpenTelemetry documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/open-telemetry/community"&gt;OpenTelemetry community &amp;amp; SIGs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cncf.io/"&gt;CNCF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/OpenTelemetry"&gt;My notes on OpenTelemetry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to the panel — &lt;strong&gt;Ted Young&lt;/strong&gt;, &lt;strong&gt;Marylia Gutierrez&lt;/strong&gt;, &lt;strong&gt;Imma Valls&lt;/strong&gt;, &lt;strong&gt;Tiffany Hrabusa&lt;/strong&gt;, and &lt;strong&gt;Tiffany Jernigan&lt;/strong&gt; — for joining, and to everyone who showed up live with questions.&lt;/p&gt;</description></item><item><title>CLI and MCP Basics for AI Agents (The Context Window #04)</title><link>https://nicolevanderhoeven.com/blog/20260603-context-window-04-cli-mcp/</link><pubDate>Wed, 03 Jun 2026 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260603-context-window-04-cli-mcp/</guid><description>&lt;p&gt;MCP vs CLI: which one should your AI agent actually use? In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I&amp;rsquo;m joined by &lt;a href="https://www.linkedin.com/in/tiffanyjerniganm/"&gt;Tiffany Jernigan&lt;/a&gt; and three of the engineers and PMs behind Grafana&amp;rsquo;s agent tooling: Ben Sully (who wrote the Grafana MCP server), and Ward Bekker and Dafydd Thomas from the team building &lt;code&gt;gcx&lt;/code&gt;. We get into the two main ways an AI agent can reach the outside world — the Model Context Protocol (MCP) and good old command-line interfaces — and look at when each one makes sense, the tradeoffs around context windows, tool sprawl, token cost, and reliability. We walk through Grafana&amp;rsquo;s cloud and open-source MCP servers along with &lt;code&gt;gcx&lt;/code&gt;, the Grafana Cloud CLI built for agents, do a live side-by-side demo of both creating an SLO, and talk about how we benchmark them against each other with o11y-bench.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZR6U4TN8-Cw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="timestamps"&gt;Timestamps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;00:00:00 — Introductions&lt;/li&gt;
&lt;li&gt;00:02:49 — The last month in AI news&lt;/li&gt;
&lt;li&gt;00:10:19 — What is Grafana Assistant?&lt;/li&gt;
&lt;li&gt;00:12:30 — What does it mean for Assistant to use tools?&lt;/li&gt;
&lt;li&gt;00:13:30 — What is MCP?&lt;/li&gt;
&lt;li&gt;00:16:56 — What is a CLI in an AI context?&lt;/li&gt;
&lt;li&gt;00:19:17 — What are skills?&lt;/li&gt;
&lt;li&gt;00:24:37 — Can you use a custom MCP server with Grafana Assistant?&lt;/li&gt;
&lt;li&gt;00:25:55 — Why team MCP?&lt;/li&gt;
&lt;li&gt;00:28:22 — The context-window cost of MCP tool definitions&lt;/li&gt;
&lt;li&gt;00:31:50 — Tool discoverability&lt;/li&gt;
&lt;li&gt;00:39:25 — What is gcx, and why a CLI?&lt;/li&gt;
&lt;li&gt;00:46:13 — Demo: creating an SLO with MCP vs gcx&lt;/li&gt;
&lt;li&gt;00:52:58 — Benchmarking MCP vs gcx with o11y-bench&lt;/li&gt;
&lt;li&gt;00:58:10 — How MCP and gcx relate to Grafana Assistant&lt;/li&gt;
&lt;li&gt;01:02:35 — k6 MCP vs Grafana MCP&lt;/li&gt;
&lt;li&gt;01:03:00 — When to use which (decision guide)&lt;/li&gt;
&lt;li&gt;01:04:29 — Adding the OSS Grafana MCP to Assistant&lt;/li&gt;
&lt;li&gt;01:05:41 — Turtles all the way down&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;h3 id="mcp-and-cli-for-agents"&gt;MCP and CLI for agents&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io"&gt;Model Context Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/mcp-grafana"&gt;Grafana MCP server (OSS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/gcx"&gt;gcx — the Grafana Cloud CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;Introducing o11y-bench: an open benchmark for observability agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.grafana.com"&gt;Grafana Community Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-reading"&gt;Related reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;My Context Horizon piece: &lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="more-from-the-context-window"&gt;More from The Context Window&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/"&gt;#03: All About AI Observability&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Grafana Campfire 🔥 — GrafanaCON 2026 recap</title><link>https://nicolevanderhoeven.com/blog/20260528-grafana-campfire-grafanacon-2026-recap/</link><pubDate>Thu, 28 May 2026 17:45:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260528-grafana-campfire-grafanacon-2026-recap/</guid><description>&lt;p&gt;I co-hosted this month&amp;rsquo;s &lt;a href="https://www.youtube.com/watch?v=6qYCSBT3yU4"&gt;Grafana Campfire&lt;/a&gt; with &lt;a href="https://www.linkedin.com/in/stephaniehingtgen/"&gt;Stephanie Hingtgen&lt;/a&gt;, where we recapped everything that came out of GrafanaCON 2026. Stephanie owned the Grafana 13 walkthrough — Git Sync GA, Dynamic Dashboards GA, Dashboards API v2 GA, Grafana Advisor GA, SCIM GA — what she described as &lt;em&gt;the year Grafana stopped being beta in production&lt;/em&gt;. I covered the AI section (Grafana Assistant now in OSS and Enterprise, the three scaling challenges from &amp;ldquo;Scaling Grafana Assistant&amp;rdquo;, Investigations, Skills going GA), the three-teams-one-architecture push across Loki Thor, Mimir 3.0, and Pyroscope 2.0, the OTel + Alloy roadmap, alerting, k6 v2.0, and the Marketplace and Logline.&lt;/p&gt;
&lt;p&gt;We also took questions from the Champions community on the pace of UI change, Mimir Alertmanager, and the agent-scale question — &lt;em&gt;what happens when your AI agents are themselves the noisiest users of your observability stack?&lt;/em&gt; — and threw in a flavour break about the &lt;a href="https://github.com/grafana/tamagrotchi"&gt;TamaGROTchi&lt;/a&gt; and the ocean digital twin demo.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/6qYCSBT3yU4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/grafanacon-2026-announcements/?pg=blog&amp;amp;plcmt=featured"&gt;GrafanaCON 2026 announcements blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/stephaniehingtgen/"&gt;Stephanie Hingtgen on LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics: Observability for AI (ExpoQA Madrid 2026)</title><link>https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/</link><pubDate>Tue, 26 May 2026 10:00:00 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/</guid><description>&lt;p&gt;This week I gave the opening keynote at &lt;a href="https://expoqa.eu/events/cd1-t1-kn2/"&gt;ExpoQA Madrid 2026&lt;/a&gt; in Madrid, Spain. I presented a talk called &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Observability for AI&lt;/em&gt;, which I had previously given at &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU 2025&lt;/a&gt; in London, at &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; in Utrecht, and at &lt;a href="https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/"&gt;Newcrafts&lt;/a&gt; in Paris. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A robot may not harm humans. A robot must obey humans. A robot must protect its own existence. These are Isaac Asimov&amp;rsquo;s three Laws of Robotics, created to govern the ethical programming of artificial intelligences. From the Butlerian Jihad to Skynet to cylons, we&amp;rsquo;ve been immortalizing our collective nightmares about artificial intelligence for years. But there&amp;rsquo;s an unmentioned law that comes as a prerequisite to all of that: a robot must be observable.&lt;/p&gt;
&lt;p&gt;In this talk, I discuss the different types of AI, the factors that make observing AI different from observing applications, and the telemetry signals specific to AI that we might want to listen to. How do we deal with large data sets? How do we observe for model drift? How do we take into account the costs of LLMs? How can we use distributed tracing to follow event sequences? Part cautionary tale and part technical demo, this talk shows how to instrument and monitor AI apps using OpenTelemetry, Prometheus, OpenLit, and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was a keynote slot at a testing-focused audience, which gave me the chance to lean more into the &lt;em&gt;evals vs. observability&lt;/em&gt; framing — what evals can and can&amp;rsquo;t tell you about an AI system in production, and how distributed tracing fills the gap that benchmarks leave behind. The demo app (a Flask-based &amp;ldquo;play.py&amp;rdquo; instrumented with OpenTelemetry, flowing into Tempo for traces, Prometheus for metrics, and Loki for logs) is still on &lt;a href="https://nicole.to/asimov"&gt;GitHub&lt;/a&gt;, and I&amp;rsquo;ve been refining it with each iteration.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the recording of the talk:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/06Uus-llIBg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicole.to/asimov"&gt;Demo app on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Zero to Dashboard with Grafana Assistant and the Infinity datasource plugin</title><link>https://nicolevanderhoeven.com/blog/20260522-zero-to-dashboard-infinity-assistant/</link><pubDate>Fri, 22 May 2026 17:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260522-zero-to-dashboard-infinity-assistant/</guid><description>&lt;p&gt;What if you didn&amp;rsquo;t have to write a single query to get a useful dashboard?&lt;/p&gt;
&lt;p&gt;In this short video, I go from nothing to a working dashboard in a few minutes — no queries — using &lt;a href="https://grafana.com/products/cloud/ai-tools/"&gt;Grafana Assistant&lt;/a&gt; and the &lt;a href="https://grafana.com/docs/plugins/yesoreyeram-infinity-datasource/"&gt;Infinity datasource plugin&lt;/a&gt;. The data I&amp;rsquo;m visualising is the &lt;a href="https://rawg.io/apidocs"&gt;RAWG video game database API&lt;/a&gt;, so I end up with a dashboard that helps me decide what to play next.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/X3TZk_qywlo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="why-infinity-is-fun-here"&gt;Why Infinity is fun here&lt;/h2&gt;
&lt;p&gt;Most Grafana data sources are scoped to a specific kind of backend — Prometheus, Loki, a SQL database. &lt;strong&gt;Infinity&lt;/strong&gt; is different: it lets you treat &lt;em&gt;any&lt;/em&gt; REST/JSON/CSV/HTML endpoint as a data source. That means anything with an API can become a dashboard, which is exactly the right shape for goofing around with a games API on a Friday afternoon.&lt;/p&gt;
&lt;p&gt;Pair Infinity with Assistant and you don&amp;rsquo;t even have to know what queries to write — Assistant configures the data source, asks the API the right questions, and builds the panels for you.&lt;/p&gt;
&lt;h2 id="timestamps"&gt;Timestamps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;00:00 — Intro&lt;/li&gt;
&lt;li&gt;00:35 — The RAWG video game database&lt;/li&gt;
&lt;li&gt;01:01 — Setting up the Infinity datasource&lt;/li&gt;
&lt;li&gt;05:10 — Customising the dashboard with Assistant&lt;/li&gt;
&lt;li&gt;09:31 — Closing thoughts&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/use-ai-to-turn-any-api-into-a-grafana-dashboard/"&gt;Step-by-step blog post: using Assistant with the Infinity datasource&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/alerting-and-irm/machine-learning/assistant/"&gt;Grafana Assistant documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/plugins/yesoreyeram-infinity-datasource/"&gt;Infinity datasource plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rawg.io/apidocs"&gt;RAWG video game database API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/g/cloud"&gt;Get started with Grafana Cloud (free tier)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;My notes on Grafana Assistant&lt;/a&gt; — everything I&amp;rsquo;m learning as I work on it&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Continuous Profiling, the OpenTelemetry Way (Grafana ❤️🔥 OpenTelemetry Community Call #7)</title><link>https://nicolevanderhoeven.com/blog/20260518-gocc07-continuous-profiling/</link><pubDate>Mon, 18 May 2026 05:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260518-gocc07-continuous-profiling/</guid><description>&lt;p&gt;In this community call, my coworker &lt;strong&gt;Tiffany Jernigan&lt;/strong&gt; and I sat down with &lt;strong&gt;Christian Simon&lt;/strong&gt;, who works on Grafana Pyroscope, to dig into profiling as the &lt;strong&gt;fourth signal&lt;/strong&gt; in OpenTelemetry. Metrics, logs, and traces are the classic three pillars — but a significant portion of latency lives &lt;em&gt;inside&lt;/em&gt; a span, in the actual code execution, where the other three can&amp;rsquo;t see. Profiling fills that gap by giving you continuous, code-level visibility into where time is being spent.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/N47wy9pp7Lo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="what-we-covered"&gt;What we covered&lt;/h2&gt;
&lt;h3 id="-profiling-as-the-fourth-signal"&gt;🔥 Profiling as the fourth signal&lt;/h3&gt;
&lt;p&gt;Most observability conversations stop at logs, metrics, and traces. But when you see a slow span and ask &lt;em&gt;&amp;ldquo;what was the code actually doing?&amp;rdquo;&lt;/em&gt; — none of the three pillars can answer. Christian made the case that profiling is the missing piece: continuous, low-overhead, code-level visibility, typically visualized as flame graphs that attribute latency to specific functions and execution paths.&lt;/p&gt;
&lt;h3 id="-what-flame-graphs-actually-tell-you"&gt;📊 What flame graphs actually tell you&lt;/h3&gt;
&lt;p&gt;If you haven&amp;rsquo;t worked with flame graphs before: wide bars = lots of time spent in that function, and the stack reads bottom-up. Once you understand how to read them, they become surprisingly fast to interpret. We walked through what to look for and how to spot the patterns that matter.&lt;/p&gt;
&lt;h3 id="-the-current-state-of-profiling-in-opentelemetry"&gt;🌐 The current state of profiling in OpenTelemetry&lt;/h3&gt;
&lt;p&gt;Profiling is the newest signal to enter the OpenTelemetry spec, and the conversation around it is still evolving. Christian gave a clear-eyed status update on where things are — what&amp;rsquo;s stable, what&amp;rsquo;s experimental, and what the path to GA looks like.&lt;/p&gt;
&lt;h3 id="-running-profiling-in-production"&gt;🚀 Running profiling in production&lt;/h3&gt;
&lt;p&gt;The most common pushback on continuous profiling is &lt;em&gt;&amp;ldquo;what&amp;rsquo;s the overhead?&amp;rdquo;&lt;/em&gt; — and the honest answer is that modern continuous profilers typically add 1–3% CPU overhead, which makes them safe to run in production all the time. We talked through deployment patterns, including Kubernetes / containerized environments, and how to think about cost and storage.&lt;/p&gt;
&lt;h3 id="-correlating-profiles-with-traces-and-metrics"&gt;🧵 Correlating profiles with traces and metrics&lt;/h3&gt;
&lt;p&gt;This is where profiling really earns its place. Trace ID → profile is the killer pattern: you see a slow span, you click through to the flame graph for that exact execution, and you immediately see which function ate the time. Christian showed how this correlation works in practice and how it changes incident response.&lt;/p&gt;
&lt;h3 id="-how-to-get-involved"&gt;🤝 How to get involved&lt;/h3&gt;
&lt;p&gt;OpenTelemetry profiling is genuinely an area where the community has room to shape the future. If the conversation sparked something, there&amp;rsquo;s a working group, open issues, and a friendly path in.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/oss/pyroscope/"&gt;Grafana Pyroscope&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/open-telemetry/community/blob/main/projects/profiling.md"&gt;OpenTelemetry Profiling SIG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/pyroscope/latest/"&gt;Pyroscope docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://opentelemetry.io/docs/"&gt;OpenTelemetry documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to Christian for joining, to Tiffany for co-hosting, and to everyone who showed up live with questions.&lt;/p&gt;</description></item><item><title>Grafana k6 Community Call — Secrets Management &amp; AI Script Authoring</title><link>https://nicolevanderhoeven.com/blog/20260430-k6-community-call-secrets-and-ai-script-authoring/</link><pubDate>Thu, 30 Apr 2026 16:30:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260430-k6-community-call-secrets-and-ai-script-authoring/</guid><description>&lt;p&gt;The first k6 Community Call in over a year, and we packed it. I sat down with four of the people building k6 — &lt;strong&gt;Bukola Ayodele&lt;/strong&gt;, &lt;strong&gt;Facundo Batista&lt;/strong&gt; (Software Engineer), &lt;strong&gt;Vicente Ortega&lt;/strong&gt; (Senior Backend Engineer), and &lt;strong&gt;Charlie Burnett&lt;/strong&gt; (Product Manager) — to walk through two new pieces of work that have shipped recently, plus a look at what&amp;rsquo;s coming in k6 v2.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/mYpnaE_J2lM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="what-we-covered"&gt;What we covered&lt;/h2&gt;
&lt;h3 id="-secrets-management-in-k6-cloud-facundo"&gt;🔐 Secrets management in k6 Cloud (Facundo)&lt;/h3&gt;
&lt;p&gt;A new way to store API tokens, passwords, and other sensitive values for your tests — centralized in Grafana&amp;rsquo;s secrets manager, encrypted at rest, and never visible in the UI or API once written. Your scripts reference secrets by name, and at runtime the values are injected and &lt;strong&gt;automatically redacted from logs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Why this matters for load testers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No more hardcoded credentials sitting in scripts or in Git&lt;/li&gt;
&lt;li&gt;Easy rotation — change the secret value, every script that uses it picks up the new value, no script edits needed&lt;/li&gt;
&lt;li&gt;Same script works across dev/staging/prod by just swapping which secrets are scoped to which environment&lt;/li&gt;
&lt;li&gt;Works with k6 OSS locally too — your local runs can pull cloud-managed secrets when you want them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Facundo Batista demoed the full flow: creating a secret in the Grafana Cloud UI (name, description, labels — up to 10 per secret, all write-only), and using it in a script with one line. There&amp;rsquo;s also an API for programmatic management.&lt;/p&gt;
&lt;h3 id="-grafana-assistant-k6-script-authoring-mode-vicente"&gt;🤖 Grafana Assistant k6 script authoring mode (Vicente)&lt;/h3&gt;
&lt;p&gt;This is the AI-powered script generation that&amp;rsquo;s been in the works for a while — fine-tuned specifically for k6 best practices, not a generic &amp;ldquo;ask an LLM to write you a load test&amp;rdquo; workflow. The interesting bit is the &lt;strong&gt;context sources&lt;/strong&gt; Assistant can pull from when generating a script:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A service name&lt;/strong&gt; — Assistant analyzes the existing telemetry data to discover endpoints and shapes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A GitHub repository URL&lt;/strong&gt; — pulls the code to understand the API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An OpenAPI specification&lt;/strong&gt; — generates tests that exercise every endpoint with realistic request shapes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Existing observability data&lt;/strong&gt; — metrics, logs, traces from your actual production traffic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generated scripts come with proper structure, error handling, checks, and &lt;code&gt;TODO&lt;/code&gt; comments where the model genuinely doesn&amp;rsquo;t know what to write (e.g. for auth tokens, request bodies, or anything that needs your secrets — by design, Assistant won&amp;rsquo;t fabricate those). You can also point it at an existing script and ask it to refactor or extend.&lt;/p&gt;
&lt;h3 id="-k6-v2-charlie"&gt;🚀 k6 v2 (Charlie)&lt;/h3&gt;
&lt;p&gt;Release candidate 1 is out, GA is &lt;em&gt;very&lt;/em&gt; soon. The headline changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensions marketplace&lt;/strong&gt; — community protocols and integrations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enhanced Playwright browser support&lt;/strong&gt; with compatible syntax&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New assertions library&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP / agent connectivity&lt;/strong&gt; for AI-driven workflows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS, MQTT, and other network protocols&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Migration advice from Charlie Burnett: pin your script versions, test your existing scripts against the RC before GA hits, and don&amp;rsquo;t rush.&lt;/p&gt;
&lt;h3 id="-whats-next-on-the-ai-roadmap-next-12-months"&gt;🔮 What&amp;rsquo;s next on the AI roadmap (next 1–2 months)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Visual browser-based testing experience&lt;/li&gt;
&lt;li&gt;Enhanced observability workflow automation&lt;/li&gt;
&lt;li&gt;Improved user-journey creation across both personal and enterprise apps&lt;/li&gt;
&lt;li&gt;Integration with autonomous monitoring systems&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/k6/"&gt;k6 documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/grafana-assistant/"&gt;Grafana Assistant docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/k6/releases"&gt;k6 v2 release candidate&lt;/a&gt; (GA very soon)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/k6/secrets/"&gt;Secrets management in k6 Cloud&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-context-horizon-pieces"&gt;Related Context Horizon pieces&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;&lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/high-int-low-wis-what-llm-benchmarks"&gt;&lt;em&gt;High INT, Low WIS — what LLM benchmarks miss&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to Bukola, Facundo, Vicente, and Charlie for joining, and to everyone who showed up live.&lt;/p&gt;</description></item><item><title>High INT, Low WIS: What LLM Benchmarks Miss</title><link>https://nicolevanderhoeven.com/blog/20260423-high-int-low-wis-llm-benchmarks/</link><pubDate>Thu, 23 Apr 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260423-high-int-low-wis-llm-benchmarks/</guid><description>&lt;p&gt;Originally posted &lt;a href="https://contexthorizon.substack.com/p/high-int-low-wis-what-llm-benchmarks"&gt;here&lt;/a&gt; on Context Horizon.&lt;/p&gt;
&lt;p&gt;In the tabletop roleplaying game Dungeons &amp;amp; Dragons (D&amp;amp;D), the very first thing you do when you create a character is to choose ability scores. Ability scores are numbers that determine how good you are at the game&amp;rsquo;s main characteristics: Strength (STR), Dexterity (DEX), Constitution (CON), Intelligence (INT), Wisdom (WIS), and Charisma (CHA). 20 is the default maximum that a character can have in any ability, though some in-game events/items can increase that.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the thing, though: every D&amp;amp;D player knows that a 20 Intelligence doesn&amp;rsquo;t mean your wizard aces every check. Whether you have proficiency in the specific skill still matters. That 20 INT wizard, for all their raw cognitive horsepower, can absolutely still fail to identify a magical rune. The ability score is a starting point, not a verdict.&lt;/p&gt;
&lt;p&gt;This is exactly what&amp;rsquo;s happening to LLM benchmarks. All the general LLM/AI model benchmarks are ability scores. They tell you something real about a model&amp;rsquo;s general capabilities, the same way a 20 INT tells you something real about a wizard. But as frontier models crowd toward the top of every leaderboard, we&amp;rsquo;re running into a problem D&amp;amp;D solved decades ago: the stat block isn&amp;rsquo;t the character. And it was never supposed to be.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260423-safira-l10-stats.png" alt="A screenshot of the stats of my Level 10 bard. Low INT, but look at that CHA!" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A screenshot of the stats of my Level 10 bard. Low INT, but look at that CHA!&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-stat-block-a-tour-of-the-ability-scores-everyones-maxing-out"&gt;The stat block: A tour of the ability scores everyone&amp;rsquo;s maxing out&lt;/h2&gt;
&lt;p&gt;There are so many new models and model versions out there that it&amp;rsquo;s hard to keep up with what we&amp;rsquo;re supposed to be using for which tasks. LLM benchmarks have come to be relied on to give a somewhat objective assessment of each model&amp;rsquo;s capability. Here are a few big ones that exist.&lt;/p&gt;
&lt;h3 id="general-knowledgereasoning"&gt;General knowledge/reasoning&lt;/h3&gt;
&lt;h4 id="mmlu-measuring-massive-multitask-language-understanding-2020"&gt;MMLU (Measuring Massive Multitask Language Understanding, 2020)&lt;/h4&gt;
&lt;p&gt;MMLU is the classic &amp;ldquo;general knowledge&amp;rdquo; INT check. It was &lt;a href="https://arxiv.org/abs/2009.03300"&gt;released in September 2020 by Hendrycks et al.&lt;/a&gt; and contains 15,908 multiple-choice questions across 57 subjects (humanities, social science, STEM, other). However, there were a few issues with it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2406.04127"&gt;a study in 2024&lt;/a&gt; showed that 6.49% of those questions contained errors&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nytimes.com/2024/04/15/technology/ai-models-measurement.html"&gt;The New York Times reported&lt;/a&gt; (2024) that data contamination was an issue — models could be trained on the MMLU questions (and answers) to inflate their MMLU scores&lt;/li&gt;
&lt;li&gt;many frontier LLMs soon consistently achieved high scores&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In response, a new benchmark called &lt;a href="https://github.com/TIGER-AI-Lab/MMLU-Pro"&gt;MMLU-Pro&lt;/a&gt; was created with 12,000 questions that each have 10 options. The increase in options theoretically required more reasoning capability than the original benchmark, but frontier models are already knocking at 90% on the MMLU-Pro.&lt;/p&gt;
&lt;h4 id="humanitys-last-exam-hle-2025"&gt;Humanity&amp;rsquo;s Last Exam (HLE, 2025)&lt;/h4&gt;
&lt;p&gt;HLE was developed specifically to address the fact that LLMs &amp;ldquo;now achieve over 90% accuracy on popular benchmarks like MMLU&amp;rdquo; (from &lt;a href="https://lastexam.ai"&gt;the HLE site&lt;/a&gt;). The &lt;a href="https://arxiv.org/abs/2501.14249"&gt;paper by Phan et al&lt;/a&gt; explains the lengths they took to make it hard enough to be meaningful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;they solicited high-quality questions from nearly 1000 subject matter experts, even going as far as paying them for successful submissions (with a total prize pool of US $500,000)&lt;/li&gt;
&lt;li&gt;they included graduate-level classics (one of the questions includes translating Palmyrene script)&lt;/li&gt;
&lt;li&gt;they reviewed potential submissions using current LLMs and only proceeded with submissions if the LLMs are unable to answer correctly&lt;/li&gt;
&lt;li&gt;experts then reviewed the submissions further&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a result, HLE scores are low — intentionally so:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;While current LLMs achieve very low accuracy on HLE, recent history shows benchmarks are quickly saturated – with models dramatically progressing from near-zero to near-perfect performance in a short timeframe [13, 45]. Given the rapid pace of AI development, it is plausible that models could exceed 50% accuracy on HLE by the end of 2025. (&lt;a href="https://arxiv.org/abs/2501.14249"&gt;Phan et al., 2025&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="software-engineering"&gt;Software engineering&lt;/h3&gt;
&lt;h4 id="humaneval-openai-2021"&gt;HumanEval (OpenAI, 2021)&lt;/h4&gt;
&lt;p&gt;In 2021, OpenAI released &lt;a href="https://arxiv.org/abs/2107.03374"&gt;a paper&lt;/a&gt; and &lt;a href="https://github.com/openai/human-eval"&gt;an evaluation harness&lt;/a&gt; for a benchmark consisting of 164 Python programming problems based on publicly available code on GitHub. It was developed to test coding in particular.&lt;/p&gt;
&lt;p&gt;Eventually, though, experts found that the problem sets in HumanEval were insufficient and ambiguous (&lt;a href="https://arxiv.org/abs/2305.01210"&gt;Liu et al., 2023&lt;/a&gt;). HumanEval+ was released to include more tests, but the next benchmark&amp;rsquo;s authors &lt;a href="https://arxiv.org/abs/2403.07974"&gt;suggested that models might be overfitting&lt;/a&gt; to HumanEval+ as well, memorizing the dataset and answers rather than genuinely demonstrating reasoning ability.&lt;/p&gt;
&lt;h4 id="livecodebench-2024"&gt;LiveCodeBench (2024)&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://arxiv.org/abs/2403.07974"&gt;Jain et al.&lt;/a&gt; tried a different approach to HumanEval to avoid data contamination: it was released with a continuously-updated coding benchmark. Problems have release dates and models can only be evaluated using problems released &lt;em&gt;after&lt;/em&gt; their training data cutoff dates.&lt;/p&gt;
&lt;p&gt;LiveCodeBench represents a shift in benchmarks towards a more continuous, dynamic measure. However, the last submission to the benchmark was &lt;a href="https://github.com/LiveCodeBench/submissions"&gt;9 months ago&lt;/a&gt; at the time of this writing, and &lt;a href="https://livecodebench.github.io/"&gt;the leaderboard&lt;/a&gt; has not been updated since then either, suggesting the benchmark is no longer being actively maintained.&lt;/p&gt;
&lt;h4 id="swe-bench-2024"&gt;SWE-bench (2024)&lt;/h4&gt;
&lt;p&gt;This benchmark was created by &lt;a href="https://openreview.net/pdf?id=VTF8yNQM66"&gt;Jimenez et al.&lt;/a&gt; to include 2,294 actual GitHub issues from 12 Python projects. When it launched, it was a much harder benchmark than predecessors, with models scoring 2-4%. Today, models are scoring around 70-80% on the original benchmark. There were enough issues with the original&amp;rsquo;s dataset quality that variants were introduced, including &lt;a href="https://openai.com/index/introducing-swe-bench-verified/"&gt;OpenAI&amp;rsquo;s SWE-bench Verified&lt;/a&gt;. Today, &lt;a href="https://www.swebench.com/"&gt;the SWE-bench website&lt;/a&gt; shows these variants:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SWE-bench&lt;/li&gt;
&lt;li&gt;SWE-bench Verified&lt;/li&gt;
&lt;li&gt;SWE-bench Multilingual&lt;/li&gt;
&lt;li&gt;SWE-bench Multimodal&lt;/li&gt;
&lt;li&gt;SWE-bench Lite&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="agents-and-tool-use"&gt;Agents and tool use&lt;/h3&gt;
&lt;p&gt;This last category is a preview of where I think the field should go: benchmarks that measure &lt;em&gt;what a model does&lt;/em&gt; rather than just &lt;em&gt;what a model knows&lt;/em&gt;. Here are some of them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GAIA (&lt;a href="https://arxiv.org/abs/2311.12983"&gt;Mialon et al., 2023&lt;/a&gt;) — 466 real-world assistant tasks that combine web browsing, file reading, and multi-step reasoning. Easy for humans (92% success), hard for models (15% success for GPT-4), at least at launch.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tbench.ai/"&gt;Terminal-Bench&lt;/a&gt; — agents working in actual Linux terminals. Tasks include &amp;ldquo;build the Linux kernel from source&amp;rdquo; and &amp;ldquo;configure a git server plus a webserver on port 8080.&amp;rdquo; No mocks; if it doesn&amp;rsquo;t actually build, it fails.&lt;/li&gt;
&lt;li&gt;WebArena (&lt;a href="https://arxiv.org/abs/2307.13854"&gt;Zhou et al., 2023&lt;/a&gt;) — realistic simulated websites (Reddit, GitLab, e-commerce) where agents complete actual user goals like &amp;ldquo;filter the last six months of orders by refund status.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These benchmarks are harder to saturate than general-knowledge ones, because passing means the thing actually has to work in the real world. A model can memorise a question; it can&amp;rsquo;t memorise a Linux kernel that isn&amp;rsquo;t there until it builds it.&lt;/p&gt;
&lt;h2 id="the-wrong-answer-build-a-harder-general-benchmark"&gt;The wrong answer: Build a harder general benchmark&lt;/h2&gt;
&lt;p&gt;By now, you probably see that benchmarks tend to go the same way: A benchmark is created, models get too good at it and perform too well to be useful, and then a variant benchmark is created to address the problem.&lt;/p&gt;
&lt;p&gt;This is the &lt;em&gt;saturation problem&lt;/em&gt; in a nutshell: a benchmark that once provided meaningful information to help distinguish models eventually fails to do so because all the models&amp;rsquo; scores cluster at the top.&lt;/p&gt;
&lt;p&gt;Saturation occurs for two reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Contamination&lt;/em&gt;: Many benchmarks publish their problem sets online, and models train on data scraped from the web. The benchmark now measures memorization, not capability.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Overfitting&lt;/em&gt;: Model providers are incentivized to optimize specifically for gaming performance on benchmarks. Scores go up without corresponding capability improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you have a party of wizards with 20 INT, &amp;ldquo;What&amp;rsquo;s your INT score?&amp;rdquo; stops being an interesting question because any wizard&amp;rsquo;s Fireball will hit the same. Building harder benchmarks is like an arms race for ability scores, when what you actually want to know is whether your wizard can kill a dragon.&lt;/p&gt;
&lt;p&gt;Harder benchmarks don&amp;rsquo;t tell us what we want to know: &lt;em&gt;can this model do my specific job?&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-right-answer-skill-checks-with-real-dcs"&gt;The right answer: skill checks with real DCs&lt;/h2&gt;
&lt;p&gt;The fix isn&amp;rsquo;t a harder ability check. It&amp;rsquo;s a different kind of check altogether. In D&amp;amp;D, straight ability checks are rare compared to skill checks. There are 18 official skills that break down the six ability scores into more granular activities. For example, your wizard is much more likely to roll one of these instead of a straight INT check:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Arcana&lt;/li&gt;
&lt;li&gt;History&lt;/li&gt;
&lt;li&gt;Investigation&lt;/li&gt;
&lt;li&gt;Nature&lt;/li&gt;
&lt;li&gt;Religion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these are still based on INT, but test narrow &lt;em&gt;types of intelligence&lt;/em&gt; rather than general intelligence.&lt;/p&gt;
&lt;p&gt;Specific, domain-grounded benchmarks are what the field actually needs. The evaluations that actually help practitioners share a structure: they test a specific skill in a specific context, and they&amp;rsquo;re judged by the people who have to live with the results.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://arxiv.org/abs/2009.13081"&gt;MedQA&lt;/a&gt; tests whether a model can answer the kind of clinical question a physician might face. &lt;a href="https://arxiv.org/abs/2308.11462"&gt;LegalBench&lt;/a&gt; tests whether a model can correctly identify enforceability clauses, classify contract language, and apply legal reasoning. &lt;a href="https://arxiv.org/abs/2311.11944"&gt;FinanceBench&lt;/a&gt; tests whether a model can answer the kind of question a financial analyst would actually ask about a real 10-K filing. None of these are trying to rank models on general intelligence. They&amp;rsquo;re asking the only question that matters downstream: &lt;em&gt;can this model do this specific job well enough?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This week, Grafana released &lt;a href="https://github.com/grafana/o11y-bench"&gt;o11y-bench&lt;/a&gt;, an open benchmark for observability-specific agent tasks. I&amp;rsquo;m biased — I work there — but it&amp;rsquo;s a useful illustration of the shape I&amp;rsquo;m describing. o11y-bench doesn&amp;rsquo;t ask whether a model is smart in general. It asks whether an agent can do the things observability engineers actually do: read production traces, correlate logs with metrics, figure out why the thing that&amp;rsquo;s supposed to be working isn&amp;rsquo;t. &lt;a href="https://o11ybench.ai/"&gt;Its leaderboard&lt;/a&gt; shows models&amp;rsquo; performance for each activity.&lt;/p&gt;
&lt;p&gt;Does that mean that more specific benchmarks won&amp;rsquo;t get saturated? No. We&amp;rsquo;ve already seen this play out with SWE-bench. But they&amp;rsquo;ll get saturated more slowly and remain more meaningful measures along the way.&lt;/p&gt;
&lt;p&gt;These are skill checks with DCs that matter to someone. They&amp;rsquo;re not trying to produce a single scalar ranking of &amp;ldquo;which model is smartest.&amp;rdquo; They&amp;rsquo;re asking whether the wizard recognizes the family crest belonging to a political faction or knows this specific cult&amp;rsquo;s practices, not whether the wizard is good at &amp;ldquo;wizarding&amp;rdquo; in the abstract.&lt;/p&gt;
&lt;h2 id="roll-for-initiative-what-this-means-in-practice"&gt;Roll for initiative: What this means in practice&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re an engineer picking a model for production: stop picking by leaderboard. Find or build an eval that reflects your actual use case. A handful of representative examples, graded the way you&amp;rsquo;d grade them if you were doing the work yourself, will tell you more than a dozen public benchmarks.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re a researcher thinking about what to build next: the interesting work is at the specific-and-grounded end of the spectrum, not the general-and-bigger end. Another harder general-knowledge benchmark will saturate in eighteen months. A well-designed domain benchmark, co-built with the people who actually do the work, can stay useful for years.&lt;/p&gt;
&lt;p&gt;And if you&amp;rsquo;re anyone else watching this field from the outside: be skeptical of the headlines. When a new model scores 94% on a benchmark you&amp;rsquo;ve never heard of, ask what it measures and whether the thing it measures is the thing you actually care about. Usually the answer is &amp;ldquo;not really,&amp;rdquo; and that&amp;rsquo;s the most important thing a benchmark score won&amp;rsquo;t tell you.&lt;/p&gt;
&lt;p&gt;The goal of a character sheet was never to produce one number that ranks the character. It was to give a DM enough information to run a meaningful encounter — and to give the player enough to know when to try, when to pass, and when to roll with advantage. LLM evaluation should work the same way. Not a ranking; a readiness check. Can this specific model clear this specific challenge? Roll for initiative.&lt;/p&gt;</description></item><item><title>All About AI Observability (The Context Window #03)</title><link>https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/</link><pubDate>Wed, 22 Apr 2026 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/</guid><description>&lt;p&gt;In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I&amp;rsquo;m joined by &lt;a href="https://www.linkedin.com/in/tiffanyjerniganm/"&gt;Tiffany Jernigan&lt;/a&gt; and the engineers behind the product, &lt;a href="https://www.linkedin.com/in/alexandersniffin/"&gt;Alexander Sniffin&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/jack-gordley/"&gt;Jack Gordley&lt;/a&gt;, for a deep dive into AI Observability in Grafana Cloud. We unpack what it actually is (a new way to instrument your AI apps and see canonical data about them, sitting alongside your existing telemetry), what an evaluation is in this context (and the difference between online evals on live traffic and offline evals on dataset conversations), and we walk through real demos: setting up AI Observability and evaluators, the analytics view, instrumenting a local coding agent, and Jack&amp;rsquo;s system prompt analysis tool. We also talk about the things nobody else is talking about — like LLM-as-judge as a method, evaluators that catch the most bugs, and the cheating-LLM phenomenon.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/vzygCuuf7JQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="timestamps"&gt;Timestamps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;00:00:00 — Introductions&lt;/li&gt;
&lt;li&gt;00:02:00 — The last month in AI news&lt;/li&gt;
&lt;li&gt;00:11:09 — What is AI Observability in Grafana Cloud?&lt;/li&gt;
&lt;li&gt;00:19:20 — What is an evaluation?&lt;/li&gt;
&lt;li&gt;00:21:05 — The origin of AI Observability&lt;/li&gt;
&lt;li&gt;00:25:09 — Demo: Setting up AI Observability and evaluators&lt;/li&gt;
&lt;li&gt;00:32:04 — What is LLM as judge?&lt;/li&gt;
&lt;li&gt;00:38:43 — Demo: AI Observability Analytics&lt;/li&gt;
&lt;li&gt;00:40:52 — AI O11y is based on OpenTelemetry&lt;/li&gt;
&lt;li&gt;00:42:17 — Demo: Instrumenting a local coding agent&lt;/li&gt;
&lt;li&gt;00:47:18 — Potential future agentic use cases&lt;/li&gt;
&lt;li&gt;00:52:00 — Evaluators that catch the most bugs&lt;/li&gt;
&lt;li&gt;01:02:23 — Demo: System prompt analysis&lt;/li&gt;
&lt;li&gt;01:05:11 — Guess the prompt&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;h3 id="news-from-the-episode"&gt;News from the episode&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/news/claude-opus-4-7"&gt;Claude Opus 4.7 release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deepmind.google/models/gemma/gemma-4/"&gt;Gemma 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://qwen.ai/blog?id=qwen3.6"&gt;Qwen 3.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;Introducing o11y-bench: an open benchmark for observability agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.blog/news-insights/company-news/updates-to-github-copilot-interaction-data-usage-policy/"&gt;Updates to GitHub Copilot interaction data usage policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gra.fan/gcon26"&gt;GrafanaCON 2026 announcements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ai-observability"&gt;AI Observability&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/ai-observability/"&gt;AI Observability docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/ai-observability/introduction/#online-evaluation"&gt;Online evaluations on Grafana Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/ai-observability/introduction/#opentelemetry-integration"&gt;OpenTelemetry integration with AI Observability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/sigil-sdk"&gt;The Sigil SDK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mentioned"&gt;Mentioned&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opencode.ai"&gt;OpenCode&lt;/a&gt; — the open-source coding agent Jack instruments&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/research/emotion-concepts-function"&gt;Anthropic: Emotion concepts and their function in a large language model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openclaw.ai"&gt;OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-reading"&gt;Related reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/high-int-low-wis-what-llm-benchmarks"&gt;My Context Horizon piece on benchmarks: &lt;em&gt;High INT, Low WIS — What LLM benchmarks miss&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;My Context Horizon piece on Grafana Assistant: &lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to use Grafana Assistant with self-hosted Grafana</title><link>https://nicolevanderhoeven.com/blog/20260420-grafana-assistant-self-hosted/</link><pubDate>Mon, 20 Apr 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260420-grafana-assistant-self-hosted/</guid><description>&lt;p&gt;In case you missed it, possibly the biggest news to come from GrafanaCON this year is that if you&amp;rsquo;re running self-hosted or open-source Grafana, you can now connect it through your Grafana Cloud account to &lt;a href="https://grafana.com/products/cloud/ai-tools/"&gt;Grafana Assistant&lt;/a&gt;, the purpose-built AI tool for all things Grafana.&lt;/p&gt;
&lt;p&gt;In this short tutorial, I show you how to enable Assistant on a self-hosted Grafana instance and go from &lt;em&gt;nothing&lt;/em&gt; to a working server-health dashboard with a single prompt.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/0O0ZqrruGns?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="a-quick-note-on-what-for-open-source-actually-means"&gt;A quick note on what &amp;ldquo;for open source&amp;rdquo; actually means&lt;/h2&gt;
&lt;p&gt;Assistant itself isn&amp;rsquo;t open source. But you can now use it &lt;em&gt;with&lt;/em&gt; your self-hosted or open-source Grafana instance. The way it works is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You still need a Grafana Cloud account (the free tier has &lt;a href="https://grafana.com/pricing/"&gt;generous inclusions&lt;/a&gt; for Assistant).&lt;/li&gt;
&lt;li&gt;You link your self-hosted Grafana to that Cloud account.&lt;/li&gt;
&lt;li&gt;Assistant then lights up inside your OSS instance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Think of the Grafana Cloud account as the key that unlocks Assistant wherever your Grafana lives.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grafana OSS v13 or later&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Grafana Cloud account&lt;/strong&gt; (&lt;a href="https://grafana.com/pricing/"&gt;pricing here&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="enabling-assistant"&gt;Enabling Assistant&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Administration → Plugins&lt;/strong&gt;, search for &lt;strong&gt;Assistant&lt;/strong&gt;, and click &lt;strong&gt;Install&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Refresh the page, then open the &lt;strong&gt;Connection&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Start Connection&lt;/strong&gt;. You&amp;rsquo;ll be prompted to log into Grafana Cloud.&lt;/li&gt;
&lt;li&gt;Select the organization and stack you want, then click &lt;strong&gt;Authorize connection&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Close the tab. Your self-hosted Grafana is now linked to Assistant.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="a-first-dashboard-from-nothing"&gt;A first dashboard from nothing&lt;/h2&gt;
&lt;p&gt;Every Grafana instance ships with a &lt;strong&gt;TestData&lt;/strong&gt; data source — perfect for a first run when you don&amp;rsquo;t yet have real data wired up. Enable it from Data Sources, then open Assistant (the new icon on the top right).&lt;/p&gt;
&lt;p&gt;Switch Assistant&amp;rsquo;s mode from &lt;strong&gt;General&lt;/strong&gt; to &lt;strong&gt;Dashboarding&lt;/strong&gt; — this mode is tuned for creating and managing dashboards — and ask in plain English, for example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Assistant, could you create a server health dashboard for me using the TestData data source?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What comes back is a starting dashboard with CPU, memory, disk, and network panels already wired up. From there you can tweak panels, edit queries, or ask Assistant to iterate. You&amp;rsquo;re not starting from scratch — you&amp;rsquo;re starting from 80%.&lt;/p&gt;
&lt;h2 id="what-else-assistant-can-do"&gt;What else Assistant can do&lt;/h2&gt;
&lt;p&gt;I only showed dashboarding in this video, but Assistant can also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Answer questions about the data already in your Grafana&lt;/li&gt;
&lt;li&gt;Run investigations to troubleshoot production incidents&lt;/li&gt;
&lt;li&gt;Learn new skills&lt;/li&gt;
&lt;li&gt;Manage alerts&lt;/li&gt;
&lt;li&gt;Teach you Grafana&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That list keeps growing, so stay tuned.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/products/cloud/ai-tools/"&gt;Grafana Assistant&lt;/a&gt; (product page)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/pricing/"&gt;Grafana Cloud pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/legal/grafana-cloud-data-processing/"&gt;How Grafana Labs handles your data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;My notes on Grafana Assistant&lt;/a&gt; — everything I&amp;rsquo;m learning as I work on it&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;Unlearnings from building Grafana Assistant&lt;/a&gt; — my Context Horizon piece on what the team had to unlearn&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Unlearnings from building Grafana Assistant</title><link>https://nicolevanderhoeven.com/blog/20260409-unlearnings-from-building-grafana-assistant/</link><pubDate>Thu, 09 Apr 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260409-unlearnings-from-building-grafana-assistant/</guid><description>&lt;p&gt;Originally posted &lt;a href="https://open.substack.com/pub/contexthorizon/p/unlearnings-from-building-grafana?r=7xe6zg&amp;amp;utm_campaign=post&amp;amp;utm_medium=web&amp;amp;showWelcomeOnShare=true"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Everyone&amp;rsquo;s talking about what you need to &lt;em&gt;learn&lt;/em&gt; to build AI agents: Prompt engineering. Tool calling. Retrieval strategies. The content ecosystem is full of it. But while I was watching Context Window Episode 1, it struck me that Mat Ryer, Cyril Tovena, and Sven Großmann&amp;ndash; some of the team behind Grafana Assistant&amp;ndash; spent most of their time on something different: what they had to &lt;em&gt;unlearn&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Grafana Assistant started as a weekend hackathon project. By the time it shipped, the team had thrown out a popular framework, flipped their assumptions about tool design, and discovered that some of the instincts you bring from conventional software development actively work against you when you&amp;rsquo;re building agents.&lt;/p&gt;
&lt;p&gt;I pulled out the ten moments where received wisdom turned out to be wrong. If you&amp;rsquo;re building anything agentic right now, these are worth sitting with.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/TGWVqBAeIzI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="-langchain-will-help-us-build-faster"&gt;❌ LangChain will help us build faster&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/langchain-ai/langchain"&gt;LangChain&lt;/a&gt; is an opensource framework for building applications that use LLMs. It provides structured components that can be used for rapid prototyping.&lt;/p&gt;
&lt;p&gt;In the video, Tovena talks about how they started with LangChain during the initial hackathon because they thought it would help them build more quickly, but instead it became obvious fairly early on that the opposite was true. They didn&amp;rsquo;t end up using a lot of the features that LangChain provided and felt they needed more flexibility and speed.&lt;/p&gt;
&lt;h3 id="abstraction-overhead"&gt;Abstraction overhead&lt;/h3&gt;
&lt;p&gt;One possible reason for their troubles with LangChain is that LangChain has standard abstractions for prompts, tool use, and orchestration&amp;ndash; things that sound good in theory. But sometimes abstractions lend themselves to creating a sort of black box in your stack, where you don&amp;rsquo;t know what&amp;rsquo;s happening inside it. It sounds like the Assistant team missed the oversight and control of what was happening.&lt;/p&gt;
&lt;h2 id="-use-the-same-prompt-for-every-model"&gt;❌ Use the same prompt for every model&lt;/h2&gt;
&lt;p&gt;They also talked about how for the sake of simplicity and consistency, they initially used the same prompt for every model. However, they found out that this actually led to worse results. They found more success in creating slightly different prompts for different models, playing to their strengths and weaknesses a bit more.&lt;/p&gt;
&lt;p&gt;There is even an argument (&lt;a href="https://arxiv.org/abs/2401.00595"&gt;Mizrahi et al.&amp;rsquo;s &amp;ldquo;State of What Art? A Call for Multi-Prompt LLM Evaluation&lt;/a&gt;) that AI benchmarks that involve sending multiple LLMs the same prompt is a brittle and unreliable way to assess LLM capabilities. Different models respond differently to prompt variations.&lt;/p&gt;
&lt;p&gt;In practice, what this means is that switching models isn&amp;rsquo;t a drop-in replacement. Even if a new model scores better on benchmarks, your prompts were written with a specific model&amp;rsquo;s tendencies in mind. The unlearning here is letting go of the idea that a prompt is model-agnostic — it&amp;rsquo;s more like a conversation style, and different models have different conversational defaults.&lt;/p&gt;
&lt;h2 id="-treat-errors-as-failures"&gt;❌ Treat errors as failures&lt;/h2&gt;
&lt;p&gt;Traditionally in software, you catch errors and hide them from the user: you log them, handle them, but treat that transaction as a failed one.&lt;/p&gt;
&lt;p&gt;The Assistant team had to unlearn this habit when dealing with an LLM, because with agents, error messages &lt;em&gt;are&lt;/em&gt; useful data. Feeding it back to the LLM often results in it learning from its own mistake and trying again. It&amp;rsquo;s basically letting the agent debug itself, in a manner that Ryer noted was remarkably similar to how we humans debug errors too.&lt;/p&gt;
&lt;h2 id="-return-errors-in-structured-json"&gt;❌ Return errors in structured JSON&lt;/h2&gt;
&lt;p&gt;On the subject of error messages, Großmann mentioned that at one point they were trying to format the errors in JSON or stringified JSON. This practice shows solid engineer intuition because usually, structuring information helps machines process it faster and more accurately. What they found here was the reverse: it was easier and yielded better results when the LLM was just passed the entire error in natural language.&lt;/p&gt;
&lt;h2 id="-build-as-many-tools-as-possible"&gt;❌ Build as many tools as possible&lt;/h2&gt;
&lt;p&gt;The team mentioned that at the start, they were inclined to create as many tools/skills for Assistant: one for everything that could be done in Grafana. This made sense until they saw LLMs struggle to determine which tool to use in which context.&lt;/p&gt;
&lt;p&gt;To help LLMs identify the correct tool, they added tool descriptions and also experimented with combining multiple tools into fewer, parameterized, tools. These helped, although the team still observed that allowing users to create their own tools (with potentially very general tool descriptions) could potentially confuse LLMs.&lt;/p&gt;
&lt;h2 id="-bigger-context-window--better"&gt;❌ Bigger context window = better&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://developers.googleblog.com/en/new-features-for-the-gemini-api-and-google-ai-studio/"&gt;Gemini 1.5 Pro announced&lt;/a&gt; it had a 2M context window back in 2024, and it might seem that other providers had lagged behind: &lt;a href="https://openai.com/index/gpt-4-1/"&gt;OpenAI&lt;/a&gt; only announced support for 1M tokens in 2025 and &lt;a href="https://www.anthropic.com/news/claude-opus-4-6"&gt;Anthropic&lt;/a&gt; followed in 2026. However, the Assistant team pointed out that context wasn&amp;rsquo;t everything. They said that they noticed that bigger wasn&amp;rsquo;t necessarily better, also pointing out that the chat summarization feature on IDEs like &lt;a href="https://cursor.com/"&gt;Cursor&lt;/a&gt; could still sometimes lose important details when summarizing.&lt;/p&gt;
&lt;p&gt;This finding seems to coincide with a 2023 Stanford study (&lt;a href="https://arxiv.org/abs/2307.03172"&gt;Lost in the Middle: How Language Models Use Long Contexts&lt;/a&gt;) that found there was a performance degradation when models access information within a very large context. In the video, they talked about how their system prompts were often 40k tokens long (half for the prompt itself and then the other half for tools).&lt;/p&gt;
&lt;h2 id="-start-with-a-multi-agent-architecture"&gt;❌ Start with a multi-agent architecture&lt;/h2&gt;
&lt;p&gt;Tovena mentioned that creating a multi-agent architecture for Assistant yielded more mixed results than he expected. He said that passing context between agents is difficult, outputs were inconsistent, and there was a bit of a &amp;ldquo;telephone game&amp;rdquo; problem where agents didn&amp;rsquo;t always perfectly understand the intent or output of other agents.&lt;/p&gt;
&lt;p&gt;In early 2026, &lt;a href="https://arxiv.org/abs/2601.13295"&gt;Khatua et al. released a study&lt;/a&gt; called &amp;ldquo;CooperBench: Why Coding Agents Cannot Be Your Teammates Yet&amp;rdquo; that showed that AI agents aren&amp;rsquo;t great at collaboration. The study suggests, surprisingly, that this might be because AI agents lack human social habits that help us collaborate better, such as feeling obliged to do what we say and having a good understanding of what others&amp;rsquo; plans are.&lt;/p&gt;
&lt;p&gt;The Assistant team&amp;rsquo;s experience is also a perfect example of &lt;a href="https://www.laws-of-software.com/laws/gall/"&gt;Gall&amp;rsquo;s Law&lt;/a&gt;, which states that it&amp;rsquo;s easier to start with simplicity and build complexity than the other way around.&lt;/p&gt;
&lt;h2 id="-plan-around-models-as-they-are-now"&gt;❌ Plan around models as they are now&lt;/h2&gt;
&lt;p&gt;Software has always moved quickly, but it feels like AI models are moving faster. &lt;a href="https://hai.stanford.edu/assets/files/hai_ai_index_report_2025.pdf"&gt;Stanford&amp;rsquo;s AI Index Report 2025&lt;/a&gt; reported that models went from having a 50% chance to near-human performance in roughly 2 years (2021-2023). In fact, benchmarks keep getting retired as AI saturates them&amp;ndash; meaning that benchmarks can&amp;rsquo;t reliably be used to distinguish between good and bad models because all the models are testing near the ceiling.&lt;/p&gt;
&lt;p&gt;The rapid pace of development around AI requires us to not be so attached to our work: Großmann recalled an incident where someone wrote a joke prompt that spoke like a dog that shockingly did better than their other system prompts. Ryer also mentioned that at one point someone deleted all the system prompts and Assistant weirdly became more accurate.&lt;/p&gt;
&lt;p&gt;The lesson is clear: plan for models to improve, and plan to redo a lot of your work when they do.&lt;/p&gt;
&lt;h2 id="-we-dont-need-evals"&gt;❌ We don&amp;rsquo;t need evals&lt;/h2&gt;
&lt;p&gt;The Assistant team said that they went from having no evals to employing several types of evals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;integration-style evals that exercise whole workflows&lt;/li&gt;
&lt;li&gt;unit-style evals that feed inputs plus a system prompt and check the output&lt;/li&gt;
&lt;li&gt;LLM-as-judge, where they pass conversations to an LLM to ask it to judge whether it answered the user&amp;rsquo;s questions.&lt;/li&gt;
&lt;li&gt;user feedback in the form of thumbs during conversations with Assistant&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Beyond evaluation, they talked about how important it was to be able to observe AI. At the very minimum, showing what Assistant is doing at all times (thinking out loud) is very important to them because it builds users&amp;rsquo; trust in the thinking process and, eventually, in the result.&lt;/p&gt;
&lt;p&gt;Evals aren&amp;rsquo;t a sign that you don&amp;rsquo;t trust your product. They&amp;rsquo;re how you build the confidence to keep shipping it.&lt;/p&gt;
&lt;h2 id="-assume-people-already-know-how-to-work-with-ai"&gt;❌ Assume people already know how to work with AI&lt;/h2&gt;
&lt;p&gt;When you ship an AI feature, it&amp;rsquo;s tempting to assume the hard work is done. You&amp;rsquo;ve built the thing. Users will figure it out.&lt;/p&gt;
&lt;p&gt;What the Grafana Assistant team found was that this assumption doesn&amp;rsquo;t hold. Users came in with wildly different mental models of what an AI assistant could or should do — some treating it like a search box, others expecting it to read their minds, most not yet sure how to prompt it effectively.&lt;/p&gt;
&lt;p&gt;Their insight was that this isn&amp;rsquo;t just a UX problem to solve on your end. It&amp;rsquo;s a shared responsibility: AI should try to help the user, but the user also needs to learn how to work with AI. And building an assistant that teaches people how to use it well (through good responses, gentle corrections, showing its work) is part of building the product.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s also a deeper point here specific to observability. Grafana Assistant isn&amp;rsquo;t just an AI feature; it&amp;rsquo;s a way of interacting with your own infrastructure. Every good interaction teaches you something about what questions to ask, what signals to look for, what it means to understand a system. In other words: learning to use AI well makes you a better engineer. The tool and the skill co-evolve.&lt;/p&gt;
&lt;p&gt;This is the unlearning that sits furthest from the code. It&amp;rsquo;s not about prompts or architectures or frameworks. It&amp;rsquo;s about recognising that you&amp;rsquo;re not just shipping a feature&amp;ndash; you&amp;rsquo;re introducing a new way of working. That takes time. And it&amp;rsquo;s worth designing for explicitly.&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;What strikes me most about this list isn&amp;rsquo;t any single item — it&amp;rsquo;s the pattern. Most of these unlearnings point in the same direction: &lt;em&gt;less is more, and messiness is the point.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Less abstraction. Fewer tools. Smaller context. Simpler architecture. And rather than hiding the mess — the errors, the reasoning, the uncertainty — let it show. That&amp;rsquo;s where the trust gets built.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re all still early with this. The team that built one of the most thoughtful AI products I&amp;rsquo;ve seen up close still didn&amp;rsquo;t have evals when they launched. That&amp;rsquo;s not a criticism — it&amp;rsquo;s a reminder. You don&amp;rsquo;t need to have it all figured out before you ship. You just need to commit to keep unlearning.&lt;/p&gt;</description></item><item><title>Behind the Magic of Auto-Instrumentation (Grafana ❤️🔥 OpenTelemetry Community Call #6)</title><link>https://nicolevanderhoeven.com/blog/20260227-gocc06-auto-instrumentation/</link><pubDate>Fri, 27 Feb 2026 16:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260227-gocc06-auto-instrumentation/</guid><description>&lt;p&gt;In this community call with my coworker Liudmila Molkova, we pulled back the curtain on OpenTelemetry&amp;rsquo;s auto-instrumentation capabilities. We explored how auto-instrumentation works under the hood, when to use it versus manual instrumentation, and the trade-offs involved. The discussion covered language-specific implementations, the Collector&amp;rsquo;s role in auto-instrumentation, and practical tips for getting started with zero-code observability.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/HItumi3qt90?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Observability for GenAI Applications (Grafana ❤️🔥 OpenTelemetry Community Call #4)</title><link>https://nicolevanderhoeven.com/blog/20260121-gocc04-observability-for-genai-applications/</link><pubDate>Wed, 21 Jan 2026 16:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260121-gocc04-observability-for-genai-applications/</guid><description>&lt;p&gt;In this community call with my coworker Liudmila Molkova, we dove into the emerging field of observability for Generative AI applications. We explored how to instrument LLM-powered applications using OpenTelemetry, what metrics and traces matter most when monitoring AI workloads, and how to debug issues in complex AI pipelines. The discussion covered prompt tracing, token usage monitoring, latency considerations, and the unique challenges of observing non-deterministic AI systems.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/LfDVygRWQJU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Logging Best Practices (Grafana ❤️🔥 OpenTelemetry Community Call #3)</title><link>https://nicolevanderhoeven.com/blog/20251217-gocc03-logging-best-practices/</link><pubDate>Wed, 17 Dec 2025 16:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20251217-gocc03-logging-best-practices/</guid><description>&lt;p&gt;In this community call with my coworker Liudmila Molkova, we explored logging best practices in the context of OpenTelemetry. We discussed how to structure logs for observability, the relationship between logs and other telemetry signals (traces and metrics), and practical patterns for making logs more useful in distributed systems. The conversation covered log levels, contextual information, correlation with traces, and common pitfalls to avoid when instrumenting applications with OpenTelemetry logging.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/D-bWeY-gBWU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Lightweight Opensource APM with OTel Demo (Grafana ❤️‍🔥 OpenTelemetry Community Call #2)</title><link>https://nicolevanderhoeven.com/blog/20251119-gocc02-lightweight-opensource-apm-with-otel-demo/</link><pubDate>Wed, 19 Nov 2025 14:48:59 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20251119-gocc02-lightweight-opensource-apm-with-otel-demo/</guid><description>&lt;p&gt;This community call with my coworker Liudmila Molkova featured an interview with Cyrille Le Clerc from Grafana Labs, focusing on the OpenTelemetry demo as a practical example of a lightweight, open-source Application Performance Monitoring (APM) solution. Cyril explained the purpose and architecture of the OTel demo, highlighting its role as a realistic, complex microservices application that has become a de facto standard for observability vendors. The discussion explored the modern definition of APM, followed by a detailed walkthrough of a Grafana dashboard built on OTel data, covering RED metrics, alerting, trace correlation, and infrastructure monitoring. A significant portion of the conversation was dedicated to the role and challenges of integrating logs within an OpenTelemetry framework. The interview concluded with a look at the future of the OTel demo, including plans for AI observability and eBPF instrumentation.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/cX74hkdI1zM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
Okay. Hi everyone. Welcome to the second Grafana and OpenTelemetry community call. This time we&amp;rsquo;re going to talk about the lightweight open-source APM and we will use the OpenTelemetry demo as our playground. We have an expert, Cyrille, who works at Grafana. Cyrille, do you want to introduce yourCyrillef?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Thank you very much, Liudmila. My name is Cyrille, and I am a product manager at Grafana Labs. I&amp;rsquo;ve been working on open-source products for 15 years, first on Jenkins for CI/CDs, then at Elastic on observability, and now at Grafana Labs, also on observability. In addition to my day job, I have been an open-source contributor for about 20 years, starting with Apache Java projects and then moving on to Jenkins integration with Maven and OpenTelemetry. Now, I focus more on the OpenTelemetry project, like the OpenTelemetry demo, and I contribute to OpenTelemetry Helm charts as well. At Grafana Labs, I am the product management lead in charge of OpenTelemetry and I cover other areas as well. [laughter]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
That&amp;rsquo;s great. It&amp;rsquo;s great to have you here with us. Also, great for my internet to act up just a few minutes before this. Anyway, hi! I’m Nicole van der Hoeven, a developer advocate at Grafana. I work with Cyrille over there, and I&amp;rsquo;m really excited to be talking about OpenTelemetry. I&amp;rsquo;m the newbie of all of us here. [laughter] I have used OpenTelemetry in some demo apps I&amp;rsquo;ve built. Most recently, I used it for instrumenting an AI app. I&amp;rsquo;m excited to ask Cyrille all my questions because when he says he likes OpenTelemetry, what he really means is he&amp;rsquo;s the guy at Grafana who&amp;rsquo;s always banging on that OpenTelemetry drum. He&amp;rsquo;s like, &amp;ldquo;Tell all the things!&amp;rdquo; [laughter]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
It&amp;rsquo;s probably my turn. I&amp;rsquo;m Liudmila. I work on the OpenTelemetry project and I&amp;rsquo;m a technical committee member. To echo what Nicole said, nobody knows all of OpenTelemetry, and this call is where we will uncover areas that are new to each of us. Going forward, we&amp;rsquo;ll probably have more of these calls. So, with that, let’s talk about the OpenTelemetry demo. Cyrille, what is it? Why do we care?&lt;/p&gt;
&lt;h3 id="what-is-the-opentelemetry-demo"&gt;What is the OpenTelemetry Demo?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
So, the OpenTelemetry demo was born to showcase OpenTelemetry. OpenTelemetry was created in the context of cloud-native architecture. This demo is a cloud-native application—a distributed microservices application that is instrumented with OpenTelemetry. It&amp;rsquo;s maintained by the OpenTelemetry community and showcases all dimensions of modern monitoring or observability, including all telemetry types: traces, metrics, logs, and more at every layer. We started with monitoring the application layer and are now extending to show the infrastructure layer.&lt;/p&gt;
&lt;p&gt;We demo various technologies: Java, .NET, Node.js, and nearly all programming languages, including Rust. We also show how to instrument middleware and databases, such as Kafka, PostgreSQL, and Redis, all deployed on Docker Compose to make it easy to play with on your local desktop or deployed on Kubernetes to be more production-like.&lt;/p&gt;
&lt;p&gt;This is a complex demo that shows everything, and what&amp;rsquo;s interesting is that it is realistic and currently used by 40 observability vendors to demonstrate their solutions with the OpenTelemetry demo. So, when you get familiar with the OpenTelemetry demo, it’s really easy to evaluate different vendors quickly. It comes &amp;ldquo;batteries included,&amp;rdquo; with open-source monitoring and observability technologies like Prometheus, Jaeger, OpenSearch, and Grafana to showcase how to implement an observability solution with OpenTelemetry.&lt;/p&gt;
&lt;h3 id="exploring-the-application"&gt;Exploring the Application&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
Thanks for the intro! So maybe we should take a quick look at what the application itCyrillef looks like to make it more concrete.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m connected to a Kubernetes cluster, and I&amp;rsquo;m just port forwarding. This is the telescope shop we have in the OpenTelemetry demo. We can go and buy things, and now we have something in the cart that we can place an order for. Oh, actually, this application might not work as expected. Well, that&amp;rsquo;s why we need observability, right? If things don&amp;rsquo;t work, we need to figure out what&amp;rsquo;s broken and how to fix it.&lt;/p&gt;
&lt;p&gt;Before we move on, I just want to show that even though you only see the front-end web shop, it&amp;rsquo;s a relatively large application. It has quite a few services, databases, caches, a front-end proxy, and a log generator that consistently sends requests.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re super lucky to have all the telemetry Cyrille talked about. We have metrics in Prometheus, traces in Jaeger, and logs in OpenSearch, all visible in Grafana as a single pane of glass that you can refer to. With this, we can start looking at the telemetry itCyrillef. But I wanted to check with Cyrille or Nicole if you have any additional thoughts or anything we should cover here.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
No, I think you presented it well. It&amp;rsquo;s a very complex topology because we want to demo everything.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Yeah, it&amp;rsquo;s almost complex by design. You could probably have made this simpler, but it&amp;rsquo;s supposed to approximate real applications that aren&amp;rsquo;t simple. That&amp;rsquo;s the problem with some of these other demo apps; they are so simple to deploy that they work because they&amp;rsquo;re monolithic or something like that. This one is much more of a polyglot architecture, involving microservices that represent the real challenges that people face in the field.&lt;/p&gt;
&lt;h3 id="application-performance-monitoring-apm"&gt;Application Performance Monitoring (APM)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
One great thing about this demo is that sometimes it&amp;rsquo;s hard to understand how someone onboarded an application to OpenTelemetry. The demo has a lot of information on what services are used, and it demonstrates what&amp;rsquo;s been done to instrument this application with OpenTelemetry, which can help anyone with their journey in the OpenTelemetry space. Okay, wonderful! Let’s change gears and start looking at the APM dashboard.&lt;/p&gt;
&lt;p&gt;Before we go there, let&amp;rsquo;s talk about what APM is for a second. Why do we care? What is it?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
APM is a very old concept—over 15 years old. We’ve had several generations of monitoring tools. APM stands for Application Performance Monitoring. I see APM as a monitoring and observability technology that helps you monitor your application and understand its health.&lt;/p&gt;
&lt;p&gt;When I think about it, the first thing that comes to mind is understanding if my service is healthy or unhealthy. In a distributed architecture, I need to see my service in the context of the connections between services, typically represented with a service map. If I find something unhealthy, I need to drill down to see the health of a service. This means switching back and forth between the service metrics, which are more aggregated, and the traces, which give indications of how business transactions are executed.&lt;/p&gt;
&lt;p&gt;I also need to access logs to verify how things really happen and if there are messages that help me understand the problem. This is how I understand my service. Additionally, my service is deployed on a runtime and middleware, so I need to be able to zoom lower to see how it&amp;rsquo;s behaving on the Kubernetes pod or Linux box.&lt;/p&gt;
&lt;p&gt;APM allows me to switch back and forth between all layers, zooming in and out all the time across all telemetry types. This is essential for understanding health and troubleshooting. Another dimension is detecting anomalies, so I can wake people up at night when something goes wrong. This is where I create alerts and notifications.&lt;/p&gt;
&lt;p&gt;In the past, with monoliths, we created many alerts, but now we adopt best practices with SLOs, observing workflows, and root cause analysis. This is my vision of APM and why I think it’s more important than ever.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
When you talk about application performance management or monitoring, do you differentiate that from the wider field of observability? Some people say APM sounds outdated because it focuses on the application or just on performance, which is ambiguous.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
The monitoring landscape has evolved a lot. With cloud-native architecture, many things have changed, and we had to change our best practices. The best practices from 20 years ago in monoliths are not the same as today’s best practices for distributed cloud-native architectures.&lt;/p&gt;
&lt;p&gt;There were disruptions in the past by innovators who focused primarily on traces, and we learned a lot from that. But now I think the landscape is getting more stable. We recognize the value in metrics, traces, and logs, and we’ve evolved our best practices to leverage the best of all three.&lt;/p&gt;
&lt;p&gt;Some people prefer to call it observability. I know there are nuances, but this is my current perspective.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
It&amp;rsquo;s good to synchronize on terms. It sounds like we are on the same page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Now, with microservices architecture, we focus more on alerting symptoms rather than causes, centering more on the health of the application and the service provided to users than on the infrastructure layer. So, application monitoring or observability is becoming the entry point for people in charge of keeping the systems running.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
Why don’t we take a look at the dashboard and go through it?&lt;/p&gt;
&lt;h3 id="apm-dashboard-exploration"&gt;APM Dashboard Exploration&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
We will cover different parts of the dashboard throughout the hour. Let’s start with the top row—the red metrics. You can call them duration, error, and request rate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
I believe the red metrics were created by Tom Wilkerson, who still works at Grafana. I think it was looCyrilley based on the Google SRE book, even though they didn&amp;rsquo;t explicitly say “red” there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
When you think about any particular service, you would think about some well-known terminology, which might be service level indicators, or just your application. Service level indicators talk more about what&amp;rsquo;s important for the application, while red metrics focus more on the telemetry itCyrillef, like the raw data behind your SLI.&lt;/p&gt;
&lt;p&gt;One thing that stands out is the alerts. It looks pretty awesome to see that something violates the threshold we&amp;rsquo;ve set—probably high latency. Let’s explore it. We see it&amp;rsquo;s been firing for 17 hours. That’s quite a duration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
That’s not so good. Let’s see the alert on the latency. The P95 is firing for a specific operation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
We can look at this chart, which shows the latency around P99, which is like 18 milliseconds. Is it really a problem?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
No, it was for the demo. It&amp;rsquo;s very situational; it depends on your services. The focus was to show practitioners best practices for creating alerts on HTTP endpoints. Typically, you have two families of alerts: latency alerts and error rate alerts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
We decided to take P95 as a commonly adopted indicator. Some take P99, but P95 is often more relevant. Something that&amp;rsquo;s perhaps not noted here is that we take a time interval of 5 minutes. We wanted to provide this out of the box because it relates to the data collection interval, which is typically every minute for hotel setups and quite common in Prometheus.&lt;/p&gt;
&lt;p&gt;Having a 5-minute window is quite good. These are best practices we worked on, identifying good labels to help practitioners succeed by easily routing alerts to the right people and having the right notification schemes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
Imagine if there was actually high latency. Now we can enable this view and look at the examples of operations with the worst performance—like the outliers you would see here. We use Jaeger as a store for telemetry, and if it were any other store that supports tracing, you would see something similar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
This brings us to the Jaeger UI. I don&amp;rsquo;t want to spend a lot of time here, but it’s just another confirmation that nothing is visibly wrong with this operation. Things are just going a bit slower in the cloud, as usual.&lt;/p&gt;
&lt;h4 id="alert-analysis"&gt;Alert Analysis&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
We talked about alerts. There are other interesting things in this picture. For example, the request rate is pretty normal. If there were a spike in usage, we would see it here. The error rate looks good—there are no errors. By looking at these three metrics, you can get a basic understanding of the health of your system and this specific service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
This dashboard illustrates years of best practices that the industry has accumulated. We have layers of information. At the top, you have your service identifier, the last metrics received time, and the overview of the aggregated service red metrics.&lt;/p&gt;
&lt;p&gt;This aggregated view across all operations of my service will help you decide if this service is healthy or not. If you have doubts or think something is going wrong, P95 is good at surfacing outliers.&lt;/p&gt;
&lt;p&gt;Typically, you will scroll down to the HTTP or gRPC operations, where you have the details broken down by operation. It’s likely that not all business operations have problems; it could be just a subset of them.&lt;/p&gt;
&lt;p&gt;Here you can see the outbound services. If you have a problem, this data will help you understand if it’s happening within your service or is it a downstream service. In microservices architecture, that’s always a question.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
Are those dashboards powered exclusively by metrics?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Everything is powered by metrics, specifically the OpenTelemetry semantic conventions. Initially, the OpenTelemetry demo derived metrics from spans, which was a great idea four years ago, but it had some limits. Now, OpenTelemetry has standardized some semantic conventions for HTTP server calls, client calls, database client calls, RPC calls, and messaging.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
I noticed during my time with the demo that the coverage of metrics is uneven across programming languages. Java, for instance, has great instrumentation, while in other languages, it depends on the instrumentation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Yes, that’s true. It’s uncommon for OpenTelemetry instrumentations to emit logs these days, but let’s move on to that.&lt;/p&gt;
&lt;h3 id="logs-and-observability"&gt;Logs and Observability&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
So, what’s the deal with logs? Why are they not as important?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Logs are traditionally outputted in stdout, and we’ve lost Nicole. [laughter] The challenge is that traces and metrics are captured by SDKs within your app, while logs come from external log collectors, making correlation tough. When we discuss with practitioners and tell them that the OpenTelemetry SDK can directly export logs, they often respond that their log processes are mature and they can’t disrupt them just to trust the new kid on the block.&lt;/p&gt;
&lt;p&gt;It takes time to change your log toolchain. And while OpenTelemetry SDKs have capabilities to directly export logs, it’s not easy to get people to change practices they’ve had for 30 years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
To demonstrate Cyrille’s point about correlation, the most basic way to correlate is by trace ID and span ID. When we capture distributed traces, we can also attribute logs to the specific operation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Yes, and when we look at a trace inside Grafana, we can see logs associated with it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
If we open the trace view, we can see the details for this operation. There are a bunch of attributes you can correlate to understand what happened.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Logs provide the details. I think the negative sentiment around logs came from the idea that they don’t work as well in distributed applications as they did in monolithic applications. We had to evolve our practices to log the right way for distributed applications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
It’s user error because logs are the signals you can abuse the most. You can put anything in a log line, which causes issues. With metrics, you don’t have as much leeway, which makes it simpler to deal with.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Yes, and we need to convince users that going into log analytics tools is much more efficient than tailing logs directly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
It is more complicated to analyze logs than traces because they aren’t always structured.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Exactly. We have to help organizations better structure their logs for better value.&lt;/p&gt;
&lt;h3 id="questions-and-community-engagement"&gt;Questions and Community Engagement&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
We have a question here. “We are planning to adopt the LGTM stack as an observability platform. Is there any blueprint documentation aligned with observability 2.0?”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
LGTM stands for Loki, Grafana, Tempo, and Mimir. It’s an integrated solution. Observability 2.0 is about unified telemetry—having everything correlated and not just reacting to errors. It’s about understanding business impacts when you decrease response times.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
So, it’s more about understanding the overall system rather than just monitoring.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Yes, exactly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
How do I know which metrics and traces to prioritize first when instrumenting a distributed system with OpenTelemetry?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
We recommend starting with auto-instrumentation first. It provides metrics and traces at a technical level, and with HTTP, the endpoints are meaningful from a business standpoint. You start with auto-instrumentation and then add custom instrumentation on critical workflows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
What’s the current state of the OpenTelemetry demo? Can it monitor infrastructure as well?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Yes, OpenTelemetry was born in the application layer, but infrastructure monitoring came a bit later. We’re working with the hotel demo folks to showcase better infrastructure monitoring done by OpenTelemetry.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
If people want to contribute or try out the hotel demo for themCyrilleves, where should they go?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
I posted the link in the chat to the OpenTelemetry site.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
If you want to participate in the demo, we have community meetings, and I can share another link in the channel for more information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Liudmila:&lt;/strong&gt;&lt;br&gt;
Great! Thank you both for being here and for everyone watching. I think that&amp;rsquo;s a great way to end this call.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyrille:&lt;/strong&gt;&lt;br&gt;
Thank you very much! It was a pleasure to be invited and an honor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;&lt;br&gt;
Thank you!&lt;/p&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics: Observability for AI (Newcrafts 2025)</title><link>https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/</link><pubDate>Thu, 06 Nov 2025 12:23:19 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/</guid><description>&lt;p&gt;Today I presented at &lt;a href="https://ncrafts.io/"&gt;Newcrafts&lt;/a&gt; in Paris, France. I gave a talk I&amp;rsquo;ve given before, called &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Observability for AI&lt;/em&gt;, which I had previously presented at &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU&lt;/a&gt; in London and at &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; in Utrecht. I was happy to present it again, as it gave me the chance to further refine my demo application, which you can find on &lt;a href="https://nicole.to/asimov"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main change I made was to use the &amp;ldquo;AI as judge&amp;rdquo; approach that I had previously only talked about in theory. In this version of the demo app, I use AI in both the game as well as in the testing of the game, showing how AI can be integrated into both the application and its observability/testing stack. It was really interesting to note that testing with AI ended up exposing more defects than my hardcoded test cases did, which goes to show the potential of AI-driven testing.&lt;/p&gt;</description></item><item><title>The Spice Must Flow: The Fremen Guide to Sustainable Observability (Øredev 2025)</title><link>https://nicolevanderhoeven.com/blog/20251105-the-spice-must-flow/</link><pubDate>Wed, 05 Nov 2025 03:07:38 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20251105-the-spice-must-flow/</guid><description>&lt;p&gt;Today I gave a talk at &lt;a href="https://oredev.org/"&gt;Øredev 2025&lt;/a&gt; in Malmö, Sweden, titled +The Spice Must Flow: The Fremen Guide to Sustainable Observability&amp;quot;_. The presentation focused on how to implement sustainable observability practices using open-source tools like Grafana, Prometheus, Loki, Tempo, KEDA, and Kepler. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nobody wants to be wasteful. But how do you balance that with the need for enough data to fix things when they go wrong? After all, no matter how much it costs, there are SLOs to keep. The spice&amp;ndash; the telemetry&amp;ndash; must flow.&lt;/p&gt;
&lt;p&gt;The Fremen are a people who live on the planet Arrakis, simultaneously rich in spice while poor in water. But the Fremen have managed to thrive, not just survive, on very little while continuing to produce spice. What would it take to apply this &amp;ldquo;desert planet thinking&amp;rdquo; to observability?&lt;/p&gt;
&lt;p&gt;In this talk, you&amp;rsquo;ll learn about the hidden environmental and financial costs of your observability stack and how to reduce them. You&amp;rsquo;ll learn about the complications of measuring cost for ephemeral resources on Kubernetes, how to use KEDA to &amp;ldquo;right-size&amp;rdquo; resources when you don&amp;rsquo;t know what the right size is, and how to convince your teams to drop all but the most meaningful telemetry data. In the end, the spice must flow, but there must still be enough water to sustain all.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here are some resources mentioned in the talk:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can play the game Spice Runner &lt;a href="https://nicole.to/spicegame"&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicole.to/spicerepo"&gt;The spice-runner repo&lt;/a&gt; containing everything you need to know about how to deploy it yourself&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicole.to/spiceslides"&gt;The slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicole.to/spicedashboard"&gt;The Spice Runner dashboard&lt;/a&gt; for observing the application&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/projects/spice-runner/"&gt;More about Spice Runner&lt;/a&gt;: architecture, tech stack, and what it demonstrates&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/2025-11-05-oredev.JPG" alt="Photo of me at Øredev 2025" loading="lazy" decoding="async"&gt;
&lt;/p&gt;</description></item><item><title>Deploying Loki on Kubernetes via Helm (Loki Community Call October 2025)</title><link>https://nicolevanderhoeven.com/blog/20251029-lcc-deploying-loki-on-kubernetes-via-helm/</link><pubDate>Wed, 29 Oct 2025 18:04:30 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20251029-lcc-deploying-loki-on-kubernetes-via-helm/</guid><description>&lt;p&gt;This Loki Community Call is about deploying Loki on Kubernetes via Helm charts. We talk about why you might want to use Helm to deploy on Kubernetes, best practices for deployment, and which Helm chart you should use! We are Jay Clifford and Nicole van der Hoeven, Developer Advocates at Grafana Labs, and we have invited Grafana Champion and Loki Helm Maintainer Jan-Otto Kröpke, Principal Cloud Architect at QualityOperations GmbH, to talk about the state of the Loki Helm Chart.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZqumpIXutXg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Declarative Configuration in OpenTelemetry SDKs (Grafana ❤️‍🔥 OpenTelemetry Community Call October 2025)</title><link>https://nicolevanderhoeven.com/blog/20251022-gocc01-declarative-config-in-otel/</link><pubDate>Wed, 22 Oct 2025 15:02:21 -0700</pubDate><guid>https://nicolevanderhoeven.com/blog/20251022-gocc01-declarative-config-in-otel/</guid><description>&lt;p&gt;I&amp;rsquo;m very lucky to have the opportunity to work with &lt;a href="https://www.linkedin.com/in/lmolkova/"&gt;Liudmila Molkova&lt;/a&gt;, who just joined as a Staff Developer Advocate at Grafana Labs. We decided we would start a new monthly livestream called the Grafana ❤️‍🔥 OpenTelemetry Community Call. In this inaugural episode, we interviewed &lt;a href="https://www.linkedin.com/in/maryliag/"&gt;Marylia Gutierrez&lt;/a&gt; about declarative configuration for OpenTelemetry SDKs. We talked about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pains in getting started with OpenTelemetry, particularly around instrumentation and configuration&lt;/li&gt;
&lt;li&gt;What declarative configuration is, and how it improves the experience&lt;/li&gt;
&lt;li&gt;Which languages declarative configuration is for&lt;/li&gt;
&lt;li&gt;The future of declarative configuration in OpenTelemetry&lt;/li&gt;
&lt;li&gt;Marylia&amp;rsquo;s candidacy for Governing Committee of OTel (&lt;a href="https://gra.fan/otelvote"&gt;vote for her here&lt;/a&gt; from October 27th-30th, 2025)&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/FwnyV5z_ij4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>One Year Later: How I Use Visuals in My PKM (Sketch Your Mind Conference)</title><link>https://nicolevanderhoeven.com/blog/20251013-how-i-use-visuals-in-my-pkm/</link><pubDate>Mon, 13 Oct 2025 13:33:18 -0700</pubDate><guid>https://nicolevanderhoeven.com/blog/20251013-how-i-use-visuals-in-my-pkm/</guid><description>&lt;p&gt;Today I gave &lt;a href="https://sketch-your-mind.com/2025/sessions/nicole/"&gt;a talk&lt;/a&gt; at my friend Zsolt Viczián&amp;rsquo;s &lt;a href="https://sketchyourmind.com/"&gt;Sketch Your Mind Conference&lt;/a&gt; about how I use visuals in my PKM, a follow-up to my video about Obsidian Excalidraw last year where I shared that I&amp;rsquo;d changed all my Obsidian templates to hybrid Obsidian Excalidraw notes:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/zmgqMZi6QL8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;In the talk, I shared how I&amp;rsquo;ve evolved my use of visuals in my PKM over the last year, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Referring to icon and logo libraries that dynamically compile all the atomic visuals I use in my notes&lt;/li&gt;
&lt;li&gt;Adopting a visual Zettelkasten-like approach&lt;/li&gt;
&lt;li&gt;Creating notes at conferences to track people I&amp;rsquo;ve met and talks I&amp;rsquo;ve attended&lt;/li&gt;
&lt;li&gt;Using Obsidian Excalidraw to create compelling presentations in lieu of slides&lt;/li&gt;
&lt;li&gt;Combining visuals with audio recordings to create literature notes of books I&amp;rsquo;m reading&lt;/li&gt;
&lt;li&gt;Using a full observability pipeline to monitor and analyze the notes in my Obsidian vault&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was particularly excited about the last point. I work at Grafana Labs and help people monitor their computer systems using opensource software. I realized that I could use the same tools to monitor my PKM system, so I set up a pipeline where a Python script scrapes note metadata, and sends information to Loki and Prometheus via Alloy, and then I visualize it all in Grafana. It&amp;rsquo;s a pretty nerdy and totally unnecessary setup, but &lt;a href="https://github.com/nicolevanderhoeven/obsidian-grafana"&gt;here&amp;rsquo;s the repo&lt;/a&gt; for anyone interested in replicating it.&lt;/p&gt;</description></item><item><title>How to Turn Logs Into Metrics with Grafana Loki (Loki Community Call July 2025)</title><link>https://nicolevanderhoeven.com/blog/20250708-lcc-how-to-turn-logs-into-metrics-with-grafana-loki/</link><pubDate>Tue, 08 Jul 2025 17:23:23 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20250708-lcc-how-to-turn-logs-into-metrics-with-grafana-loki/</guid><description>&lt;p&gt;In this Loki Community Call, we talk all about how to turn metrics into logs in Grafana Loki using metric queries. We cover the basics of metric queries, how to use them to create metrics from logs, and some advanced use cases like using metric queries to create alerts and dashboards.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/tKcnQ0Q2E-k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics (Dutch Cloud Native Day 2025)</title><link>https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/</link><pubDate>Thu, 03 Jul 2025 15:01:24 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/</guid><description>&lt;p&gt;Today I presented at the &lt;a href="https://www.dutchcloudnativeday.nl"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; in Utrecht, the Netherlands. I gave a talk titled &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Observability for AI&lt;/em&gt;, which I had previously presented at &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU&lt;/a&gt; earlier on in the year, in London. I was very happy to be able to present it again, because it gave me the opportunity to improve the demo app I used, which you can find on &lt;a href="https://nicole.to/asimov"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/2025-07-03-dcnd_01.jpg" alt="Me speaking at Dutch Cloud Native Day 2025" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/2025-07-03-dcnd_02.jpg" alt="Me speaking at Dutch Cloud Native Day 2025" loading="lazy" decoding="async"&gt;
&lt;/p&gt;</description></item><item><title>The Road to Loki 4.0 (Loki Community Call June 2025)</title><link>https://nicolevanderhoeven.com/blog/20250624-lcc-the-road-to-loki-4_0/</link><pubDate>Tue, 24 Jun 2025 13:56:45 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20250624-lcc-the-road-to-loki-4_0/</guid><description>&lt;p&gt;In this video, my colleague &lt;a href="https://www.linkedin.com/in/jaymand13/"&gt;Jay Clifford&lt;/a&gt; and I interview Ed Welch, Principal Engineer on the Loki team at Grafana Labs, about the upcoming Loki 4.0 release. We talk about some pretty big features that make this next release almost an entire rewrite of Loki, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A shift towards columnar storage, using a new storage format called &amp;ldquo;DataObject&amp;rdquo;&lt;/li&gt;
&lt;li&gt;A new Kafka/WarpStream architecture that decouples the read and write paths&lt;/li&gt;
&lt;li&gt;A new Loki Query Engine that decouples the query language from the rest of the system, allowing for more options in, for example, allowing for SQL queries against Loki in the future&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/LWDeIHfAC9A?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Query Grafana Loki</title><link>https://nicolevanderhoeven.com/blog/20250612-how-to-query-grafana-loki/</link><pubDate>Fri, 13 Jun 2025 15:21:49 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20250612-how-to-query-grafana-loki/</guid><description>&lt;p&gt;In this video, I show you how to query &lt;a href="https://gra.fan/lokirepo"&gt;Grafana Loki&lt;/a&gt;, the open source log aggregation system from Grafana Labs. I cover the basics of Loki&amp;rsquo;s query language, LogQL, and demonstrate how to use it to filter and search logs effectively.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/57dQwcmqkpQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>State of the Observability Databases (Grafana Office Hours #30)</title><link>https://nicolevanderhoeven.com/blog/20250515-goh30-state-of-the-observability-databases/</link><pubDate>Thu, 15 May 2025 18:22:26 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20250515-goh30-state-of-the-observability-databases/</guid><description>&lt;p&gt;In this Grafana Office Hours, we talk about the state of observability databases (Grafana Loki, Mimir, Tempo, and Pyroscope) and where they&amp;rsquo;re going. We talk about current and upcoming architectural changes in all four, how we&amp;rsquo;re making them more performant, how compatible they are with OpenTelemetry, and what we&amp;rsquo;re working on next for each database. In this conversation are Dee Kitchen (VP of Engineering for Databases) and Senior Developer Advocates Jay Clifford and Nicole van der Hoeven.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/6Ph5nvicm6M?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Meta-monitoring Loki (Loki Community Call May 2025)</title><link>https://nicolevanderhoeven.com/blog/20250512-lcc-meta-monitoring-loki/</link><pubDate>Mon, 12 May 2025 17:59:48 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20250512-lcc-meta-monitoring-loki/</guid><description>&lt;p&gt;In this Loki Community Call, we talk about the need for meta-monitoring Loki: why Loki needs to be monitored, what to watch out for, and how to do it. We talk about different ways to get information from Loki that allow you to make it reliable, consistent, and performant, including a Helm chart to deploy a meta-monitoring stack on Kubernetes. We discuss the Loki mixin for Grafana and how to use it to visualize data about Loki. On the call are Jay Clifford, Nicole van der Hoeven, and Dylan Guedes from Grafana Labs.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/OzYHV9xHIms?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>All about OTel and Logging on Kubernetes with Loki (Loki Community Call April 2025)</title><link>https://nicolevanderhoeven.com/blog/20250425-lcc-all-about-otel-and-logging-on-kubernetes-with-loki/</link><pubDate>Fri, 25 Apr 2025 17:57:58 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20250425-lcc-all-about-otel-and-logging-on-kubernetes-with-loki/</guid><description>&lt;p&gt;In this pre-recorded Loki Community Call, we talk all about OTel and logging on Kubernetes with Cyril Tovena, Ward Bekker, Jay Clifford, and Nicole van der Hoeven at KubeCon EU 2025 in London. We discuss when why you should switch to OTel and why you shouldn&amp;rsquo;t, what OTLP is exactly, and best practices for ingesting data through an OTLP endpoint.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/27ZHOg-LaM0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics: Observability for AI (KubeCon EU 2025)</title><link>https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/</link><pubDate>Wed, 02 Apr 2025 13:46:42 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/</guid><description>&lt;p&gt;Today I gave a talk at &lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/"&gt;KubeCon EU 2025 in London&lt;/a&gt; called &amp;ldquo;Asmiov&amp;rsquo;s Zeroth Law of Robotics: Observability for AI&amp;rdquo;. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A robot may not harm humans. A robot must obey humans. A robot must protect its own existence. These are Isaac Asimov&amp;rsquo;s three Laws of Robotics, created to govern the ethical programming of artificial intelligences. From the Butlerian Jihad to Skynet to cylons, we&amp;rsquo;ve been immortalizing our collective nightmares about artificial intelligence for years. But there&amp;rsquo;s an unmentioned law that comes as a prerequisite to all of that: a robot must be observable.&lt;/p&gt;
&lt;p&gt;In this talk, I discuss the different types of AI, the factors that make observing AI different from observing applications, and the telemetry signals specific to AI that we might want to listen to. How do we deal with large data sets? How do we observe for model drift? How do we take into account the costs of LLMs? How can we use distributed tracing to follow event sequences? Part cautionary tale and part technical demo, this talk shows how to instrument and monitor AI apps using OpenTelemetry, Prometheus, OpenLit, and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/x6EKTCAWtn8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Do's and Don'ts of Scaling Loki Cache (Loki Community Call March 2025)</title><link>https://nicolevanderhoeven.com/blog/20250325-lcc-dos-and-donts-of-scaling-loki-cache/</link><pubDate>Tue, 25 Mar 2025 17:56:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20250325-lcc-dos-and-donts-of-scaling-loki-cache/</guid><description>&lt;p&gt;In this Loki community call, Poyzan (Staff Engineer on the Loki team) returns this time with Paul Rogers (Staff Engineer on the Loki team) to talk all about Loki cache! This topic was heavily discussed in our &amp;ldquo;How to run Loki at scale on Kubernetes&amp;rdquo; call. Some of the topics we will cover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Types of cache and cache tiering&lt;/li&gt;
&lt;li&gt;Best practices for scaling your cache&lt;/li&gt;
&lt;li&gt;Understanding failure scenarios with Loki cache and how to detect them&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/3u8UxLfmq6I?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Best Practices for Recording and Alerting (Loki Community Call February 2025)</title><link>https://nicolevanderhoeven.com/blog/20250226-lcc-best-practices-for-recording-and-alerting/</link><pubDate>Wed, 26 Feb 2025 17:54:15 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20250226-lcc-best-practices-for-recording-and-alerting/</guid><description>&lt;p&gt;In this Loki Community Call, we talk about the best practices for recording and alerting rules with Loki Staff Engineer George Robinson and Senior Developer Advocates Jay Clifford and Nicole van der Hoeven. Ever wondered what’s the difference between the Ruler and Alertmanager? 🤔 Curious about the different modes the Ruler can run in when querying Loki? Want to avoid the most common pitfalls when setting up alerting and recording rules? We cover all of these, including optimizing rule performance to structure alerts effectively.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/3_DtwTOppiI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Run Loki at Scale on Kubernetes (Loki Community Call January 2025)</title><link>https://nicolevanderhoeven.com/blog/20250123-lcc-how-to-run-loki-at-scale-on-kubernetes/</link><pubDate>Thu, 23 Jan 2025 17:51:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20250123-lcc-how-to-run-loki-at-scale-on-kubernetes/</guid><description>&lt;p&gt;Happy New Year from the Loki Engineering team. To kick off 2025, Nicole and Jay will be joined by Poyzan Taneli from the Loki Engineering team to discuss how to run Loki at scale on Kubernetes. If you are currently running Loki in microservices mode or preparing to do so, we will be discussing best practices for scaling its components to meet the demands of production use cases.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How many Ingesters vs Queriers do I need?&lt;/li&gt;
&lt;li&gt;What is the minimum cost of running Loki as a production cluster?&lt;/li&gt;
&lt;li&gt;What is the average node size for running Loki?
How do I monitor my Loki deployment?&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/lAr0GwuZHiw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Grafana Loki Query Best Practices with LogQL (Loki Community Call December 2024)</title><link>https://nicolevanderhoeven.com/blog/20241205-lcc-grafana-loki-query-best-practices-with-logql/</link><pubDate>Thu, 05 Dec 2024 17:48:49 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20241205-lcc-grafana-loki-query-best-practices-with-logql/</guid><description>&lt;p&gt;In this December&amp;rsquo;s Loki Community Call, Cyril Tovena, Senior Principal Engineer and LogQL guru walks us through a Grafana Loki query tutorial with LogQL, the Log Query Language used for Loki. He talks about the key &amp;ldquo;Dos and Don&amp;rsquo;ts&amp;rdquo; of LogQL, offering practical tips to help you write better queries, boost performance, and sidestep common mistakes.&lt;/p&gt;
&lt;p&gt;Whether you’re tuning up your current setup or just diving into LogQL, Cyril’s got you covered. Bring your questions, connect with the Loki community, and pick up insights that’ll make your log-querying life easier. See you there!&lt;/p&gt;
&lt;p&gt;Make sure you leave your questions &lt;a href="https://forms.gle/nm7TGX2EeWnRLmbs6"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cyril is joined by Senior Developer Advocates Jay Clifford and Nicole van der Hoeven.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/d61nQX-n91c?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>AI Observability with Ishan Jain (Grafana Office Hours #29)</title><link>https://nicolevanderhoeven.com/blog/20241108-goh29-ai-observability-with-ishan-jain/</link><pubDate>Fri, 08 Nov 2024 18:24:29 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20241108-goh29-ai-observability-with-ishan-jain/</guid><description>&lt;p&gt;In this Grafana Office Hours, Ishan Jain talks about AI Observability with Grafana: what it entails, factors to consider when monitoring and observing LLMs, and how to do it all with Grafana. He is joined by Senior Developer Advocate Nicole van der Hoeven.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/9X7M-bvnZG0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>All About Logs Drilldown (Loki Community Call October 2024)</title><link>https://nicolevanderhoeven.com/blog/20241003-lcc-all-about-logs-drilldown/</link><pubDate>Thu, 03 Oct 2024 17:45:33 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20241003-lcc-all-about-logs-drilldown/</guid><description>&lt;p&gt;In this Community Call, Senior Software Engineer Trevor Whitney talks to us all about Drilldown Logs for Grafana Loki, an open-source app for visualizing logs from Loki in Grafana without needing to learn and write LogQL queries. He is joined by Senior Developer Advocates Nicole van der Hoeven and Jay Clifford.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/XJMQbEuBeMc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>All the Components of Loki Explained</title><link>https://nicolevanderhoeven.com/blog/20240920-all-the-components-of-loki-explained/</link><pubDate>Fri, 20 Sep 2024 18:09:35 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240920-all-the-components-of-loki-explained/</guid><description>&lt;p&gt;Here are all the components of Loki explained so that you can figure out how many instances of each you need for a resilient Loki deployment. Senior Developer Advocates Jay Clifford and Nicole van der Hoeven talk you through what each component does and which ones are optional.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/_hv4i84Z68s?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Bloom Filter Changes for Grafana Loki (Loki Community Call September 2024)</title><link>https://nicolevanderhoeven.com/blog/20240905-lcc-bloom-filter-changes-for-grafana-loki/</link><pubDate>Thu, 05 Sep 2024 17:41:18 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240905-lcc-bloom-filter-changes-for-grafana-loki/</guid><description>&lt;p&gt;In this Community Call, Senior Software Engineer Christian Haudum talks to us about bloom filter changes for Grafana Loki, including the deprecation of the bloom compactor and a pivot towards creating bloom filters for structured metadata. Bloom filters are a probabilistic data structure that we&amp;rsquo;re using to improve query performance in Loki.&lt;/p&gt;
&lt;p&gt;Community Calls are monthly meetings that are open to everyone interested in the development of Loki. They are an opportunity for software engineers working on Loki to discuss new features as well as for open-source users of Loki to ask questions. To participate in the next Community Call, &lt;a href="https://gra.fan/lokicccal"&gt;subscribe to the calendar here&lt;/a&gt;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/keXrUf8jw1A?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>API Monitoring with Traefik, Grafana, and OpenTelemetry (Grafana Office Hours #28)</title><link>https://nicolevanderhoeven.com/blog/20240712-goh28-api-monitoring-with-traefik-grafana-and-opentelemetry/</link><pubDate>Fri, 12 Jul 2024 18:27:03 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240712-goh28-api-monitoring-with-traefik-grafana-and-opentelemetry/</guid><description>&lt;p&gt;Maytham Alfouadi (Solutions Architect) and Immánuel Fodor (Product Manager) from Traefik Labs give us a demonstration of how to do API monitoring with Traefik, Grafana, and OpenTelemetry. They talk about Traefik, an open-source reverse proxy, among other things, that is now included by default in k3s and Rancher. They are joined by Usman Ahmad and Nicole van der Hoeven, both Senior Developer Advocates at Grafana Labs.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/1Buk3wPpJdY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Cartography of the Deep: Distributed Tracing for Testing (Romanian Testing Conference)</title><link>https://nicolevanderhoeven.com/blog/20240613-cartography-of-the-deep/</link><pubDate>Thu, 13 Jun 2024 12:24:02 -0700</pubDate><guid>https://nicolevanderhoeven.com/blog/20240613-cartography-of-the-deep/</guid><description>&lt;p&gt;I presented a talk today at the Romanian Testing Conference 2024 in Cluj-Napoca, Romania! My talk was called &amp;ldquo;Cartography of the Deep: Distributed Tracing for Testing&amp;rdquo; and it covered how to tie in distributed tracing into tests to get a better understanding of your system under test.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://nicole.to/rtc2024"&gt;Here are my slides&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/rtc2024-02.jpg" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/rtc2024-01.jpg" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="abstract"&gt;Abstract&lt;/h2&gt;
&lt;p&gt;From the Scandinavian Kraken that drags entire ships to their early graves to the Philippine Bakunawa said to rise from the waters to swallow the moon, our existential fears about what lurks at the bottom of our own oceans has inspired us to create hundreds of folkloric monsters across cultures. We&amp;rsquo;ve charted the surface of our planet, but the vast majority of the ocean floor remains a mystery.&lt;/p&gt;
&lt;p&gt;The mysterious depths of modern software architectures makes it difficult for us to test a system for performance and reliability. The easy solution? Unmanned underwater probes: send inputs to the system, and judge its state based on the outputs that return. But this method is often too limited to tell us what&amp;rsquo;s really going on when something goes wrong. What if there were a way to make our tests themselves more observable?&lt;/p&gt;
&lt;p&gt;In this talk, you will learn how to use open-source tools to instrument performance tests, identify bottlenecks at the code level using distributed tracing, and map out a system using a type of software bathymetry. You&amp;rsquo;ll also learn about the Mariana Trench expeditions, the difficulties of operating in a high-pressure underwater environment, and how to come face to face with monsters of our mythologies.&lt;/p&gt;</description></item><item><title>Grafana Loki Design Basics with Ed Welch (Grafana Office Hours #27)</title><link>https://nicolevanderhoeven.com/blog/20240607-goh27-grafana-loki-design-basics-with-ed-welch/</link><pubDate>Fri, 07 Jun 2024 18:29:26 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240607-goh27-grafana-loki-design-basics-with-ed-welch/</guid><description>&lt;p&gt;Ed Welch, Principal Engineer on the Loki team, is talking to us about how to get started with Grafana Loki for beginners. He tells us the story of why Loki was created in the first place, talks about the terminology of Loki (what are indices, streams, labels, metadata, tags, and chunks?), and shares candidly about what Loki is good at and what it&amp;rsquo;s not good at.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/3uFMJLufgSo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Get Started With Loki</title><link>https://nicolevanderhoeven.com/blog/20240510-how-to-get-started-with-loki/</link><pubDate>Fri, 10 May 2024 18:12:09 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240510-how-to-get-started-with-loki/</guid><description>&lt;p&gt;If you were looking for how to get started with Loki, here&amp;rsquo;s a video where Senior Developer Advocates Jay Clifford and Nicole van der Hoeven talk about what Loki is, how to ingest logs with Loki, how to deploy Loki, and finally how to visualize your logs with Grafana.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/1uk8LtQqsZQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to do continuous profiling right with Grafana Pyroscope and Ryan Perry, (Grafana Office Hours #26)</title><link>https://nicolevanderhoeven.com/blog/20240119-goh26-how-to-do-continuous-profiling-right-with-grafana-pyroscope/</link><pubDate>Fri, 19 Jan 2024 18:09:01 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240119-goh26-how-to-do-continuous-profiling-right-with-grafana-pyroscope/</guid><description>&lt;p&gt;My friend &lt;a href="https://javaducky.com"&gt;Paul Balogh&lt;/a&gt; and I interview &lt;a href="https://ryanperry.io"&gt;Ryan Perry&lt;/a&gt;, co-founder of Grafana Pyroscope, about how to do continuous profiling right. Ryan, and the rest of the Pyroscope team, joined Grafana Labs, where he is now a Director of Engineer. Ryan discusses the main concerns in continuous profiling and how to avoid those pitfalls. Pyroscope is an open-source project for aggregating continuous profiling data about your system&amp;rsquo;s resources.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/pzNRvMQzrJ0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Pyroscope &lt;a href="https://grafana.com/docs/pyroscope/"&gt;docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pyroscope &lt;a href="https://pyroscope.io/"&gt;site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pyroscope &lt;a href="https://github.com/grafana/pyroscope"&gt;repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Weigh in on the &lt;a href="https://github.com/open-telemetry/oteps/pull/239"&gt;OpenTelemetry Profiling Data Model&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to Deploy Grafana Beyla on Kubernetes as a Sidecar Container</title><link>https://nicolevanderhoeven.com/blog/20240109-how-to-deploy-grafana-beyla-on-kubernetes-as-a-sidecar-container/</link><pubDate>Tue, 09 Jan 2024 13:41:38 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240109-how-to-deploy-grafana-beyla-on-kubernetes-as-a-sidecar-container/</guid><description>&lt;p&gt;Principal Staff Engineer Nikola Grčevski demonstrates how to deploy Grafana Beyla on Kubernetes as a sidecar container. Grafana Beyla is an eBPF auto-instrumentation tool for application observability: you just have to tell it what to listen to, give it permissions, and deploy it&amp;ndash; and you can see metrics and logs from that component or service without having to do any manual instrumentation.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/d7clTdz0bA4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/beyla/latest/setup/kubernetes/"&gt;Instructions for deploying Grafana Beyla on Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/beyla"&gt;Grafana Beyla on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Introduction to eBPF With Grafana Beyla (Grafana Office Hours #25)</title><link>https://nicolevanderhoeven.com/blog/20240105-goh25-introduction-to-ebpf-with-grafana-beyla/</link><pubDate>Fri, 05 Jan 2024 18:03:52 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20240105-goh25-introduction-to-ebpf-with-grafana-beyla/</guid><description>&lt;p&gt;Nikola Grčevski, Principal Software Engineer at Grafana Labs, gives us an introduction to eBPF with Grafana Beyla. We discuss what is eBPF, how you can use it to auto-instrument applications, and how to get started with Beyla. eBPF observability is all the rage because we all want automagical instrumentation&amp;ndash; but does it live up to that promise? Nikola&amp;rsquo;s here to tell us what eBPF can and can&amp;rsquo;t do, and where he&amp;rsquo;d like to take Beyla next.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZEUzucqXUnQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/beyla"&gt;Grafana Beyla repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/monitor-applications/beyla/"&gt;Grafana Beyla docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/monitor-applications/application-observability/"&gt;Application Observability docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI Microscopy with Grafana, Theia Scientific, and Volkov Labs (Grafana Office Hours #24)</title><link>https://nicolevanderhoeven.com/blog/20231215-goh24-ai-microscopy-with-grafana-theia-scientific-volkov-labs/</link><pubDate>Fri, 15 Dec 2023 17:42:58 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231215-goh24-ai-microscopy-with-grafana-theia-scientific-volkov-labs/</guid><description>&lt;p&gt;What do you get when you combine AI microscopy with Grafana? Well, in this case, you get the Theiascope platform: an application for doing real-time analysis on microscopy images using a combination of Grafana, Prometheus, and PostgreSQL/Timescale. The Theiascope platform was a collaboration between Dr. Christopher Field, Co-Founder/President/ Principal Investigator at Theia Scientific and Mikhail Volkov, Founder/CEO of Volkov Labs.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/BgRd-RAFMEE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Getting Started with OpenTelemetry (Grafana Office Hours #23)</title><link>https://nicolevanderhoeven.com/blog/20231208-goh23-getting-started-with-opentelemetry/</link><pubDate>Fri, 08 Dec 2023 17:00:23 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231208-goh23-getting-started-with-opentelemetry/</guid><description>&lt;p&gt;Principal Engineer Juraci Paixão Kröhling talks to my colleague &lt;a href="https://javaducky.com"&gt;Paul Balogh&lt;/a&gt; and me about getting started with OpenTelemetry: what it is, why everyone&amp;rsquo;s talking about it, and how to instrument your systems and improve their reliability and observability. Juraci is a contributor to open source projects like Jaeger and OpenTelemetry.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Xhh9V7uRP88?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Get Started with Tempo (Grafana Office Hours #22)</title><link>https://nicolevanderhoeven.com/blog/20231201-goh22-how-to-get-started-with-tempo/</link><pubDate>Fri, 01 Dec 2023 11:55:55 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231201-goh22-how-to-get-started-with-tempo/</guid><description>&lt;p&gt;Grafana Labs Principal Engineer and Tempo maintainer Joe Elliot talks about how to get started with Tempo, what distributed tracing is, and why TraceQL is cool. He is joined by Developer Advocates Nicole van der Hoeven and Paul Balogh.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/zDrA7Ly3ovU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=pUAmL28uzos"&gt;Getting started with Tempo&lt;/a&gt; (video)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/tempo"&gt;Grafana Tempo repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/tempo/latest/getting-started/"&gt;Grafana Tempo docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.grafana.com/c/grafana-tempo/40"&gt;The Tempo category on the Grafana community forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PLDGkOdUX1UjrA4D1MRdAzUgEGp5UXvW3z"&gt;Video playlist for Grafana Tempo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=petbezEmIw4"&gt;Distributed tracing with Grafana Cloud k6&lt;/a&gt; (Grafana Office Hours video)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to Use Flow Mode for Grafana Agent (Grafana Office Hours #21)</title><link>https://nicolevanderhoeven.com/blog/20231124-goh21-how-to-use-flow-mode-for-grafana-agent/</link><pubDate>Fri, 24 Nov 2023 11:47:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231124-goh21-how-to-use-flow-mode-for-grafana-agent/</guid><description>&lt;p&gt;Senior Software Engineer Matt Durham shows us how to use flow mode for Grafana Agent. Flow mode is a new and better way to install and configure Grafana Agent than the older &amp;ldquo;static mode&amp;rdquo;. Among other things, flow mode&amp;rsquo;s modularity makes it easier to build more complex workflows like traditional data pipelines and allows for more use cases than collecting and processing telemetry.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/-_SsFLoJvoc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/agent"&gt;Grafana Agent repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/agent/latest/"&gt;Grafana Agent docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/agent/latest/flow/"&gt;Grafana Agent flow mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtube.com/live/i0mA0w_MCPQ"&gt;What is Grafana Agent?&lt;/a&gt; (previous Grafana Office Hours video)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.grafana.com/"&gt;Grafana Slack&lt;/a&gt; - there&amp;rsquo;s an &lt;code&gt;#agent&lt;/code&gt; channel&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/document/d/1TqaZD1JPfNadZ4V81OCBPCG_TksDYGlNlGdMnTWUSpo/edit#heading=h.jkpb8gk2r6u8"&gt;Grafana Agent Community Call agenda&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/agent-modules"&gt;Modules for Grafana Agent&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Realistic Tests with Testcontainers (Grafana Office Hours #20)</title><link>https://nicolevanderhoeven.com/blog/20231117-goh20-realistic-tests-with-testcontainers/</link><pubDate>Fri, 17 Nov 2023 11:40:46 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231117-goh20-realistic-tests-with-testcontainers/</guid><description>&lt;p&gt;In this episode of Grafana Office Hours, we talk about realistic unit tests utilizing actual instances of databases and other dependencies. We&amp;rsquo;ll be joined by Manuel de la Peña from AtomicJar, and Pablo Chacin from Grafana to learn how we can use the Testcontainers open-source framework to create lightweight, throwaway dependencies for our tests.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/LtlRvmWzCRE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="related-links"&gt;Related links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://testcontainers.com/"&gt;Testcontainers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://testcontainers.com/modules/k3s/"&gt;k3s Module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://testcontainers.com/modules/k6/"&gt;k6 Module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Load Testing on Kubernetes with k6 Private Load Zones (Grafana Office Hours #19)</title><link>https://nicolevanderhoeven.com/blog/20231110-goh19-load-testing-on-kubernetes-with-k6-private-load-zones/</link><pubDate>Fri, 10 Nov 2023 10:46:48 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231110-goh19-load-testing-on-kubernetes-with-k6-private-load-zones/</guid><description>&lt;p&gt;This week, we&amp;rsquo;re talking about how you can do load testing on Kubernetes with k6 Private Load Zones, a new feature on Grafana Cloud k6 that leverages the k6 Kubernetes operator to allow you to run distributed load tests against applications behind a firewall. Here to discuss this new feature are Senior Software Engineer Olha Yevtushenko, Product Manager Daniel González Lopes, Developer Advocate Paul Balogh, and Senior Developer Advocate Nicole van der Hoeven.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/RXLavQT58YA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="related-links"&gt;Related links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/k6"&gt;The Grafana k6 repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/k6-operator"&gt;k6 operator repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/k6/author-run/private-load-zone-v2/"&gt;Docs on Private Load Zones in Grafana Cloud k6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Combining Frontend and Backend Performance With John Hill (Grafana Office Hours #18)</title><link>https://nicolevanderhoeven.com/blog/20231103-goh18-combining-frontend-and-backend-performance-with-john-hill/</link><pubDate>Fri, 03 Nov 2023 12:30:43 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231103-goh18-combining-frontend-and-backend-performance-with-john-hill/</guid><description>&lt;p&gt;In this episode of Grafana Office Hours, my colleagues &lt;a href="https://testingwithmarie.com"&gt;Marie Cruz&lt;/a&gt;, &lt;a href="https://javaducky.com"&gt;Paul Balogh&lt;/a&gt;, and I talk to John Hill, a Web UI Test Engineer and Grafana k6 champion, to talk about how the Grafana and k6 ecosystems can be used to ensure performance in mission-critical applications like NASA&amp;rsquo;s Open MCT.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/8Z67vAkv3J0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>(TL) Ano ang relasyon ng testing at observabilidad?</title><link>https://nicolevanderhoeven.com/blog/20231101-relasyon-ng-testing-at-observabilidad/</link><pubDate>Wed, 01 Nov 2023 12:19:46 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231101-relasyon-ng-testing-at-observabilidad/</guid><description>&lt;p&gt;Ano ang relasyon ng testing sa observabilidad? Sa video na ito, pinag-uusapan namin ng kaibigan kong si &lt;a href="https://testingwithmarie.com"&gt;Marie Cruz&lt;/a&gt; kung ano ang testing, ano ang observabilidad, at bakit dapat nating gamitin pero para pabutihin ang ating mga aplikasyon.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/rC9trgeMYyk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>K-SIX News v0.47</title><link>https://nicolevanderhoeven.com/blog/20231030-ksix-news-0_47/</link><pubDate>Mon, 30 Oct 2023 11:57:21 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20231030-ksix-news-0_47/</guid><description>&lt;p&gt;In this video, my colleagues (&lt;a href="https://www.srperf.com/"&gt;Leandro Melendez&lt;/a&gt;, &lt;a href="https://testingwithmarie.com"&gt;Marie Cruz&lt;/a&gt;, and &lt;a href="https://javaducky.com"&gt;Paul Balogh&lt;/a&gt;) and I discuss the latest updates in k6 v0.47.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/iUwSgJgJBAI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Here are some of the highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We&amp;rsquo;ve created an official &lt;a href="https://grafana.com/grafana/dashboards/19665-k6-prometheus/"&gt;k6 Prometheus Grafana dashboard&lt;/a&gt; and &lt;a href="https://grafana.com/grafana/dashboards/18030-k6-prometheus-native-histograms/"&gt;another dashboard for Prometheus with native histograms&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;New APIs have been added for Prometheus Remote Write output for k6 (authentication and HTTP headers).&lt;/li&gt;
&lt;li&gt;We&amp;rsquo;ve increased the character limit for metric names from 63 to 128, aligned with the OpenTelemetry specification update.&lt;/li&gt;
&lt;li&gt;k6 browser tests can be executed in Grafana Cloud by everyone.&lt;/li&gt;
&lt;li&gt;We&amp;rsquo;ve improved the cookie API for k6 browser.&lt;/li&gt;
&lt;li&gt;We&amp;rsquo;ve added support for &lt;code&gt;page.on('console')&lt;/code&gt; for k6 browser.&lt;/li&gt;
&lt;li&gt;There are now official Docker images that include a Chromium-based browser for running k6 browser tests within CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;Distributed tracing is in public preview for Grafana Cloud.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/avitalique/xk6-file"&gt;xk6-file&lt;/a&gt; is a new extension that lets you rename files within your k6 script.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/deejiw/xk6-gcp"&gt;xk6-gcp&lt;/a&gt; is a new extension that adds k6 support for messaging using Google PubSub.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/xk6-dashboard"&gt;xk6-dashboard&lt;/a&gt; is now an official Grafana extension that lets you generate HTML dashboards from k6 test results.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/szkiba/k6x"&gt;k6x&lt;/a&gt; is a new utility that automatically detects when you import k6 extensions and builds the custom k6 binary for you so that you don&amp;rsquo;t have to.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/k6-operator"&gt;k6-operator&lt;/a&gt; now has a Helmchart deployment option.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Real User Monitoring With Grafana Faro (Grafana Office Hours #17)</title><link>https://nicolevanderhoeven.com/blog/20231027-goh17-real-user-monitoring-with-grafana-faro/</link><pubDate>Fri, 27 Oct 2023 07:00:19 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20231027-goh17-real-user-monitoring-with-grafana-faro/</guid><description>&lt;p&gt;My friend &lt;a href="https://testingwithmarie.com"&gt;Marie Cruz&lt;/a&gt; and I chat with Software Engineers Kostas Pelelis and Marco Schaefer to discuss what Grafana Faro is, why it&amp;rsquo;s important to have a real user monitoring solution, and how to get started with it.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/lUYj28znIu8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="useful-links"&gt;Useful links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/monitor-applications/frontend-observability/"&gt;Frontend observability docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/faro-web-sdk"&gt;Grafana Faro repo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>(ES) Grafana Como Código (Café con Grafana #01)</title><link>https://nicolevanderhoeven.com/blog/20231026-ccg001-grafana-como-c%C3%B3digo/</link><pubDate>Thu, 26 Oct 2023 06:55:37 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20231026-ccg001-grafana-como-c%C3%B3digo/</guid><description>&lt;p&gt;En este episodio platicamos con Joan López de la Franca, Ingeniero de software senior en Grafana.
El nos viene a platicar de las funcionalidades de Grafana como código, que es, como funciona, cuando conviene utilizarlo e incluso nos traerá algunos demos al respecto.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/OqGFN22dvhQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Emergent Load Testing - TestCon Europe 2023</title><link>https://nicolevanderhoeven.com/blog/20231025-emergent-load-testing-testconeu/</link><pubDate>Wed, 25 Oct 2023 20:05:36 +0300</pubDate><guid>https://nicolevanderhoeven.com/blog/20231025-emergent-load-testing-testconeu/</guid><description>&lt;p&gt;I presented at &lt;a href="https://testcon.lt/"&gt;TestCon Europe 2023&lt;/a&gt; in Vilnius, Lithuania about emergent load testing, and how to use it to find the limits of your system. My talk was called &lt;a href="https://events.pinetool.ai/3078/#sessions/100686?referrer%5Bpathname%5D=%2Fsessions&amp;amp;referrer%5Bsearch%5D=&amp;amp;referrer%5Btitle%5D=Sessions"&gt;Emergent load testing: Rules for Organized Chaos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can find the slides &lt;a href="https://slides.nicolevanderhoeven.com/2023-emergent-load-testing-testconeu/"&gt;here&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/JUJ_0079.jpg" alt="Me speaking at TestCon Europe 2023" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/JUJ_0102.jpg" alt="Portrait snapshot of me presenting at TestCon Europe 2023" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/JUJ_0193.jpg" alt="Wide shot of me talking about agency, feedback, and affordances" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/JUJ_0208.jpg" alt="Me at the podium at TestCon Europe 2023" loading="lazy" decoding="async"&gt;
&lt;/p&gt;</description></item><item><title>What is Grafana Agent? (Grafana Office Hours #16)</title><link>https://nicolevanderhoeven.com/blog/20231020-goh16-what-is-grafana-agent/</link><pubDate>Fri, 20 Oct 2023 12:55:11 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20231020-goh16-what-is-grafana-agent/</guid><description>&lt;p&gt;What is Grafana Agent? Senior Software Engineer Paschalis Tsilias tells us about what telemetry collectors do, why they&amp;rsquo;re useful, what you&amp;rsquo;d have to do without them, and how to get started with Grafana Agent. He is joined by Developer Advocates Nicole van der Hoeven and Paul Balogh.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/i0mA0w_MCPQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="useful-links"&gt;Useful links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/agent"&gt;Grafana Agent repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/agent/"&gt;Documentation on Grafana Agent&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>(ES) Inicia (Café con Grafana #000)</title><link>https://nicolevanderhoeven.com/blog/20231019-ccg00-cafe-con-grafana/</link><pubDate>Thu, 19 Oct 2023 12:37:00 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20231019-ccg00-cafe-con-grafana/</guid><description>&lt;p&gt;Tenemos un nuevo show para toda la comunidad de habla en Español! En el vamos a estar invitando a Grafanaistas, Champions, Entusiastas y a miembros de la comunidad. Aquí vamos a compartir experiencias, conocimientos, perspectivas, diversion y mucho Español!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Kdgu2gutp7o?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Agentless Monitoring for Prometheus in Grafana Cloud (Grafana Office Hours #15)</title><link>https://nicolevanderhoeven.com/blog/20231013-goh15-agentless-monitoring-for-prometheus-in-grafana-cloud/</link><pubDate>Fri, 13 Oct 2023 10:56:15 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20231013-goh15-agentless-monitoring-for-prometheus-in-grafana-cloud/</guid><description>&lt;p&gt;Did you know you could do agentless monitoring for Prometheus in Grafana Cloud? Senior Software Engineer Matt Nolf talks to me and my coworker &lt;a href="https://javaducky.com"&gt;Paul Balogh&lt;/a&gt; about the new Metrics Endpoint integration and how you can use it to collect Prometheus metrics from publicly addressable hosts&amp;ndash; WITHOUT using Grafana Agent.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/EYR5lQJ_kG8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/monitor-infrastructure/integrations/integration-reference/integration-metrics-endpoint/"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/2023/09/21/introducing-agentless-monitoring-for-prometheus-in-grafana-cloud/"&gt;Blog post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Distributed tracing with Grafana Cloud k6 (Grafana Office Hours #14)</title><link>https://nicolevanderhoeven.com/blog/20231007-goh14-distributed-tracing-with-grafana-cloud-k6/</link><pubDate>Sat, 07 Oct 2023 08:31:03 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20231007-goh14-distributed-tracing-with-grafana-cloud-k6/</guid><description>&lt;p&gt;My friend &lt;a href="https://testingwithmarie.com"&gt;Marie Cruz&lt;/a&gt; and I interview Senior Software Engineer Łukasz Gut about a new feature: Distributed Tracing with Grafana Cloud k6. He discusses what distributed tracing is, why it matters, and how it can help teams find reliability issues faster.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/petbezEmIw4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Deploy Grafana on Kubernetes (Grafana Office Hours #13)</title><link>https://nicolevanderhoeven.com/blog/20230929-goh13-how-to-deploy-grafana-on-kubernetes/</link><pubDate>Fri, 29 Sep 2023 17:30:49 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20230929-goh13-how-to-deploy-grafana-on-kubernetes/</guid><description>&lt;p&gt;My coworker Usman Ahmad and I talk about how to deploy Grafana on Kubernetes for beginners: what Kubernetes is, how it&amp;rsquo;s an evolution of distributed computing, what its relationship to Docker is, other things you might need to know to work with Kubernetes, and how you can deploy Grafana on your own Kubernetes clusters.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/DEv5wtZxNCk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Documentation on how to deploy Grafana on Kubernetes &lt;a href="https://grafana.com/docs/grafana/latest/setup-grafana/installation/kubernetes/"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Distributed tracing for testing with Grafana Tempo and Tracetest (Grafana Office Hours #05)</title><link>https://nicolevanderhoeven.com/blog/20230714-goh05-distributed-tracing-for-testing-with-grafana-tempo-and-tracetest/</link><pubDate>Fri, 14 Jul 2023 20:21:30 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20230714-goh05-distributed-tracing-for-testing-with-grafana-tempo-and-tracetest/</guid><description>&lt;p&gt;In this video, my colleague &lt;a href="https://javaducky.com"&gt;Paul Balogh&lt;/a&gt; and I welcomed &lt;a href="https://danielmangum.com/"&gt;Daniel Mangum&lt;/a&gt;, Lead Cloud Engineer from &lt;a href="https://golioth.io"&gt;Golioth&lt;/a&gt;. We learn how Golioth uses Grafana to report data from varied sensors and monitors.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/oJ0wdneD8Po?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Monitor behind a Firewall With Private Data Source Connect (Grafana Office Hours #04)</title><link>https://nicolevanderhoeven.com/blog/20230707-goh04-monitor-behind-a-firewall-with-private-data-source-connect/</link><pubDate>Fri, 07 Jul 2023 21:59:57 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20230707-goh04-monitor-behind-a-firewall-with-private-data-source-connect/</guid><description>&lt;p&gt;How do you monitor behind a firewall? With Grafana Cloud Private Data Connect, you can create a secure tunnel to query data sources, even including those in VPCs on public cloud vendors. Senior Software Engineers Stephanie Hingtgen and Georges Chaudy talk to me about how it works.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/9oPe1IICE80?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Recording a Performance Test With Grafana Cloud k6 (k6 Office Hours #93)</title><link>https://nicolevanderhoeven.com/blog/20230630-koh93-recording-a-performance-test-with-grafana-cloud-k6/</link><pubDate>Fri, 30 Jun 2023 23:33:12 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20230630-koh93-recording-a-performance-test-with-grafana-cloud-k6/</guid><description>&lt;p&gt;Senior Frontend Engineer Edvinas Daugirdas demonstrates recording a performance test with Grafana Cloud k6 and some other new features that have recently come to Grafana Cloud. He is joined by Developer Advocates Marie Drake and Nicole van der Hoeven to talk about getting started with k6 for free.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/CZRyiQN7ht4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Changes to Grafana Plugins in Grafana 10 (Grafana Office Hours #03)</title><link>https://nicolevanderhoeven.com/blog/20230629-goh03-changes-to-grafana-plugins-in-grafana-10/</link><pubDate>Thu, 29 Jun 2023 23:29:35 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20230629-goh03-changes-to-grafana-plugins-in-grafana-10/</guid><description>&lt;p&gt;Grafana 10 is fresh off the presses, and it includes some important changes to Grafana plugins that any plugin developer or user will want to know. Senior Product Manager David Harris chats to me about all the new features available to plugins (including the new Scenes framework) and some breaking changes to legacy plugins.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/MliUlT3UNdM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>What Is Grafana Scenes? with Torkel Ödegaard (Grafana Office Hours #02)</title><link>https://nicolevanderhoeven.com/blog/20230619-goh02-what-is-grafana-scenes/</link><pubDate>Mon, 19 Jun 2023 23:03:43 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20230619-goh02-what-is-grafana-scenes/</guid><description>&lt;p&gt;In GrafanaCON 2023, the latest version of Grafana 10 was announced, and with it, Scenes. But what is Grafana Scenes? Torkel Ödegaard, creator of Grafana and co-founder of Grafana Labs, joined me to discuss what Scenes is and how you can use it to create dynamic dashboards like never before.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/pJlWAD5SUYA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>How to Avoid the Most Common Kubernetes Monitoring Mistakes</title><link>https://nicolevanderhoeven.com/blog/20230516-how-to-avoid-the-most-common-kubernetes-monitoring-mistakes/</link><pubDate>Tue, 16 May 2023 22:41:16 +1000</pubDate><guid>https://nicolevanderhoeven.com/blog/20230516-how-to-avoid-the-most-common-kubernetes-monitoring-mistakes/</guid><description>&lt;p&gt;For &lt;a href="https://grafana.com/about/events/observabilitycon/2023/singapore/"&gt;ObservabilityCON on the Road Singapore 2023&lt;/a&gt;, I talked about some mistakes people make when monitoring applications within Kubernetes clusters. I also demonstrated Grafana&amp;rsquo;s Kubernetes Monitoring solution and how it can be a shortcut for engineers looking to get started quickly.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/ocr-2023-sin-01.jpg" alt="Photo of me speaking at OCR Singapore 2023" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/presentation/d/1rC8kifF6X1ZSH8jgh-yUp6NfgK_UaLiOG8TWLa5dQBQ/edit?usp=sharing"&gt;Slides here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Monitoring+Kubernetes"&gt;Monitoring Kubernetes in general&lt;/a&gt; (notes)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Kubernetes+Monitoring"&gt;The Grafana Kubernetes Monitoring feature&lt;/a&gt; (notes)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/ocr-2023-sin-02.jpg" alt="Photo of the crowd at OCR Singapore 2023" loading="lazy" decoding="async"&gt;
&lt;/p&gt;</description></item><item><title>Frontend vs. backend: How to plan your performance testing strategy</title><link>https://nicolevanderhoeven.com/blog/20230403-frontend-vs-backend-testing/</link><pubDate>Mon, 03 Apr 2023 13:20:53 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20230403-frontend-vs-backend-testing/</guid><description>&lt;p&gt;&lt;em&gt;Originally posted &lt;a href="https://grafana.com/blog/2023/04/03/frontend-vs.-backend-how-to-plan-your-performance-testing-strategy/"&gt;here&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;There are many aspects of application performance, but they broadly fall into two categories: frontend performance and backend performance. As a tester, it’s important to know the differences between the two and how that impacts the way you approach your tests.&lt;/p&gt;
&lt;p&gt;In this blog, I’ll provide a high-level overview of frontend performance testing and backend performance testing, including pros and cons of each one. I’ll also explain why you need both if you really want a holistic view of how your application is performing.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xVACRP5qIJI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="why-and-where-to-use-frontend-performance-testing"&gt;Why (and where) to use frontend performance testing&lt;/h2&gt;
&lt;p&gt;Frontend performance testing verifies user experience &lt;a href="https://grafana.com/blog/2023/02/10/watch-how-to-pair-grafana-faro-and-grafana-k6-for-frontend-observability/"&gt;at the interface level&lt;/a&gt;. Basically, this entails everything a user sees when they access your web app, whether it’s on a laptop or other devices. This might involve automating user interactions with the site through the browser — for example, clicking on a button, filling out a form, or having scripts that load on the browser and run.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/crocs-r-cool.png" alt="mockup of a site called “Crocs R Cool”" loading="lazy" decoding="async"&gt;
&lt;em&gt;In frontend testing, you&amp;rsquo;re looking at how components of the UI respond.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The metrics we analyze for frontend performance tests are typically quite different from what we use for backend testing. Let’s say we want to know the time it takes for a page to render after a user clicks on a button that directs them there. This isn’t the same thing as measuring server response time; that total round trip takes a lot more into account — things like latency or the time it takes for a client-side script to run and display the requested information.&lt;/p&gt;
&lt;h3 id="advantages-of-frontend-performance-testing"&gt;Advantages of frontend performance testing&lt;/h3&gt;
&lt;p&gt;The great thing about frontend performance testing is that it provides a more realistic measurement of your end users’ experiences. They don’t care what’s going on under the hood; they care about the overall experience — and that’s exactly what frontend performance testing measures. Unlike backend performance testing, frontend performance testing looks at everything from a user’s point of view: from the time they visit a webpage to the time they can interact with something on that page.&lt;/p&gt;
&lt;p&gt;On top of that, most (about 80%) of the performance issues end users report are frontend issues. It doesn’t make much sense to skip this type of testing; it can be a critical step in finding ways to improve the overall user experience.&lt;/p&gt;
&lt;h3 id="disadvantages-of-frontend-performance-testing"&gt;Disadvantages of frontend performance testing&lt;/h3&gt;
&lt;p&gt;The most obvious disadvantage of frontend testing is that it doesn’t look under the hood. If you only do frontend testing, you’re almost certain to miss something. Maybe a component isn’t working, which is creating issues for your users. But you wouldn’t know that because you’re only testing what’s visible from the browser. In other words, you might be in the situation where you know something in the application is wrong and responding too slowly, but you don’t know what.&lt;/p&gt;
&lt;p&gt;Frontend performance testing can also be quite expensive compared to, say, protocol-based testing. That’s because you need enough resources (memory and CPU) to actually spin up a browser instance and interact with your application the way that a real user would. The same load generator that could run tens of thousands of backend virtual users may only be able to run 50 frontend virtual users before running out of resources.&lt;/p&gt;
&lt;p&gt;Finally, only testing frontend performance can sometimes lead to pretty misleading results, especially as you scale. As load increases, the response time for the frontend remains fairly constant, but that’s not the case with the backend.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/Frontend-Backend-LoadTesting.png" alt="graph plotting response time over the number of concurrent users for front-end and back-end" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;While the frontend component of response time remains more or less constant, the backend component of response time increases exponentially with the number of concurrent users.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This phenomenon occurs because most of the issues that frontend performance tests might identify, such as a slow-running client-side script, don’t tend to compound. It’ll be just as slow on each user’s computer regardless of how many users are running it. However, problems uncovered by backend performance testing are on the side of the application, not the users. If a database can’t keep up with 100 users sending queries to it, then 1,000 users sending it queries is likely to yield an even worse response time.&lt;/p&gt;
&lt;h2 id="why-and-where-to-use-backend-performance-testing"&gt;Why (and where) to use backend performance testing&lt;/h2&gt;
&lt;p&gt;As you might have guessed at this point, backend performance testing targets the infrastructure under the hood. This could be a database that contains customer information, a payment gateway, or an authentication service for customers that have already signed up. These are things that an end user doesn’t see and maybe isn’t ever even aware of, but they still have an effect on response times.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/backend.png" alt="graphic of application components" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Backend testing addresses infrastructure users might not even be aware of, like different databases, gateways, and services that underpin an application.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Scripting against the backend is quite different from scripting against the frontend. Instead of scripting user interactions like clicking, you’re scripting certain requests that are being sent on the protocol level. So, for example, you could have an HTTP GET request for the page and also for its embedded resources.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;import&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;http&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;from&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;k6/http&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;import&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;sleep&lt;/span&gt; } &lt;span style="color:#a6e22e"&gt;from&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;k6&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;export&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;default&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; () {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;http&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;get&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;https://test.k6.io&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sleep&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The sample Grafana k6 script above is an example of a simplified backend performance test. It makes a single HTTP request to retrieve the contents of &lt;a href="https://test.k6.io"&gt;https://test.k6.io&lt;/a&gt;, and then waits one second.&lt;/p&gt;
&lt;p&gt;Backend performance includes things beyond just load times and latency. It includes scalability, availability, reliability, and similar attributes, so the metrics that we measure are different as well. We might look at server uptime or response times per component. We could also trace the path of a particular request through the application stack.&lt;/p&gt;
&lt;p&gt;An illustration shows that performance testing can address scalability, elasticity, availability, latency, resiliency, and reliability.
Application performance is more than just speed. Backend testing helps us verify many different aspects of performance.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/performance-ilities.png" alt="diagram of different types of performance" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Application performance is more than just speed. Backend testing helps us verify many different aspects of performance.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="advantages-of-backend-performance-testing"&gt;Advantages of backend performance testing&lt;/h3&gt;
&lt;p&gt;As we already discussed, frontend testing doesn’t cover everything, but it’s also more complicated than that. The 20% or so of performance bottlenecks that are backend-related can be the hardest to troubleshoot, identify, and fix. Even worse, a lot of backend performance issues can spiral out of control at higher levels of load and can be quite expensive to fix later on in a development cycle. The worst time to realize that you need to rethink your entire infrastructure is after it’s already failed in production. If you take care of backend performance testing earlier (commonly known as shifting left), it makes such pivots less costly.&lt;/p&gt;
&lt;p&gt;Another advantage of backend testing is the ability to target different components of an application. You can choose which API endpoint to hit and how hard, and you can target specific user flows, so it doesn’t always have to be end-to-end testing.&lt;/p&gt;
&lt;p&gt;And finally, backend performance tests tend to be less resource-intensive; they’re just protocol-level requests that can be easily ramped up.You don’t need to spin up a browser instance, or even parse through the Document Object Module (DOM) of a webpage or look for specific elements. It’s just a matter of sending these requests, and that’s something that you can increase the scale of pretty cheaply.&lt;/p&gt;
&lt;h3 id="disadvantages-of-backend-performance-testing"&gt;Disadvantages of backend performance testing&lt;/h3&gt;
&lt;p&gt;Backend performance testing won’t tell you anything about what’s happening on the frontend, and a lot of sites these days actually use scripts that have to run on the frontend. So with backend performance testing tools, you just download those scripts. But the response time they measure is the download time, which is not really realistic because those scripts are executed. A backend performance test would fetch the text of the script. A frontend performance test would run it — and that script might do something like perform a calculation. You need frontend performance testing to measure that properly.&lt;/p&gt;
&lt;p&gt;Backend performance testing is also much more expansive than front end performance testing, especially with microservices-based applications. There are so many components to track that it can be difficult to determine where to look. You can quickly find yourself going down a rabbit hole of constant, never-ending performance tuning.&lt;/p&gt;
&lt;h2 id="frontend--backend-testing-for-the-win"&gt;Frontend + backend testing for the win&lt;/h2&gt;
&lt;p&gt;So, as we’ve seen, frontend testing and backend testing both seem to have advantages and disadvantages. So which one should you use? Both, if at all possible! They look at different parts of application performance, so doing both is essential if you want a holistic view of user experience.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/frontend-vs-backend-meta.png" alt="diagram of k6 being used for both frontend and backend testing" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Software teams can use Grafana k6 to address frontend and backend performance testing.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you’re operating at a smaller scale, use your own discretion about how to find the right mix for needs. But if you’re testing at a larger scale with thousands of users and you want to test both the frontend and backend aspects of application performance, I suggest you change your test strategy so the majority of the load is generated with backend performance testing scripts. That’s because of the resource intensiveness of frontend performance testing scripts, which we discussed earlier.&lt;/p&gt;
&lt;p&gt;So, if you generate most of the load with the backend and then you have a handful of frontend performance testing scripts running in the background, you should still get a good idea of how both are performing. Remember, frontend application performance remains fairly constant throughout different levels of load, so you’ll still get a lot of useful insights on both types of performance without worrying too much about the scaling costs.&lt;/p&gt;
&lt;p&gt;Frontend and backend performance both affect what your end users think of your application. If the underlying application servers respond immediately to all requests, but then a huge picture of a crocodile makes your homepage excruciatingly slow to load, then users aren’t going to like that.&lt;/p&gt;
&lt;p&gt;On the other hand, if your homepage is really sleek and quick to load, but the application server hasn’t responded with the data that the browser needs to render, then users aren’t going to like that either.&lt;/p&gt;
&lt;p&gt;A common problem when testing both frontend and backend performance is script duplication: because of the differences in the two approaches, you often have to use two separate tools — which means two test suites and potentially two scripting languages. While this is a valid approach, it’s more sustainable to look for a tool that can target both types of performance, such as k6.&lt;/p&gt;
&lt;p&gt;Whichever tool(s) you end up using, testing both frontend and backend performance is going to give you the clearest view of how your application really performs.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The easiest way to get started with k6 is through Grafana Cloud k6. The free tier includes 500 virtual user hours/month for k6 testing and more. &lt;a href="https://grafana.com/auth/sign-up/create-user?pg=blog&amp;amp;plcmt=body-txt"&gt;Sign up for free now!&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Grafana Cloud k6 (k6 Office Hours #83)</title><link>https://nicolevanderhoeven.com/blog/20230324-koh-83-grafana-cloud-k6/</link><pubDate>Fri, 24 Mar 2023 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20230324-koh-83-grafana-cloud-k6/</guid><description>&lt;p&gt;With the release of Grafana Cloud k6, you can get observability and performance testing in the same platform. Senior Product Manager Mark Meier and Frontend Lead Simon Legander join me to talk about what Grafana Cloud k6 is, how you can use it, and demonstrate what it can do to improve your system&amp;rsquo;s reliability.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/products/cloud/k6/"&gt;Sign up to Grafana Cloud k6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/k6/"&gt;Learn more about Grafana Cloud k6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/oIBNIsZaN_8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>1 Year Ago We Were Acquired. Here's what happened next. (k6 Office Hours #58)</title><link>https://nicolevanderhoeven.com/blog/20220729-koh58-1-year-ago-we-were-acquired/</link><pubDate>Fri, 29 Jul 2022 16:12:34 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220729-koh58-1-year-ago-we-were-acquired/</guid><description>&lt;p&gt;In June 2021, CEO Raj Dutt announced that k6 had become part of the Grafana Labs family, and the year that followed has been replete with changes in features, organizational structure, and overall culture within the k6 team. In this video, Nicole van der Hoeven and Paul Balogh reflect on everything that&amp;rsquo;s happened in the last year and how k6 has fared 1 year after the acquisition.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/LjC--G-QLpk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>What Is Grafana Mimir? (k6 Office Hours #53)</title><link>https://nicolevanderhoeven.com/blog/20220506-koh53-what-is-grafana-mimir/</link><pubDate>Fri, 06 May 2022 17:00:28 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20220506-koh53-what-is-grafana-mimir/</guid><description>&lt;p&gt;Maintainer Marco Pracucci talks about the new Grafana project, Mimir, a next-generation time-series database for Prometheus. He joins Developer Advocates Nicole van der Hoeven and Paul Balogh to talk about what Mimir is, why it was needed, and how he helped scale it using k6.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/2P1UViYf1mQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Work week in the life of a Developer Advocate</title><link>https://nicolevanderhoeven.com/blog/20211103-work-week-in-the-life-of-a-developer-advocate/</link><pubDate>Wed, 03 Nov 2021 00:31:46 +0000</pubDate><guid>https://nicolevanderhoeven.com/blog/20211103-work-week-in-the-life-of-a-developer-advocate/</guid><description>&lt;p&gt;Before I became a Developer Advocate, I didn&amp;rsquo;t really know what developer advocates did - so here&amp;rsquo;s my attempt at explaining what it is I do for a living!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/71q0JmEli0k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="weekly-breakdown"&gt;Weekly breakdown&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s a list of my activities during this week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Friday
&lt;ul&gt;
&lt;li&gt;Filmed new ending for video #1&lt;/li&gt;
&lt;li&gt;Figured out integration options&lt;/li&gt;
&lt;li&gt;Did k6 Office Hours&lt;/li&gt;
&lt;li&gt;Prepared for Clubhouse talk&lt;/li&gt;
&lt;li&gt;Participated in customer demo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Saturday
&lt;ul&gt;
&lt;li&gt;Did post-production for k6 Office Hours&lt;/li&gt;
&lt;li&gt;Talked at a Clubhouse meetup&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sunday
&lt;ul&gt;
&lt;li&gt;Wrote (team profile) blog post #1&lt;/li&gt;
&lt;li&gt;Wrote talking points for Racket&lt;/li&gt;
&lt;li&gt;Started writing blog post #2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Monday
&lt;ul&gt;
&lt;li&gt;Edited video #1&lt;/li&gt;
&lt;li&gt;Created thumbnail, description&lt;/li&gt;
&lt;li&gt;Scheduled video #1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tuesday
&lt;ul&gt;
&lt;li&gt;Created slides for presentation&lt;/li&gt;
&lt;li&gt;Played with Prometheus and Grafana for webinar&lt;/li&gt;
&lt;li&gt;Had a virtual coffee with colleagues&lt;/li&gt;
&lt;li&gt;Finished writing blog post #2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Wednesday
&lt;ul&gt;
&lt;li&gt;Went to four meetings&lt;/li&gt;
&lt;li&gt;Caught up on emails, Slack, and social media (last night)&lt;/li&gt;
&lt;li&gt;Wrote blog post #3&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Thursday
&lt;ul&gt;
&lt;li&gt;Scripted and filmed videos #2 and #3&lt;/li&gt;
&lt;li&gt;Started editing video #2&lt;/li&gt;
&lt;li&gt;Talked to a potential guest on livestream&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>