<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: databufflabs</title>
    <description>The latest articles on DEV Community by databufflabs (@databufflabs).</description>
    <link>https://dev.to/databufflabs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3993960%2F8b10c56f-bbd4-4580-a8b1-a1e732e4be57.png</url>
      <title>DEV Community: databufflabs</title>
      <link>https://dev.to/databufflabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/databufflabs"/>
    <language>en</language>
    <item>
      <title>5 Ops Tasks That Take Half an Hour — Ops Expert Finishes in 3 Minutes</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Thu, 16 Jul 2026 01:45:06 +0000</pubDate>
      <link>https://dev.to/databufflabs/5-ops-tasks-that-take-half-an-hour-ops-expert-finishes-in-3-minutes-36d4</link>
      <guid>https://dev.to/databufflabs/5-ops-tasks-that-take-half-an-hour-ops-expert-finishes-in-3-minutes-36d4</guid>
      <description>&lt;p&gt;On-call pain is rarely that a problem is “too hard.” It’s that &lt;strong&gt;you already know what to check — and still have to SSH in and type every command yourself&lt;/strong&gt;. These five show up in almost every test environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OTel won’t connect / no data&lt;/strong&gt; — SDK is configured, the platform is blank; you guess endpoint, port, or a dead process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Container keeps restarting&lt;/strong&gt; — you see Restarting, dare not poke randomly, and crawling logs inside the container is slow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspect real Java JVM flags&lt;/strong&gt; — startup args, container limits, and effective values disagree; you bounce between &lt;code&gt;jinfo&lt;/code&gt; / &lt;code&gt;jcmd&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Port in use, service won’t start&lt;/strong&gt; — &lt;code&gt;lsof&lt;/code&gt; / &lt;code&gt;ss&lt;/code&gt; once, then make sure you don’t kill the wrong process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CPU hotspots&lt;/strong&gt; — flame-graph tooling slips your mind; sampling configs take half a day before a chart appears.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solo, these jobs often take &lt;strong&gt;15–40 minutes&lt;/strong&gt; (find the host, log in, recall commands, reconcile the conclusion). With DataBuff (&lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;Star on GitHub →&lt;/a&gt;) &lt;strong&gt;Ops Expert&lt;/strong&gt;, the same work usually lands in &lt;strong&gt;1–3 minutes&lt;/strong&gt;: open &lt;strong&gt;AI Platform → AI Chat&lt;/strong&gt;, pick Ops Expert, describe the symptom in plain language.&lt;/p&gt;

&lt;p&gt;All screenshots below are from a live test environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario · DIY SSH (typical) · Ops Expert (measured)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OTel won’t connect — endpoint / port / process ~15–25 min → &lt;strong&gt;~1–2 min&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Container restart loop — log diving ~20–40 min → &lt;strong&gt;~2–3 min to find &amp;amp; fix&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;JVM flags — jinfo / jcmd ~10–20 min → &lt;strong&gt;~1 min&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Port conflict — ss / lsof ~5–15 min → &lt;strong&gt;~1 min&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Flame graph — tooling + sample ~20–40 min → &lt;strong&gt;~2–3 min&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Walkthrough: three shots per scenario — &lt;strong&gt;your prompt&lt;/strong&gt; → &lt;strong&gt;Ops Expert at work&lt;/strong&gt; → &lt;strong&gt;the conclusion&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. OpenTelemetry won’t connect / no data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Test env OTel won’t connect and the platform has no data. Check whether 4317/4318 are reachable and tell me in one sentence if the endpoint is correct.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;① User prompt:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftv48d3zu64kpvk1booxf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftv48d3zu64kpvk1booxf.png" alt="User asks Ops Expert about OTel ingest" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;② Ops Expert process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw3ldvbdgbtld4rqgvufo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw3ldvbdgbtld4rqgvufo.png" alt="Ops Expert running OTel investigation" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;③ Ops Expert conclusion:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3zhei33h5oafdhanlh6u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3zhei33h5oafdhanlh6u.png" alt="Ops Expert OTel conclusion" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Container keeps restarting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ai-apm-demo keeps Restarting — help me get it healthy.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;① User prompt:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdybul0so7j3bukrzgi5w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdybul0so7j3bukrzgi5w.png" alt="User asks about container restart loop" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;② Ops Expert process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fatx9ecu3x682vzg93gf4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fatx9ecu3x682vzg93gf4.png" alt="Ops Expert fixing container restart" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;③ Conclusion (memory limit 10MB → OOM 137 → raised to 512MB):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwdct1aqhairt505laox.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwdct1aqhairt505laox.png" alt="Ops Expert conclusion memory fix" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Inspect Java runtime flags&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Show me the effective JVM flags for the ai-apm-web Java process — especially heap and GC.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;① User prompt:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn9nvruhnepz4qbtabpf4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn9nvruhnepz4qbtabpf4.png" alt="User asks for JVM flags" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;② Ops Expert process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnoawafktjjfxe2nvuo3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsnoawafktjjfxe2nvuo3.png" alt="Ops Expert querying JVM flags" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;③ Ops Expert conclusion:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn7adnvm0h2gms8evzt99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn7adnvm0h2gms8evzt99.png" alt="Ops Expert JVM conclusion" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Port in use — service won’t start&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Who is holding port 27403? Tell me the process and command — do not kill anything.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;① User prompt:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faptgqrdjh6f9sy7xzibd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faptgqrdjh6f9sy7xzibd.png" alt="User asks about port conflict" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;② Ops Expert process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqc545ptjqyg6i6wsq2ns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqc545ptjqyg6i6wsq2ns.png" alt="Ops Expert checking port ownership" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;③ Ops Expert conclusion:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0jyvx0tmunoicsb4nrrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0jyvx0tmunoicsb4nrrr.png" alt="Ops Expert port conclusion" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Capture a flame graph&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Take a short CPU flame graph for the ai-apm-web Java service on the test host and point out the hotspots.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;① User prompt:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4fmorz8qvqwvbwjixnmc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4fmorz8qvqwvbwjixnmc.png" alt="User asks for a flame graph" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;② Ops Expert process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc2i1f7tor4oixzjgiyzd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc2i1f7tor4oixzjgiyzd.png" alt="Ops Expert sampling flame graph" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;③ Conclusion (sample result + hotspot readout):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa3gjvtwzdbxxyajnopa7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa3gjvtwzdbxxyajnopa7.png" alt="Ops Expert flame graph conclusion" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Same loop every time: describe the symptom → watch the process → read the conclusion. The timing list above is the DIY SSH vs Ops Expert gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open source · one-line install&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://databuff.ai/databuff/ai-apm-install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Found this useful? Star DataBuff on GitHub → &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;https://github.com/databufflabs/databuff&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live demo: &lt;a href="https://demo.databuff.ai" rel="noopener noreferrer"&gt;https://demo.databuff.ai&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>apm</category>
      <category>opentelemetry</category>
    </item>
    <item>
      <title>SkyWalking Meets AI: Keep Your Agent, Ask Why Checkout Is Slow</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Tue, 14 Jul 2026 01:25:51 +0000</pubDate>
      <link>https://dev.to/databufflabs/skywalking-meets-ai-keep-your-agent-ask-why-checkout-is-slow-1jef</link>
      <guid>https://dev.to/databufflabs/skywalking-meets-ai-keep-your-agent-ask-why-checkout-is-slow-1jef</guid>
      <description>&lt;p&gt;Many Java teams run &lt;strong&gt;Apache SkyWalking&lt;/strong&gt; in production. The Agent often stays in place for years: bytecode instrumentation, clear Segments, JVM + traces on one path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DataBuff v0.1.3 layers AI on top of that same collection.&lt;/strong&gt; Keep the Agent. Point ingest at SkyWalking gRPC &lt;code&gt;:11800&lt;/code&gt; (OAP’s default). Ask in plain English why checkout is slow — get &lt;code&gt;traceId&lt;/code&gt; + bottleneck span, then verify on a flame graph. Logs still jump to traces. Same Segments. Faster answers.&lt;/p&gt;

&lt;p&gt;All screenshots below are from a live demo environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  0. First, SkyWalking
&lt;/h2&gt;

&lt;p&gt;Typical strengths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java Agent with minimal app changes&lt;/li&gt;
&lt;li&gt;Segments that keep multi-service spans readable&lt;/li&gt;
&lt;li&gt;Traces, JVM metrics, and logs on one reporting path&lt;/li&gt;
&lt;li&gt;Mature OAP + UI, strong docs and community&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SkyWalking is solid at &lt;strong&gt;getting telemetry in&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7iq5xybkral1n7u36ywi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7iq5xybkral1n7u36ywi.png" alt="SkyWalking native UI — General service overview" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Where on-call time goes is &lt;strong&gt;turning that data into a conclusion&lt;/strong&gt;: alerts without &lt;code&gt;traceId&lt;/code&gt;, hunting slow traces, summarizing span trees for Slack, hopping between topology, metrics, and logs. That is not a SkyWalking flaw — it is the next step: &lt;strong&gt;faster conclusions from the same telemetry&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This article is about AI-assisted interpretation on SkyWalking ingestion — same Agent, same Segment data — focused on whether one pipeline can produce answers faster.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. Highlight: slow checkout — ask once, get an answer
&lt;/h2&gt;

&lt;p&gt;Demo: &lt;code&gt;GET /demo/checkout&lt;/code&gt; P99 ≈ &lt;strong&gt;240ms&lt;/strong&gt;. Alerts often arrive &lt;strong&gt;without a &lt;code&gt;traceId&lt;/code&gt;&lt;/strong&gt;. With DataBuff, triage shifts from scrolling trace lists to &lt;strong&gt;asking AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;① Ask directly&lt;/strong&gt; (no &lt;code&gt;traceId&lt;/code&gt;): “Why is service-a’s checkout endpoint slow lately?”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fclvcrs6dbzxyvesbqbnh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fclvcrs6dbzxyvesbqbnh.png" alt="Ask AI about slow checkout" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;② AI breaks down the trace&lt;/strong&gt;: typical slow trace, segment timings, bottleneck span — no manual row-by-row comparison.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr0onteyf00az7lu62ssp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr0onteyf00az7lu62ssp.png" alt="AI trace latency breakdown" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;③ Structured conclusion&lt;/strong&gt;: actionable incident text, not just “maybe the DB is slow.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fglcotao5764dgnacgv5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fglcotao5764dgnacgv5h.png" alt="AI troubleshooting report" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;④ One-click verify&lt;/strong&gt;: jump to the flame graph with the returned &lt;code&gt;traceId&lt;/code&gt; and confirm end-to-end spans.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frw5vbnm26fq7mur0y170.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frw5vbnm26fq7mur0y170.png" alt="Checkout trace flame graph" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you gain:&lt;/strong&gt; from “filter list → read span tree → write incident note” to &lt;strong&gt;ask → get &lt;code&gt;traceId&lt;/code&gt; → verify in UI&lt;/strong&gt;. Same Segment source; added AI readout.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Go deeper: topology, service flow, JVM
&lt;/h2&gt;

&lt;p&gt;After AI answers, the same UI keeps going — no tool hopping.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu6ynxh6ep06qx9t2xeaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu6ynxh6ep06qx9t2xeaz.png" alt="Global topology — checkout upstream/downstream" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjz79plukrx8284mc000t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjz79plukrx8284mc000t.png" alt="service-a service flow — 240ms entry" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5ucfxy1237xlec1tooa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5ucfxy1237xlec1tooa.png" alt="Log analysis — each row links to traces" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fplriibirg6g3vvw11cha.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fplriibirg6g3vvw11cha.png" alt="service-a JVM metrics from SkyWalking" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Before vs after: how the path changes
&lt;/h2&gt;

&lt;p&gt;For the checkout scenario:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;SkyWalking UI only&lt;/th&gt;
&lt;th&gt;With DataBuff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 · Find service&lt;/td&gt;
&lt;td&gt;General → Service → pick service-a&lt;/td&gt;
&lt;td&gt;Topology / service list → service-a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 · Find slow trace&lt;/td&gt;
&lt;td&gt;Trace page filter checkout → open rows one by one&lt;/td&gt;
&lt;td&gt;Ask AI → &lt;code&gt;traceId&lt;/code&gt; + bottleneck span returned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3 · See bottleneck&lt;/td&gt;
&lt;td&gt;Read span tree manually for DB / RPC time&lt;/td&gt;
&lt;td&gt;AI summary + flame graph jump&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 · Conclusion&lt;/td&gt;
&lt;td&gt;Human writes “maybe DB query slow”&lt;/td&gt;
&lt;td&gt;AI remediation hints; ops expert can SSH-check JVM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5 · Logs&lt;/td&gt;
&lt;td&gt;Separate log system, match &lt;code&gt;traceId&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Log list “Trace · View” → call chain&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Your SkyWalking Agent keeps reporting; you add &lt;strong&gt;AI query, unified UI, and log deep-links&lt;/strong&gt; — same collection target.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. How to connect: keep the Agent, point backend to DataBuff
&lt;/h2&gt;

&lt;p&gt;v0.1.3 ingests native SkyWalking gRPC on &lt;strong&gt;11800&lt;/strong&gt; (OAP default). &lt;strong&gt;No Agent jar swap&lt;/strong&gt; — change the collector address:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp0pusge730oa8aiqc2nl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp0pusge730oa8aiqc2nl.png" alt="Ingest ports 4317/4318/11800" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6nvaev2fxtjmpp1osglv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6nvaev2fxtjmpp1osglv.png" alt="SkyWalking agent.config collector.backend_service" width="799" height="373"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="c"&gt;# agent.config
&lt;/span&gt;&lt;span class="py"&gt;agent.service_name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;${SW_AGENT_NAME:your-service}&lt;/span&gt;
&lt;span class="py"&gt;collector.backend_service&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;${SW_AGENT_COLLECTOR_BACKEND_SERVICES:your-databuff-host:11800}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjaqnb0zcxta8xbnptlvc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjaqnb0zcxta8xbnptlvc.png" alt="SkyWalking gRPC and OpenTelemetry dual path" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two onboarding paths, both AI-capable:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Setup&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Side-by-side trial&lt;/td&gt;
&lt;td&gt;Keep SkyWalking OAP; read SkyWalking data via MCP&lt;/td&gt;
&lt;td&gt;Cannot move Agents yet — try AI Q&amp;amp;A first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Native ingest&lt;/td&gt;
&lt;td&gt;Point Agent to DataBuff &lt;code&gt;:11800&lt;/code&gt;, Segments direct to ingest&lt;/td&gt;
&lt;td&gt;Switch backend; traces / JVM / logs unified in DataBuff&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  5. FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Do I replace the Agent?
&lt;/h3&gt;

&lt;p&gt;No. Existing SkyWalking Java Agents work — usually only &lt;code&gt;collector.backend_service&lt;/code&gt; changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Must OAP go away immediately?
&lt;/h3&gt;

&lt;p&gt;No. Keep OAP for a trial; when you commit to DataBuff, point Agents over in batches and verify checkout-style Q&amp;amp;A works.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can OpenTelemetry coexist?
&lt;/h3&gt;

&lt;p&gt;Yes. Java on SkyWalking (11800), Go/Python on OTLP (4317), one DataBuff UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does AI actually do?
&lt;/h3&gt;

&lt;p&gt;Demo covers on-call staples: &lt;strong&gt;slow endpoint → &lt;code&gt;traceId&lt;/code&gt; + bottleneck span&lt;/strong&gt;, &lt;strong&gt;log line → trace&lt;/strong&gt;, &lt;strong&gt;JVM curves for follow-up&lt;/strong&gt;. You do not need to be a trace expert to get direction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who is this for?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;SkyWalking in production, want AI Q&amp;amp;A on existing trace data&lt;/li&gt;
&lt;li&gt;Java-heavy estates not ready to re-instrument with OpenTelemetry&lt;/li&gt;
&lt;li&gt;Want traces, logs, and metrics in one troubleshooting flow&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Suggested path:&lt;/strong&gt; test env or one instance → change Agent address → hit checkout-like traffic → ask AI “why slow lately” → confirm &lt;code&gt;traceId&lt;/code&gt; + flame graph → expand rollout.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;SkyWalking ingestion + AI interpretation&lt;/strong&gt; · Keep your Agent · Ask once for answers · Logs link to traces&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;Star DataBuff on GitHub →&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>apm</category>
      <category>observability</category>
    </item>
    <item>
      <title>AI Ops Squad Evolves: Ask ERROR Logs in Plain English</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Tue, 07 Jul 2026 05:52:53 +0000</pubDate>
      <link>https://dev.to/databufflabs/ai-ops-squad-evolves-ask-error-logs-in-plain-english-ehd</link>
      <guid>https://dev.to/databufflabs/ai-ops-squad-evolves-ask-error-logs-in-plain-english-ehd</guid>
      <description>&lt;p&gt;&lt;strong&gt;You can ask DataBuff about slow traces in plain English.&lt;/strong&gt; That shipped in our last walkthrough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now ERROR logs join the party.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Same checkout demo, same &lt;code&gt;InsufficientStockException&lt;/code&gt; on &lt;code&gt;service-b&lt;/code&gt; — but this time we follow three real on-call paths: facet search in the Logs UI, trace-to-log deep links, and one-sentence AI queries that call &lt;code&gt;log.queryLog*&lt;/code&gt; tools against live OTLP data.&lt;/p&gt;

&lt;p&gt;All screenshots below are from a single incident window on a live demo environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo scenario: inventory checkout failure
&lt;/h2&gt;

&lt;p&gt;The demo app hammers &lt;code&gt;GET /demo/checkout&lt;/code&gt;. When stock runs out, &lt;strong&gt;service-b&lt;/strong&gt; throws:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;InsufficientStockException: inventory unavailable for skuId=…
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OTLP logs land in Doris with &lt;code&gt;trace_id&lt;/code&gt; and &lt;code&gt;span_id&lt;/code&gt; attached. We walk the same failure three ways — the way a real shift would:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Path A&lt;/strong&gt; — You know the exception name; search the global Logs page&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path B&lt;/strong&gt; — You have a slow trace; read span logs and deep-link back&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path C&lt;/strong&gt; — You delegate to the AI squad in one sentence&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Path A: global log search (no LogQL required)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Menu:&lt;/strong&gt; Application Performance → &lt;strong&gt;Log Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No query language required — &lt;strong&gt;keyword + facets&lt;/strong&gt; is enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt; search &lt;code&gt;InsufficientStockException&lt;/code&gt; → filter &lt;strong&gt;ERROR&lt;/strong&gt; + &lt;strong&gt;service-b&lt;/strong&gt; → 95 matching lines with an ERROR spike in the histogram.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6nmzns6n94in9v4g7twy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6nmzns6n94in9v4g7twy.png" alt="Global log search — keyword, ERROR level, and service-b facet" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each row has &lt;strong&gt;Trace · View&lt;/strong&gt; on the right — jump straight to the call chain without copying IDs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Path B: trace ↔ log deep links
&lt;/h2&gt;

&lt;h3&gt;
  
  
  B1 · Trace header: one click to logs
&lt;/h3&gt;

&lt;p&gt;Open a slow &lt;code&gt;GET /demo/checkout&lt;/code&gt; trace (~240 ms). The trace header shows TraceID; &lt;strong&gt;Log Analysis&lt;/strong&gt; on the right pre-fills &lt;code&gt;traceId&lt;/code&gt; — no copy-paste.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fce65gmq9kck0v5bp606i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fce65gmq9kck0v5bp606i.png" alt="Trace detail — TraceID and Log Analysis shortcut" width="791" height="38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  B2 · Span sidebar: flame graph + Logs tab
&lt;/h3&gt;

&lt;p&gt;Spans marked &lt;strong&gt;Logs&lt;/strong&gt; on the flame tree open a sidebar &lt;strong&gt;Logs&lt;/strong&gt; tab: a timeline from &lt;code&gt;Received checkout request&lt;/code&gt; through &lt;code&gt;Delegating inventory check to service-b&lt;/code&gt;. Select the service-b span to see the ERROR stack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftwqedkiw6muccwecuowg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftwqedkiw6muccwecuowg.png" alt="Flame graph with span log timeline sidebar" width="799" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  B3 · Deep link: "View all in Log Analysis"
&lt;/h3&gt;

&lt;p&gt;Click &lt;strong&gt;View all in Log Analysis&lt;/strong&gt; at the bottom of the sidebar. The global page auto-fills &lt;strong&gt;traceId + spanId&lt;/strong&gt; and shows only the four logs in that span's context.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk7lcc5gg37lgzd186cjr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk7lcc5gg37lgzd186cjr.png" alt="Deep link from trace to log analysis with traceId and spanId" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Path C: ask the AI squad about logs
&lt;/h2&gt;

&lt;p&gt;The UI is for precision. The AI is for &lt;strong&gt;one-sentence delegation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Smart Query expert registers a log tool family — visible under &lt;strong&gt;Tool Management&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F676zcdwu0qtubw7zsvlz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F676zcdwu0qtubw7zsvlz.png" alt="AI tool management — log.queryLogDetail and related tools" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Registered tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;log.queryLogDetail&lt;/code&gt; — search by service, level, keyword&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;log.queryLogsByTraceId&lt;/code&gt; — all logs on a trace&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;log.queryLogsBySpanId&lt;/code&gt; — logs for one span&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;log.queryLogTrend&lt;/code&gt; — ERROR volume over time&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scenario 1: find ERROR logs by service + keyword
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find ERROR logs for service-b in the last hour related to
InsufficientStockException. List traceIds and key log summaries.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx50gr8ezkesjn9jlbvt7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx50gr8ezkesjn9jlbvt7.png" alt="AI dispatches Smart Query with queryLogDetail" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdbb6tybbfzgxw3t00piq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdbb6tybbfzgxw3t00piq.png" alt="AI returns traceId table with log summaries" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 2: known traceId → root cause
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Given traceId edfa44615dcee4d6bdfeed46d84bfb20, list all ERROR-level
logs on this trace and explain why checkout failed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1wf103zjnxudq71egexc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1wf103zjnxudq71egexc.png" alt="AI queries logs by traceId and explains checkout failure" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The agent walks &lt;code&gt;queryLogsByTraceId&lt;/code&gt; → 13-span call chain → ERROR lines → &lt;strong&gt;checkout failed due to insufficient inventory&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 3: ERROR volume trend
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;How has ERROR log volume for service-b looked in the last hour?
Any obvious spike periods?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnhehdhbt5frxs691gwcy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnhehdhbt5frxs691gwcy.png" alt="AI analyzes service-b ERROR log trend with queryLogTrend" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Result: steady ~2 ERROR logs per minute — no spike, just a sustained inventory shortage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool selection cheat sheet&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search by service/level/keyword → &lt;code&gt;queryLogDetail&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Known traceId → &lt;code&gt;queryLogsByTraceId&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;One span's context → &lt;code&gt;queryLogsBySpanId&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Volume spikes → &lt;code&gt;queryLogTrend&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Where the data comes from
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OTLP Logs&lt;/strong&gt; (&lt;code&gt;:4317&lt;/code&gt; / &lt;code&gt;:4318&lt;/code&gt;) → Ingest → Doris &lt;code&gt;log_dc_record&lt;/code&gt; → &lt;code&gt;POST /log/search&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Inject &lt;code&gt;traceId&lt;/code&gt; via Java MDC and logs correlate automatically.&lt;/p&gt;

&lt;p&gt;DataBuff is &lt;strong&gt;log exploration in an APM context&lt;/strong&gt; — not a replacement for ELK or Loki. The win is sharing context with traces, metrics, and AI agents without hopping three systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it (5 minutes)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://databuff.ai/databuff/ai-apm-install.sh | bash
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://databuff.ai/databuff/ai-apm-demo-install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;strong&gt;&lt;a href="http://YOUR_HOST:27403" rel="noopener noreferrer"&gt;http://YOUR_HOST:27403&lt;/a&gt;&lt;/strong&gt; — login &lt;code&gt;admin&lt;/code&gt; / &lt;code&gt;Databuff@123&lt;/code&gt; — add an LLM key under &lt;strong&gt;Settings → AI model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Then try Path A, B, or C on the built-in checkout demo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;https://github.com/databufflabs/databuff&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;OpenTelemetry Logs · Trace correlation · AI-native observability · Built in public&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>opentelemetry</category>
      <category>observability</category>
    </item>
    <item>
      <title>Show DEV: AI Ops Squad Evolves — Ask ERROR Logs in Plain English</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Tue, 07 Jul 2026 05:51:10 +0000</pubDate>
      <link>https://dev.to/databufflabs/show-dev-ai-ops-squad-evolves-ask-error-logs-in-plain-english-3617</link>
      <guid>https://dev.to/databufflabs/show-dev-ai-ops-squad-evolves-ask-error-logs-in-plain-english-3617</guid>
      <description>&lt;p&gt;&lt;strong&gt;You can already ask AI about traces.&lt;/strong&gt; What about ERROR logs?&lt;/p&gt;

&lt;p&gt;In our &lt;a href="https://dev.to/databufflabs/open-source-ai-native-apm-on-opentelemetry-5-minute-docker-demo-21g8"&gt;launch post&lt;/a&gt; we showed &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;&lt;strong&gt;DataBuff&lt;/strong&gt;&lt;/a&gt; — open-source, OpenTelemetry-native APM with an AI agent squad — answering one question across metrics, traces, and topology.&lt;/p&gt;

&lt;p&gt;This follow-up uses the &lt;strong&gt;same checkout inventory failure&lt;/strong&gt; (&lt;code&gt;InsufficientStockException&lt;/code&gt; on &lt;code&gt;service-b&lt;/code&gt;) and walks three real paths: &lt;strong&gt;search logs in the UI&lt;/strong&gt;, &lt;strong&gt;jump between Trace and logs&lt;/strong&gt;, and &lt;strong&gt;delegate ERROR log queries to AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;All screenshots come from one incident window on a live demo environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo scenario: InsufficientStockException
&lt;/h2&gt;

&lt;p&gt;The demo hammers &lt;code&gt;GET /demo/checkout&lt;/code&gt;. &lt;code&gt;service-b&lt;/code&gt; throws:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;InsufficientStockException: inventory unavailable for skuId=…
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OTLP logs land in Apache Doris with &lt;code&gt;trace_id&lt;/code&gt; / &lt;code&gt;span_id&lt;/code&gt;. Three investigation paths:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Path A&lt;/strong&gt; — You know the exception name → global log search with facets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path B&lt;/strong&gt; — You have a slow trace → span logs + deep links back to global search&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path C&lt;/strong&gt; — You ask in plain English → AI dispatches &lt;code&gt;log.queryLog*&lt;/code&gt; tools&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Path A: Global log search
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Menu:&lt;/strong&gt; Application Performance → Log Analysis. No LogQL required — &lt;strong&gt;keyword + facets&lt;/strong&gt; are enough.&lt;/p&gt;

&lt;p&gt;Search &lt;code&gt;InsufficientStockException&lt;/code&gt; → filter &lt;strong&gt;ERROR&lt;/strong&gt; + &lt;strong&gt;service-b&lt;/strong&gt; → each row has &lt;strong&gt;Trace · View&lt;/strong&gt; to jump to the call chain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftejft71fbvok5iyh096p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftejft71fbvok5iyh096p.png" alt="Global log search — keyword + ERROR + service-b facet" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Path B: Span logs inside Trace + bidirectional deep links
&lt;/h2&gt;

&lt;h3&gt;
  
  
  B1 · Trace header: one click to log analysis
&lt;/h3&gt;

&lt;p&gt;Open a slow checkout trace. The trace header shows TraceID; &lt;strong&gt;Log Analysis&lt;/strong&gt; on the right pre-fills &lt;code&gt;traceId&lt;/code&gt; on the global page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhejh5g0vgh2bqqa4fy6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhejh5g0vgh2bqqa4fy6f.png" alt="Trace header log analysis link" width="791" height="38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  B2 · Span sidebar: flame graph + Logs tab
&lt;/h3&gt;

&lt;p&gt;Spans marked &lt;strong&gt;Logs&lt;/strong&gt; on the flame tree open a sidebar &lt;strong&gt;Logs&lt;/strong&gt; tab. Select the &lt;code&gt;service-b&lt;/code&gt; span to see the ERROR stack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa5yzz3leu6dtbwswjra7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa5yzz3leu6dtbwswjra7.png" alt="Span sidebar with flame graph and log tab" width="799" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  B3 · Deep link: "View all in log analysis"
&lt;/h3&gt;

&lt;p&gt;Click at the bottom of the sidebar — the global page &lt;strong&gt;auto-fills traceId + spanId&lt;/strong&gt; and shows only logs in that span context.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj30lj6tar9lgu2oas29l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj30lj6tar9lgu2oas29l.png" alt="Deep link from span to global log analysis" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Path C: Ask the AI platform about logs
&lt;/h2&gt;

&lt;p&gt;The UI is for precision. AI is for &lt;strong&gt;one-sentence delegation&lt;/strong&gt;. The smart-query expert registers a log tool family:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsj9cu5qtnefmzq1ga63h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsj9cu5qtnefmzq1ga63h.png" alt="AI log query tools registered" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario 1:&lt;/strong&gt; Search ERROR logs by service + keyword&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find ERROR logs for service-b in the last hour related to InsufficientStockException.
List traceIds and key log summaries.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fudogs2yimy3nz6xn1ru3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fudogs2yimy3nz6xn1ru3.png" alt="AI dispatches log query by service and keyword" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkjg1pltpwf7l1xbho20t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkjg1pltpwf7l1xbho20t.png" alt="AI summarizes traceIds and log excerpts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario 2:&lt;/strong&gt; Known traceId → root cause&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Given traceId edfa44615dcee4d6bdfeed46d84bfb20, list all ERROR logs on this trace
and explain why checkout failed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4sc86b9ufn4xd7h2rqwc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4sc86b9ufn4xd7h2rqwc.png" alt="AI lists ERROR logs for a known traceId" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario 3:&lt;/strong&gt; ERROR log volume spike&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;How did ERROR log volume for service-b trend over the last hour? Any obvious spikes?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbiomqz4cirogmao030k0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbiomqz4cirogmao030k0.png" alt="AI shows ERROR log trend and spike detection" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool routing:&lt;/strong&gt; service/level search → &lt;code&gt;queryLogDetail&lt;/code&gt;; known traceId → &lt;code&gt;queryLogsByTraceId&lt;/code&gt;; specific span → &lt;code&gt;queryLogsBySpanId&lt;/code&gt;; volume spikes → &lt;code&gt;queryLogTrend&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where the data comes from · vs ELK
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OTLP Logs&lt;/strong&gt; (&lt;code&gt;:4317&lt;/code&gt; / &lt;code&gt;:4318&lt;/code&gt;) → Ingest → Doris &lt;code&gt;log_dc_record&lt;/code&gt; → &lt;code&gt;POST /log/search&lt;/code&gt;. Inject &lt;code&gt;traceId&lt;/code&gt; via MDC on the Java side and correlation is automatic.&lt;/p&gt;

&lt;p&gt;DataBuff is &lt;strong&gt;log exploration in an APM context&lt;/strong&gt; — not a replacement for ELK/Loki. The win is &lt;strong&gt;same context as traces, metrics, and AI&lt;/strong&gt; without tab-hopping across three systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it in 5 minutes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://databuff.ai/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Web UI: &lt;strong&gt;&lt;a href="http://localhost:27403" rel="noopener noreferrer"&gt;http://localhost:27403&lt;/a&gt;&lt;/strong&gt; · default &lt;code&gt;admin&lt;/code&gt; / &lt;code&gt;Databuff@123&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;https://github.com/databufflabs/databuff&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>showdev</category>
      <category>devops</category>
      <category>opentelemetry</category>
    </item>
    <item>
      <title>Show DEV: Stop Tab-Hopping at 2am — Open-Source APM With an AI Agent Squad</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Sat, 20 Jun 2026 13:15:51 +0000</pubDate>
      <link>https://dev.to/databufflabs/open-source-ai-native-apm-on-opentelemetry-5-minute-docker-demo-21g8</link>
      <guid>https://dev.to/databufflabs/open-source-ai-native-apm-on-opentelemetry-5-minute-docker-demo-21g8</guid>
      <description>&lt;p&gt;&lt;strong&gt;2:14am.&lt;/strong&gt; Checkout P99 is on fire. Slack wants a root cause in 10 minutes.&lt;/p&gt;

&lt;p&gt;You open Grafana. Jaeger. Logs. Topology. Notes doc. Twenty minutes later you &lt;em&gt;think&lt;/em&gt; you know — but you're still not sure if it's &lt;code&gt;order-service&lt;/code&gt;, MySQL, or that sketchy downstream RPC.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metrics didn't fail you. The workflow did.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We built &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;&lt;strong&gt;DataBuff&lt;/strong&gt;&lt;/a&gt; — open-source, OpenTelemetry-native APM — to fix that: &lt;strong&gt;one question in, evidence-backed root cause out.&lt;/strong&gt; Not a chat box glued to dashboards. An &lt;strong&gt;AI Brain&lt;/strong&gt; that dispatches specialists (metrics, traces, topology, inspection) and merges real telemetry into an incident-ready answer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqrz1grsugh8eyk5ko95x.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqrz1grsugh8eyk5ko95x.gif" alt="DataBuff demo — AI chat, services, and topology" width="760" height="428"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it first (5 minutes)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://databuff.ai/databuff/ai-apm-install.sh | bash
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://databuff.ai/databuff/ai-apm-demo-install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;strong&gt;&lt;a href="http://YOUR_HOST:27403" rel="noopener noreferrer"&gt;http://YOUR_HOST:27403&lt;/a&gt;&lt;/strong&gt; — login &lt;code&gt;admin&lt;/code&gt; / &lt;code&gt;Databuff@123&lt;/code&gt; — add LLM key under &lt;strong&gt;Settings → AI model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Paste this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which services had errors in the last hour? For the slowest one,
show me a typical trace, the slowest span, and what I should do first.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;That's the product.&lt;/strong&gt; Below: architecture, agent squad, and a real demo output.&lt;/p&gt;




&lt;h2&gt;
  
  
  Before vs after
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Before (tab safari)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5–6 tools, zero shared context&lt;/li&gt;
&lt;li&gt;You translate the question into 12 queries&lt;/li&gt;
&lt;li&gt;Senior engineer stitches the story by hand&lt;/li&gt;
&lt;li&gt;Slack gets guesses and screenshots&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After (DataBuff)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One UI, unified Doris storage&lt;/li&gt;
&lt;li&gt;You ask in plain English&lt;/li&gt;
&lt;li&gt;AI Brain + agents query &lt;strong&gt;live&lt;/strong&gt; metrics, traces, topology&lt;/li&gt;
&lt;li&gt;Slack gets root cause, TraceId, P0/P1 actions&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;You already pay for observability. You're still paying in &lt;strong&gt;human attention&lt;/strong&gt; at 2am.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  AI-native ≠ ChatGPT on Grafana
&lt;/h2&gt;

&lt;p&gt;Most "AI observability" in 2024:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only sees what you paste&lt;/li&gt;
&lt;li&gt;Cannot query your trace store&lt;/li&gt;
&lt;li&gt;Guesses under incident pressure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DataBuff agents call real tools.&lt;/strong&gt; Every claim should trace to evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The agent squad&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Brain&lt;/strong&gt; — plans, dispatches, synthesizes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart query&lt;/strong&gt; — P99, error rate, QPS from Doris&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trace analyst&lt;/strong&gt; — slow traces, hottest spans&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Topology&lt;/strong&gt; — upstream/downstream blast radius&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspection&lt;/strong&gt; — sustained pain vs one-off spikes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report&lt;/strong&gt; — incident summary you can forward&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apache 2.0 · self-hosted · data stays on your network.&lt;/p&gt;




&lt;h2&gt;
  
  
  Architecture: 3 components, not 13
&lt;/h2&gt;

&lt;p&gt;Data flow: &lt;strong&gt;OTLP apps → Ingest (4317/4318) → Apache Doris → Web UI (:27403) + AI Brain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2z79rniff9anyyspbdup.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2z79rniff9anyyspbdup.jpg" alt="DataBuff architecture — Ingest, Doris, Platform + AI Brain" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Legacy stack vs DataBuff&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Components:&lt;/strong&gt; 10+ → &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAM:&lt;/strong&gt; 16 GB+ → &lt;strong&gt;~8 GB&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;First deploy:&lt;/strong&gt; 1–2 days → &lt;strong&gt;~5 min&lt;/strong&gt; (one install script)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; siloed → &lt;strong&gt;unified Doris&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; bolt-on chat → &lt;strong&gt;multi-agent native&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenTelemetry in. Unified storage. Agents on top.&lt;/p&gt;




&lt;h2&gt;
  
  
  Product at a glance
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1awwicy0kadctedts1k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1awwicy0kadctedts1k.png" alt="OpenTelemetry APM and AI-native capabilities" width="800" height="160"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo walkthrough
&lt;/h2&gt;

&lt;p&gt;After demo install you get &lt;code&gt;service-a&lt;/code&gt; → &lt;code&gt;service-b&lt;/code&gt; with real traces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Service health&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ccuocfo4l2p1ie27bl3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ccuocfo4l2p1ie27bl3.jpg" alt="Service list with traffic-light health status" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Ask the hard question&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Analyze why service-a calls slowed in the last 30 minutes.
Find highest-P99 endpoint, a typical slow trace, slowest span,
root cause (app vs DB vs downstream), impact, and P0 fixes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Watch agents work in parallel&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0bmdh1rf6wxtmtdxri6f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0bmdh1rf6wxtmtdxri6f.jpg" alt="AI natural language query" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx0zjmml4maow5h9uv0gl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx0zjmml4maow5h9uv0gl.jpg" alt="Multi-agent collaboration and dispatch" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Real demo output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Smart query
  service-a GET /demo/checkout ~240ms avg (17 reqs)
  service-b HTTP 100ms + Dubbo 80ms ~ 75% of latency

Inspection
  Sustained slowness, not a spike; service-a JVM/errors normal

Trace 12e3a078bdbe183d567a2f7e888fe7b3
  Slowest span: service-b -&amp;gt; MySQL SELECT demo_order (~45ms)

Root cause
  Downstream service-b + slow SQL (not service-a)

P0: dedupe service-b double calls; fix MySQL slow queries
P1: fix InsufficientStockException on inventory path
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Topology proof&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0u9ttriselteax9fadu1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0u9ttriselteax9fadu1.jpg" alt="Global service topology" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Call graph&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyjmsci2gbtbjijt6pds2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyjmsci2gbtbjijt6pds2.jpg" alt="Service call flow graph" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  vs SigNoz / Datadog
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DataBuff wins on:&lt;/strong&gt; multi-agent AI RCA built-in, OTel-native, self-host in minutes, you own the data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SigNoz wins on:&lt;/strong&gt; mature classic OSS APM, huge community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Datadog wins on:&lt;/strong&gt; SaaS polish, enterprise integrations.&lt;/p&gt;

&lt;p&gt;We're betting the next moat is &lt;strong&gt;orchestrated agents on OTel data&lt;/strong&gt; — for teams without a 24/7 SRE bench.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who should try this?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Running OTel but still living in 5 tabs during incidents&lt;/li&gt;
&lt;li&gt;Self-hosting (finance, gov, privacy-sensitive)&lt;/li&gt;
&lt;li&gt;Want agents that use tools, not vibes&lt;/li&gt;
&lt;li&gt;Apache 2.0 you can audit&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Your turn
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://databuff.ai/databuff/ai-apm-install.sh | bash
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://databuff.ai/databuff/ai-apm-demo-install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;https://github.com/databufflabs/databuff&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What would you ask the agent squad first? (comment below)&lt;/li&gt;
&lt;li&gt;What OTel signals are we missing?&lt;/li&gt;
&lt;li&gt;Star the repo if 2am tab-hopping should die.&lt;/li&gt;
&lt;/ol&gt;




</description>
      <category>opensource</category>
      <category>showdev</category>
      <category>devops</category>
      <category>opentelemetry</category>
    </item>
  </channel>
</rss>
