<?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>The OpenTelemetry Ecosystem Is Strong — DataBuff Can Plug Into Its eBPF Trace Path</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Thu, 06 Aug 2026 01:24:44 +0000</pubDate>
      <link>https://dev.to/databufflabs/the-opentelemetry-ecosystem-is-strong-databuff-can-plug-into-its-ebpf-trace-path-1kb5</link>
      <guid>https://dev.to/databufflabs/the-opentelemetry-ecosystem-is-strong-databuff-can-plug-into-its-ebpf-trace-path-1kb5</guid>
      <description>&lt;p&gt;The OpenTelemetry community packaged eBPF trace collection as &lt;strong&gt;OBI&lt;/strong&gt; (OpenTelemetry eBPF Instrumentation). On Kubernetes you run a DaemonSet per node; eBPF watches HTTP calls between local services, assembles traces, and exports them — &lt;strong&gt;app Pods stay unchanged&lt;/strong&gt;. Image: &lt;code&gt;otel/ebpf-instrument&lt;/code&gt;. Project: &lt;a href="https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation" rel="noopener noreferrer"&gt;opentelemetry-ebpf-instrumentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Where do traces land? &lt;strong&gt;&lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;DataBuff&lt;/a&gt;&lt;/strong&gt; is an open-source APM platform for services, topology, and call chains. Point OBI at DataBuff and you're done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One DaemonSet, one collector Pod per node&lt;/strong&gt; — ns &lt;code&gt;obi&lt;/code&gt;, app Pods untouched, eBPF on local HTTP → export to DataBuff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 · Install DataBuff
&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-k8s-install.sh | bash
kubectl &lt;span class="nt"&gt;-n&lt;/span&gt; databuff get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All Pods Running and the UI opens — you're good.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 · Check eBPF readiness on app nodes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; /sys/kernel/btf/vmlinux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kernel &lt;strong&gt;5.8+&lt;/strong&gt; recommended; the second command must list a file. Without BTF, collector Pods won't capture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 · Image
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;otel/ebpf-instrument:latest&lt;/code&gt; (worked in our test; &lt;strong&gt;pin a version in production&lt;/strong&gt;). Skip if the cluster can pull; offline clusters need &lt;code&gt;docker load&lt;/code&gt; on nodes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 · Apply the DaemonSet
&lt;/h2&gt;

&lt;p&gt;Replace &lt;code&gt;YOUR_APP_NAMESPACE&lt;/code&gt; and &lt;code&gt;YOUR_DATABUFF_HOST&lt;/code&gt; (&lt;code&gt;ai-apm-ingest.databuff.svc&lt;/code&gt;). &lt;code&gt;hostPID&lt;/code&gt; + &lt;code&gt;privileged&lt;/code&gt; are required.&lt;/p&gt;

&lt;p&gt;Key config:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;discovery.instrument.k8s_namespace&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ebpf.context_propagation: headers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;otel_traces_export.endpoint: http://YOUR_DATABUFF_HOST:4318&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; obi.yaml
kubectl &lt;span class="nt"&gt;-n&lt;/span&gt; obi get ds,pods &lt;span class="nt"&gt;-o&lt;/span&gt; wide
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DESIRED / READY should match node count.&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%2F2302r5nv29dzauyvtlxj.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%2F2302r5nv29dzauyvtlxj.png" alt="DaemonSet READY 5/5" width="800" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5 · Logs
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl &lt;span class="nt"&gt;-n&lt;/span&gt; obi logs &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;obi &lt;span class="nt"&gt;--tail&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;80 | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-iE&lt;/span&gt; &lt;span class="s2"&gt;"instrumenting|process|error"&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Look for &lt;code&gt;instrumenting process&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6 · Traffic
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;seq &lt;/span&gt;1 80&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; 2 &lt;span class="s2"&gt;"http://your-app-url/"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true
  sleep &lt;/span&gt;0.2
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 7 · Verify in DataBuff
&lt;/h2&gt;

&lt;p&gt;Open &lt;strong&gt;APM → Services&lt;/strong&gt;, then topology and trace detail.&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%2Fvo3xqsz7x9q1u40cgute.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%2Fvo3xqsz7x9q1u40cgute.png" alt="Service list" 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%2Fx45e0ul255uxwfvyxher.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%2Fx45e0ul255uxwfvyxher.png" alt="Topology" 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%2F0p9k11415fnnozj4lcug.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%2F0p9k11415fnnozj4lcug.png" alt="Trace list" 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%2F3qtrc38lktsvdvl1cdw4.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%2F3qtrc38lktsvdvl1cdw4.png" alt="Trace waterfall" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  eBPF vs language Agent
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Better when&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;eBPF + DaemonSet&lt;/td&gt;
&lt;td&gt;No injection/restart; HTTP-first; polyglot quick layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Language Agent&lt;/td&gt;
&lt;td&gt;Dubbo, slow SQL, method stacks; kernel &amp;lt; 5.8 / no BTF&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt; no Dubbo RPC yet; no method stacks or custom business spans; privileged Pod + BTF required.&lt;/p&gt;

&lt;h2&gt;
  
  
  How multi-hop traces connect
&lt;/h2&gt;

&lt;p&gt;With &lt;code&gt;context_propagation: headers&lt;/code&gt; and no app code changes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ingress&lt;/strong&gt; — read &lt;code&gt;Traceparent:&lt;/code&gt; on incoming HTTP; attach or create trace context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local correlate&lt;/strong&gt; — match outbound HTTP to the inbound request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Egress&lt;/strong&gt; — sockmap &lt;code&gt;sk_msg&lt;/code&gt; inserts this hop's &lt;code&gt;Traceparent&lt;/code&gt; after the request line.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;HTTPS uses a separate TCP Option path upstream; this walkthrough is plain HTTP + headers.&lt;/p&gt;

&lt;p&gt;Full bilingual post (with more YAML detail): &lt;a href="https://databuff.ai/blog/en/databuff-obi-ebpf-traces" rel="noopener noreferrer"&gt;databuff.ai/blog/en/databuff-obi-ebpf-traces&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opentelemetry</category>
      <category>ebpf</category>
      <category>kubernetes</category>
      <category>devops</category>
    </item>
    <item>
      <title>Palantir Made Ontology Hot — Can APM Troubleshooting Stop at Ontology Alone?</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Fri, 31 Jul 2026 08:25:28 +0000</pubDate>
      <link>https://dev.to/databufflabs/palantir-made-ontology-hot-can-apm-troubleshooting-stop-at-ontology-alone-5dg5</link>
      <guid>https://dev.to/databufflabs/palantir-made-ontology-hot-can-apm-troubleshooting-stop-at-ontology-alone-5dg5</guid>
      <description>&lt;p&gt;"Ontology" is back in fashion. Palantir Foundry is not pitched as yet another data warehouse — it builds an &lt;strong&gt;ontology&lt;/strong&gt; for the enterprise: tables, streams, and sensors become "Customer," "Order," and "Device," with relationships and actions defined so data becomes a world model programs can reason over. LLMs made the pitch louder — models still need to know what exists in the world.&lt;/p&gt;

&lt;p&gt;For our field: &lt;strong&gt;what is the APM ontology? And if you build it, does incident triage just work?&lt;/strong&gt; Two separate questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q1 · How to build an APM ontology&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An APM ontology is two steps: &lt;strong&gt;extract&lt;/strong&gt; entities and relationships from traces, then &lt;strong&gt;materialize&lt;/strong&gt; them into metric tables.&lt;/p&gt;

&lt;p&gt;Setup: service A has instances A-1 and A-2; two endpoints; both call database DB and run the same SQL1. Four traces:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;service&lt;/th&gt;
&lt;th&gt;instance&lt;/th&gt;
&lt;th&gt;endpoint&lt;/th&gt;
&lt;th&gt;call&lt;/th&gt;
&lt;th&gt;sql&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;T1&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;A-1&lt;/td&gt;
&lt;td&gt;ep1&lt;/td&gt;
&lt;td&gt;DB&lt;/td&gt;
&lt;td&gt;SQL1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;T2&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;A-1&lt;/td&gt;
&lt;td&gt;ep2&lt;/td&gt;
&lt;td&gt;DB&lt;/td&gt;
&lt;td&gt;SQL1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;T3&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;A-2&lt;/td&gt;
&lt;td&gt;ep1&lt;/td&gt;
&lt;td&gt;DB&lt;/td&gt;
&lt;td&gt;SQL1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;T4&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;A-2&lt;/td&gt;
&lt;td&gt;ep2&lt;/td&gt;
&lt;td&gt;DB&lt;/td&gt;
&lt;td&gt;SQL1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — extract.&lt;/strong&gt; From T1: entities are service A, instance A-1, endpoint ep1, database DB, SQL1. Relationships: A has instance A-1; A exposes ep1; A-1 serves requests on ep1; ep1 calls DB; ep1 executes SQL1; DB has statement SQL1. P99, latency, and call count are &lt;em&gt;not&lt;/em&gt; entities — they are observations attached to entities.&lt;/p&gt;

&lt;p&gt;All four traces together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service hasInstance Instance&lt;/strong&gt;: A → A-1, A-2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service exposes Endpoint&lt;/strong&gt;: A → ep1, ep2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instance serves request on Endpoint&lt;/strong&gt;: A-1 / A-2 both serve ep1 and ep2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint calls DB&lt;/strong&gt;: ep1 → DB; ep2 → DB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint executes SQL&lt;/strong&gt;: ep1 → SQL1; ep2 → SQL1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DB hasStatement SQL&lt;/strong&gt;: DB → SQL1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — materialize.&lt;/strong&gt; Extracted entities become queryable metric tables. In &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;DataBuff&lt;/a&gt;'s Doris layer (schema is open source), dimension columns are entities; call_count / resp_time are observations:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Table&lt;/th&gt;
&lt;th&gt;Dimensions&lt;/th&gt;
&lt;th&gt;Observations&lt;/th&gt;
&lt;th&gt;Entities&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;metric_service&lt;/td&gt;
&lt;td&gt;service&lt;/td&gt;
&lt;td&gt;call_count / resp_time / error_count&lt;/td&gt;
&lt;td&gt;Service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;metric_service_instance&lt;/td&gt;
&lt;td&gt;service + instance&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;td&gt;Service, Instance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;metric_service_http&lt;/td&gt;
&lt;td&gt;service + instance + endpoint&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;td&gt;Service, Instance, Endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;metric_service_db&lt;/td&gt;
&lt;td&gt;service + instance + db + sql&lt;/td&gt;
&lt;td&gt;db calls / db latency&lt;/td&gt;
&lt;td&gt;Service, Instance, DB, SQL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Aggregating the four traces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;metric_service&lt;/strong&gt;: service A → 1 row, 4 entry calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;metric_service_instance&lt;/strong&gt;: by instance → 2 rows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;metric_service_http&lt;/strong&gt;: by instance + endpoint → 4 rows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;metric_service_db&lt;/strong&gt;: by instance + DB + SQL → 2 rows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ontology done: traces tell you what exists and what connects; metric tables materialize those entities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q2 · Is ontology enough?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Entities and relationships complete — is troubleshooting solved? Consider how a connection pool actually behaves:&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%2Fdatabuff.ai%2Fblog%2Fapm-ontology-model%2Fassets%2Fconnection-pool-logic.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%2Fdatabuff.ai%2Fblog%2Fapm-ontology-model%2Fassets%2Fconnection-pool-logic.png" alt="Connection pool branches an ER diagram cannot capture" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even if you add ConnectionPool as Service → ConnectionPool → Database, you only label the big boxes. The branches and states in between &lt;strong&gt;cannot be covered by adding one more entity&lt;/strong&gt; — that layer is &lt;strong&gt;logic&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;a) &lt;strong&gt;Acquire&lt;/strong&gt;: idle → return; can grow → create; pool full → lock wait; timeout → error&lt;br&gt;
b) &lt;strong&gt;Use / return&lt;/strong&gt;: run SQL → return → wake waiters&lt;br&gt;
c) &lt;strong&gt;Background maintenance&lt;/strong&gt;: heartbeat, evict stale connections&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Entity-only reasoning fails when an endpoint slows down:&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;&lt;/th&gt;
&lt;th&gt;Ontology only&lt;/th&gt;
&lt;th&gt;With logic&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reasoning&lt;/td&gt;
&lt;td&gt;endpoint → DB, slow ⇒ DB slow&lt;/td&gt;
&lt;td&gt;stuck in lock wait, SQL never ran&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Symptom&lt;/td&gt;
&lt;td&gt;endpoint latency up&lt;/td&gt;
&lt;td&gt;DB execution may be fine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conclusion&lt;/td&gt;
&lt;td&gt;root cause is DB&lt;/td&gt;
&lt;td&gt;root cause is &lt;strong&gt;waiting for a connection&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;First principles: &lt;strong&gt;program = data + logic&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;&lt;/th&gt;
&lt;th&gt;Ontology&lt;/th&gt;
&lt;th&gt;Logic&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Manages&lt;/td&gt;
&lt;td&gt;what exists, who connects&lt;/td&gt;
&lt;td&gt;how requests flow, where they stall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Locks onto&lt;/td&gt;
&lt;td&gt;target entities&lt;/td&gt;
&lt;td&gt;last-mile root cause&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Without it&lt;/td&gt;
&lt;td&gt;no drill-down target&lt;/td&gt;
&lt;td&gt;stuck at "something is wrong"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Connection pool is one slice — it shows entity-only is not enough. See how DataBuff breaks down latency for one endpoint:&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%2Fdatabuff.ai%2Fblog%2Fapm-ontology-model%2Fassets%2Fendpoint-latency-logic-breakdown.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%2Fdatabuff.ai%2Fblog%2Fapm-ontology-model%2Fassets%2Fendpoint-latency-logic-breakdown.png" alt="DataBuff endpoint latency breakdown" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Entry average ~240ms; breakdown shows HTTP service-b ~100ms, RPC service-b ~80ms, remainder in MySQL, ES, Redis, Kafka. That is &lt;strong&gt;logic modeling for one entry&lt;/strong&gt; — track entry latency and state, then each operation type after the entry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q3 · How to model logic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Scale to a real app: track latency and state for &lt;strong&gt;every entry&lt;/strong&gt;, and for &lt;strong&gt;each operation type&lt;/strong&gt; after every entry. Entries include RPC, HTTP, MQ consumers, scheduled jobs, and more.&lt;/p&gt;

&lt;p&gt;After a request enters, it typically lands in &lt;strong&gt;5 operation types + 1 behavior&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;Type&lt;/th&gt;
&lt;th&gt;Key dimensions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DB remote operation&lt;/td&gt;
&lt;td&gt;dal group / table / operation / sql&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redis remote operation&lt;/td&gt;
&lt;td&gt;command&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MQ remote operation&lt;/td&gt;
&lt;td&gt;exchange / routingKey / vhost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RPC remote operation&lt;/td&gt;
&lt;td&gt;downstream service / remote method&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local operation&lt;/td&gt;
&lt;td&gt;no extra attributes yet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thrown exception&lt;/td&gt;
&lt;td&gt;exception name&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For remote operations, split latency into three parts:&lt;/p&gt;

&lt;p&gt;a) &lt;strong&gt;Client&lt;/strong&gt;: connect, send, receive&lt;br&gt;
b) &lt;strong&gt;Network&lt;/strong&gt;: transport&lt;br&gt;
c) &lt;strong&gt;Server&lt;/strong&gt;: peer execution&lt;/p&gt;

&lt;p&gt;Pool-full lock wait accrues on the &lt;strong&gt;client&lt;/strong&gt; — &lt;strong&gt;waiting for a connection ≠ slow SQL&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Incidents then follow one chain: which entries → local ops → remote ops (down to SQL/method) → network vs server → exceptions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ontology locks entities; logic locks root cause.&lt;/strong&gt; Logic models entry → operation → remote three-part latency → exception, with latency and state at each layer. For AI to separate "waiting for a connection" from "slow SQL," it must land on entities via ontology, then walk this logic chain to the actual reason.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>apm</category>
      <category>devops</category>
      <category>observability</category>
    </item>
    <item>
      <title>Install Failed but the Page Still Opens — Ops Expert Restores Doris</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Tue, 28 Jul 2026 01:27:27 +0000</pubDate>
      <link>https://dev.to/databufflabs/install-failed-but-the-page-still-opens-ops-expert-restores-doris-16p</link>
      <guid>https://dev.to/databufflabs/install-failed-but-the-page-still-opens-ops-expert-restores-doris-16p</guid>
      <description>&lt;p&gt;Almost every product hits two kinds of user pain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Can't use it:&lt;/strong&gt; install fails, won't start, or dies in production — errors only, then humans grep logs and guess commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't know how:&lt;/strong&gt; docs elsewhere, menus buried — ask a helper and get "see the official documentation."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Self-healing ops&lt;/strong&gt; fixes the first: when storage is down the product stays usable, SSH for evidence, change config, restart, verify.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In-product Q&amp;amp;A&lt;/strong&gt; fixes the second: ask the product in natural language; answers come from in-product docs and your deployment.&lt;/p&gt;

&lt;p&gt;DataBuff is an &lt;strong&gt;open-source, AI-native OpenTelemetry APM&lt;/strong&gt; — metrics, traces, logs first; AI on the same telemetry. Three pieces: &lt;strong&gt;Ingest&lt;/strong&gt;, &lt;strong&gt;Doris&lt;/strong&gt;, &lt;strong&gt;AI platform / Web&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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F00-simple-architecture.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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F00-simple-architecture.jpg" alt="DataBuff minimal architecture" width="800" height="400"&gt;&lt;/a&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/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Self-healing in practice:&lt;/strong&gt; Doris breaks during install. Many products go dark; you SSH and guess. We inject &lt;code&gt;mem_limit: 256m&lt;/code&gt; on Doris BE so &lt;code&gt;start.sh&lt;/code&gt; exits non-zero. &lt;strong&gt;Troubleshooting mode&lt;/strong&gt; keeps Web up while Doris is unhealthy.&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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F01-start-fail-terminal.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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F01-start-fail-terminal.png" alt="start.sh non-zero troubleshooting banner" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configure an LLM, open AI chat, pick &lt;strong&gt;Ops Expert&lt;/strong&gt;, grant SSH, ask for locate-and-fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I installed DataBuff on 192.168.50.140 (dir /opt/databuff-ai-apm-failover).
install/start failed but Web opens.
SSH to root@192.168.50.140 (password Databuff@123)
Find why Doris FE/BE is not ready; fix root cause and report results.
Install dir: /opt/databuff-ai-apm-failover
&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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F04-ops-prompt.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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F04-ops-prompt.png" alt="Ops Expert prompt" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the host: BE Restarting → &lt;code&gt;mem_limit: 256m&lt;/code&gt; OOM → &lt;strong&gt;memory raised to 4g, config persisted, ingest restarted, full-stack Healthy&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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F05-ops-final-conclusion.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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F05-ops-final-conclusion.png" alt="Ops Expert fix summary" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Terminal matches: four containers healthy, Doris &lt;code&gt;SELECT 1&lt;/code&gt; passes. Troubleshooting mode exits automatically.&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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F07-recovery-terminal.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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F07-recovery-terminal.png" alt="Recovery terminal" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In-product Q&amp;amp;A&lt;/strong&gt; on the same AI entry — OTel ingest and alert thresholds:&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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F08a-qa-prompt.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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F08a-qa-prompt.png" alt="Product Q&amp;amp;A prompt" width="800" height="400"&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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F08-qa-expert.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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F08-qa-expert.png" alt="OTel ingest and alerts answer" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then LLM setup — menu paths, required fields, common pitfalls:&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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F09a-qa2-prompt.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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F09a-qa2-prompt.png" alt="LLM config question" width="800" height="400"&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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F09-qa2-answer.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%2Fdatabuff.ai%2Fblog%2Fdatabuff-ops-expert-install-troubleshoot%2Fassets%2F09-qa2-answer.png" alt="LLM config answer" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In one line:&lt;/strong&gt; self-healing fixes "can't use it"; in-product Q&amp;amp;A fixes "don't know how."&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>apm</category>
      <category>opentelemetry</category>
    </item>
    <item>
      <title>One Entry, Many Experts: How DataBuff Orchestrates Parallel Ops AI</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Sun, 26 Jul 2026 01:26:58 +0000</pubDate>
      <link>https://dev.to/databufflabs/one-entry-many-experts-how-databuff-orchestrates-parallel-ops-ai-46nf</link>
      <guid>https://dev.to/databufflabs/one-entry-many-experts-how-databuff-orchestrates-parallel-ops-ai-46nf</guid>
      <description>&lt;p&gt;It's 2 a.m. The alert channel blows up.&lt;/p&gt;

&lt;p&gt;Someone needs error rates. Someone else wants traces. Another person suspects a full disk on a container. You open one AI chat — it either hand-waves, or mixes metrics, logs, and SSH into one muddy answer. &lt;strong&gt;The more you ask, the messier it gets.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open more windows? Worse. Each bot talks past the others. You still don't have &lt;strong&gt;one incident-ready summary&lt;/strong&gt; you can paste into the war room.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;DataBuff&lt;/a&gt; treats multi-expert coordination like a hospital: &lt;strong&gt;triage desk + specialist consults&lt;/strong&gt;. You speak to &lt;strong&gt;one entry point&lt;/strong&gt;. Data Query, Inspection, Ops, and Product Q&amp;amp;A work in parallel behind the scenes, then roll up into an evidence-backed report. This post covers two things: &lt;strong&gt;why on-call actually needs multiple experts&lt;/strong&gt;, and &lt;strong&gt;how to dispatch, parallelize, and merge without chaos&lt;/strong&gt; — framework only, no source-code dump.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why one bigger prompt is not enough
&lt;/h2&gt;

&lt;p&gt;The instinct is: &lt;strong&gt;one stronger model, one longer prompt, done.&lt;/strong&gt; On a real incident, that breaks — for the same reason a hospital does not send one doctor to run the ECG, draw blood, read the CT, and operate at once.&lt;/p&gt;

&lt;p&gt;Chest pain in the ER: you do not expect a single generalist to do every specialty with every machine. &lt;strong&gt;Wrong tools, wrong permissions, shallow on everything.&lt;/strong&gt; Lab values and surgical plans get mixed up. Bad outcomes follow.&lt;/p&gt;

&lt;p&gt;On-call is the same. Ask &lt;em&gt;"anything wrong with the cluster?"&lt;/em&gt; and you may need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Query&lt;/strong&gt; — latency and error rates in Doris, slow traces (labs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspection&lt;/strong&gt; — JVM/GC/dependency sweeps across dozens of services (screening)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ops Expert&lt;/strong&gt; — SSH, logs, disk, processes (surgery)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product Q&amp;amp;A&lt;/strong&gt; — where OTLP ports and alert menus live (admin desk)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Four &lt;strong&gt;different toolchains, permissions, and report formats&lt;/strong&gt;. Stuffing them into one mega-prompt balloons context: metric semantics bleed into shell commands. Models &lt;strong&gt;cross-contaminate, overreach, hallucinate&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;More chat tabs do not fix it. That is the family running between departments with no triage: &lt;strong&gt;no routing&lt;/strong&gt;, no shared chart, you stitch the story at 2 a.m.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-expert is not hype.&lt;/strong&gt; Ops problems are cross-domain, parallel, and evidence-heavy — same shape as triage → specialty work → attending synthesis.&lt;/p&gt;

&lt;h2&gt;
  
  
  One front door, specialists in the back
&lt;/h2&gt;

&lt;p&gt;Think of DataBuff's AI platform as &lt;strong&gt;on-call consult&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You talk only to the &lt;strong&gt;triage desk&lt;/strong&gt; (AI Brain)&lt;/li&gt;
&lt;li&gt;The desk does not run labs or operate — it &lt;strong&gt;pages the right specialty&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Each expert queries real telemetry and returns &lt;strong&gt;evidence&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The desk merges into something you can &lt;strong&gt;act on&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&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%2F3ur4wo0y1kto72sqrnle.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%2F3ur4wo0y1kto72sqrnle.png" alt="Triage desk plus specialist consults" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is not "sidebar ChatGPT." Classic APM + chat often &lt;strong&gt;cannot see your live metrics and traces&lt;/strong&gt;. DataBuff is &lt;strong&gt;AI-native APM on OpenTelemetry&lt;/strong&gt; — experts must call tools; guessing is not the design.&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%2Fxm0z2tjhj2oh5l72mjz7.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%2Fxm0z2tjhj2oh5l72mjz7.jpg" alt="AI-native APM minimal stack" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Three layers, not one giant prompt
&lt;/h2&gt;

&lt;p&gt;New capability is added in three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt; — instruments: service lists, traces, inspections, controlled commands&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Experts&lt;/strong&gt; — roles: Data Query knows metrics, Inspection scans the fleet, Ops goes on-host, Q&amp;amp;A reads product docs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Playbooks&lt;/strong&gt; — how each role investigates and writes reports; plus routing rules for the Brain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A new "department" ≈ tools + playbook + expert registration. &lt;strong&gt;The hospital building (your observability pipeline) stays put.&lt;/strong&gt; You still talk to one desk.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Brain dispatches
&lt;/h2&gt;

&lt;p&gt;The Brain loads routing rules, reads every expert's charter, and &lt;strong&gt;semantically matches&lt;/strong&gt; your request. It emits a dispatch: &lt;strong&gt;which expert + task brief&lt;/strong&gt;. Two hard rules: &lt;strong&gt;faithful to your intent&lt;/strong&gt;, and &lt;strong&gt;the Brain does not do the work&lt;/strong&gt; — no metrics, no inspection runs, no shell on its own. Triage and synthesis only.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pain point 1: what does dispatch actually look like?
&lt;/h3&gt;

&lt;p&gt;A ticket-shaped loop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You message AI Brain; it reads routing rules and picks experts.&lt;/li&gt;
&lt;li&gt;Brain issues &lt;strong&gt;one dispatch&lt;/strong&gt;: target expert + task brief (your words preserved).&lt;/li&gt;
&lt;li&gt;System immediately replies &lt;strong&gt;"accepted, please wait"&lt;/strong&gt; — ticket created, work not finished.&lt;/li&gt;
&lt;li&gt;The expert runs &lt;strong&gt;in the background&lt;/strong&gt;: tools, traces, inspection, controlled commands.&lt;/li&gt;
&lt;li&gt;Expert returns a &lt;strong&gt;delivery artifact&lt;/strong&gt; to the same session and &lt;strong&gt;wakes Brain for another turn&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Pain point 2: why not wait synchronously?
&lt;/h3&gt;

&lt;p&gt;Expert jobs are slow. Long-lived SSE connections time out. True parallelism dies if you block serially. Experts are multi-step tool loops. So dispatch is &lt;strong&gt;async by design&lt;/strong&gt;: Brain ends its turn, experts run, callbacks wake Brain when done.&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%2Faopkxhecwx7ve24r2s4k.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%2Faopkxhecwx7ve24r2s4k.png" alt="Sync vs async dispatch" width="799" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pain point 3: four guardrails so async does not sprawl
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Same expert, serial only&lt;/strong&gt; — duplicate dispatch while busy is rejected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different experts may run in parallel&lt;/strong&gt; — Inspection + Data Query together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session-level pending counter&lt;/strong&gt; — dispatch +1, delivery −1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Final answer only when pending = 0&lt;/strong&gt; — Brain must rewrite a complete reply, not "as above."&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Live demo: one sentence, two experts
&lt;/h2&gt;

&lt;p&gt;On &lt;strong&gt;demo.databuff.ai&lt;/strong&gt;, open &lt;strong&gt;AI Brain&lt;/strong&gt;. &lt;strong&gt;Do not pick an expert manually.&lt;/strong&gt; Paste:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Any cluster anomalies in the last hour? Run a joint diagnosis with Data Query and Intelligent Inspection: Data Query checks latency, error rate, and slow traces; Inspection runs tiered health checks; summarize into an incident report I can forward.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Brain &lt;strong&gt;dispatches twice in parallel&lt;/strong&gt; — Data Query and Inspection.&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%2Fcn0m3x7e5ot0qt3fo5iz.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%2Fcn0m3x7e5ot0qt3fo5iz.png" alt="AI Brain parallel dispatch" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inspection returns an S/A/B tiered view: most of 34 services in S/A; &lt;strong&gt;service-b&lt;/strong&gt; at B with &lt;strong&gt;InsufficientStockException&lt;/strong&gt; on SKU DEMO-10001. Brain merges into HTML with &lt;strong&gt;P0/P1 action items&lt;/strong&gt; — ready for the incident channel:&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%2F97r27xvn2r9yk20be2o5.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%2F97r27xvn2r9yk20be2o5.png" alt="Combined incident report" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Most products still make you pick an expert first
&lt;/h2&gt;

&lt;p&gt;Many "multi-agent" UIs show four tiles — Data Query, Inspection, Ops, Q&amp;amp;A. &lt;strong&gt;You still guess which door to knock on.&lt;/strong&gt; One conversation belongs to one expert. Switch experts, new window, context lost. Ask for error rates &lt;strong&gt;and&lt;/strong&gt; a JVM sweep in one breath? You play dispatcher across tabs.&lt;/p&gt;

&lt;p&gt;No triage desk — self-serve specialty signup. Wrong line wastes time; right line still means &lt;strong&gt;you&lt;/strong&gt; collect reports from every window.&lt;/p&gt;

&lt;p&gt;The gap is not four avatars vs one. It is &lt;strong&gt;who routes work&lt;/strong&gt;: you picking single-expert chats, vs Brain accepting, dispatching, parallelizing, and merging with an evidence chain. That is what on-call needs: &lt;strong&gt;one entry, Brain dispatch, legal parallelism, traceable rollup.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Good systems do not make you guess the specialty. Hand off like shift change — one sentence in, triage and consults happen backstage. Try it on &lt;strong&gt;demo.databuff.ai&lt;/strong&gt; with the prompt above.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Try DataBuff&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open source · multi-expert orchestration · one entry, parallel dispatch&lt;/p&gt;

&lt;p&gt;Online Demo: &lt;a href="https://demo.databuff.ai" rel="noopener noreferrer"&gt;https://demo.databuff.ai&lt;/a&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;

&lt;p&gt;If this helped, star the repo — and run the demo prompt yourself once.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>aiops</category>
      <category>opentelemetry</category>
    </item>
    <item>
      <title>Is Your Data Quality Good Enough for the AI Era?</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Thu, 23 Jul 2026 01:37:09 +0000</pubDate>
      <link>https://dev.to/databufflabs/is-your-data-quality-good-enough-for-the-ai-era-1oga</link>
      <guid>https://dev.to/databufflabs/is-your-data-quality-good-enough-for-the-ai-era-1oga</guid>
      <description>&lt;p&gt;When AI troubleshooting fails, people blame the Prompt, then the model. More often the problem is upstream: the telemetry you feed the AI is not good enough — APIs, SQL, entrypoints, and hops don’t line up, so even a strong model can only tell you to “go dig the traces yourself.” Same rule as RAG and AI support: bad data, fancy layers don’t help.&lt;/p&gt;

&lt;p&gt;How do you know you “pass”? This article does three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set a &lt;strong&gt;four-question bar&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Score DataBuff, SkyWalking, Jaeger, Pinpoint, SigNoz, and OpenObserve with the same ruler&lt;/li&gt;
&lt;li&gt;Show how &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;DataBuff&lt;/a&gt; uses &lt;strong&gt;12 fixed &lt;code&gt;metric_service_*&lt;/code&gt; tables&lt;/strong&gt; to meet that bar&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. A scenario you’ve probably hit
&lt;/h2&gt;

&lt;p&gt;Checkout is slow in production. You plug AI into your APM and ask:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Why is checkout slow? Which SQL is the bottleneck?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fail&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Please open the trace detail, find the root span manually, then correlate the DB span…”&lt;/p&gt;

&lt;p&gt;AI becomes a &lt;strong&gt;fancy search box&lt;/strong&gt; — barely better than no AI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Pass&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Slow on &lt;code&gt;SELECT … FROM orders&lt;/code&gt;, triggered by &lt;code&gt;/checkout&lt;/code&gt;; the payment hop has the highest latency.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No raw-trace digging — a direct answer.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;In the AI era, data quality wins.&lt;/strong&gt; Everyone can copy Prompts; a curated metric schema can’t be copied overnight. Bad datasets just make stronger models tell you to dig yourself.&lt;/p&gt;

&lt;p&gt;Analogy: raw telemetry is unlabeled video footage; a high-quality dataset is a &lt;strong&gt;fixed-column spreadsheet&lt;/strong&gt; — which API, which SQL, who triggered it — AI can answer from that.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The bar: four questions AI must answer
&lt;/h2&gt;

&lt;p&gt;Forget field names. Ask your APM these four (with or without AI) — &lt;strong&gt;can it answer directly?&lt;/strong&gt; That’s the bar.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Which API is broken?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
HTTP, DB, and MQ must not share one Span-name pile. Redis GET and checkout POST need separate stats.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Which SQL / which database is slow?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
“MySQL avg 50ms” is not enough — you need the &lt;strong&gt;exact statement&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Which page triggered the slow SQL?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The critical question. Many stacks can’t answer — you’re sent back to hunt the entry by hand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Which hop on the call path is dragging?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
order → payment → MySQL: traffic and errors per hop — not just a topology thumbnail.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pass = all four answered directly.&lt;/strong&gt; If one answer is “go dig the traces yourself,” the dataset fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. App-performance matrix: where the six diverge
&lt;/h2&gt;

&lt;p&gt;Same-environment application performance matrix. Basics (topology / service list / Trace) are common; the highlighted capability rows open the gap: call analysis, service flow, middleware pages.&lt;/p&gt;

&lt;p&gt;Legend: ✅ verified · △ entry exists / limited depth · ❌ no equivalent&lt;/p&gt;

&lt;p&gt;Versions tested: DataBuff v0.1.4 · SkyWalking 10.4.0 · Jaeger 1.76 · Pinpoint 3.1.0 · SigNoz 0.133 · OpenObserve 0.91-rc1.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;DataBuff&lt;/th&gt;
&lt;th&gt;SkyWalking&lt;/th&gt;
&lt;th&gt;Jaeger&lt;/th&gt;
&lt;th&gt;Pinpoint&lt;/th&gt;
&lt;th&gt;SigNoz&lt;/th&gt;
&lt;th&gt;OpenObserve&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Global topology&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Service list / golden metrics&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Service-level topology&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Service call analysis&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Instance golden metrics&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Instance topology&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Instance call analysis&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8. API-level topology&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9. API call analysis&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10. Service flow&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11. Middleware pages (DB / cache / MQ)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12. Error analysis&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13. Trace list / search&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14. Trace detail&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15. Span ↔ logs&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16. Log list / search&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17. Log detail&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18. Logs ↔ Trace&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;How to read it&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;All six can search traces; the gap is call analysis, service flow, middleware pages.&lt;/li&gt;
&lt;li&gt;For humans staring at UI, SkyWalking / Pinpoint often suffice; for AI to answer the four questions, you need that depth.&lt;/li&gt;
&lt;li&gt;Those green cells aren’t extra menus — they’re the &lt;strong&gt;backbone of the causality chain&lt;/strong&gt;: which API, which SQL, who triggered it, which hop dragged.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  4. How do you prepare a passing dataset?
&lt;/h2&gt;

&lt;p&gt;Those capabilities aren’t pages bolted on later — &lt;strong&gt;incoming spans are written into fixed tables by type&lt;/strong&gt;. DataBuff ships this as &lt;strong&gt;12 &lt;code&gt;metric_service_*&lt;/code&gt; tables&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;Spans arrive
↓ Split by type: HTTP / DB / Redis / MQ / RPC… one table each
↓ Freeze key columns: entry API, SQL digest, path hops with the metrics
↓ Query joins the chain; UI grows middleware pages / service flow / call analysis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Table&lt;/th&gt;
&lt;th&gt;Stores&lt;/th&gt;
&lt;th&gt;Answers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Service-entry RED&lt;/td&gt;
&lt;td&gt;Is this service healthy?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_trace&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Trace root&lt;/td&gt;
&lt;td&gt;End-to-end success and duration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_http&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;HTTP API typing&lt;/td&gt;
&lt;td&gt;Which URL / method / status is bad?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_db&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;DB calls&lt;/td&gt;
&lt;td&gt;Which SQL is slow, who triggered (entry on same row)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_flow&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Entry path tree&lt;/td&gt;
&lt;td&gt;From entry, which hop drags?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_rpc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;RPC calls&lt;/td&gt;
&lt;td&gt;gRPC / Dubbo method and status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_redis&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cache calls&lt;/td&gt;
&lt;td&gt;Who issues GET/SET, is it slow?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_mq&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Messaging&lt;/td&gt;
&lt;td&gt;Topic produce/consume, lag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_remote&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;External deps&lt;/td&gt;
&lt;td&gt;External API QPS / latency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_exception&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Entry exceptions&lt;/td&gt;
&lt;td&gt;Exception name / code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_config&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Config reads&lt;/td&gt;
&lt;td&gt;Are Nacos / ZK reads slow?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_instance&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Instance metadata&lt;/td&gt;
&lt;td&gt;Pod / host / Java version (JOIN)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For the four questions, lead with tables &lt;strong&gt;1 / 3 / 4 / 5&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Three words before you query:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;tag&lt;/strong&gt; — filter columns (&lt;code&gt;url&lt;/code&gt;, &lt;code&gt;sqlContent&lt;/code&gt;, &lt;code&gt;rootResource&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;field&lt;/strong&gt; — numeric columns (&lt;code&gt;cnt&lt;/code&gt;, &lt;code&gt;sumDuration&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;virtual service&lt;/strong&gt; — e.g. &lt;code&gt;[mysql]demo_apm&lt;/code&gt; as a topology node&lt;/li&gt;
&lt;/ul&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%2F5glss1cvluty039ot25m.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%2F5glss1cvluty039ot25m.png" alt="DataBuff global topology" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;HTTP / DB / MQ / cache typed into topology — from component tables, not one Span-name dump&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Four questions → which table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Primary table&lt;/th&gt;
&lt;th&gt;Key tags&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Is the service healthy? (warmup)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;service&lt;/code&gt;, &lt;code&gt;errorType&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1. Which API is broken?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_http&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;url&lt;/code&gt;, &lt;code&gt;httpMethod&lt;/code&gt;, &lt;code&gt;httpCode&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2. Which SQL is slow?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_db&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;sqlContent&lt;/code&gt;, &lt;code&gt;isSlow&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3. Who triggered the slow SQL?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_db&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;&lt;code&gt;rootResource&lt;/code&gt;&lt;/strong&gt; (same row as sqlContent)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4. Which hop drags?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metric_service_flow&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;entryInterfacePathId&lt;/code&gt;, &lt;code&gt;pathId&lt;/code&gt;, &lt;code&gt;parentService&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  ① metric_service — warmup
&lt;/h3&gt;

&lt;p&gt;Answers: “service-a QPS, error rate, avg latency today?”&lt;/p&gt;

&lt;p&gt;Only &lt;strong&gt;entry requests&lt;/strong&gt; write a row — filter out DB / Redis / MQ 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%2F4ceyhipkiy4ecii2uifo.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%2F4ceyhipkiy4ecii2uifo.png" alt="Service list RED metrics" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Service list — product face of &lt;code&gt;metric_service&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ② metric_service_http — Q1
&lt;/h3&gt;

&lt;p&gt;Answers: “Slowest URL? GET or POST? 4xx or 5xx?”&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%2F3kf3bjvlhzhtt1lly2ua.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%2F3kf3bjvlhzhtt1lly2ua.png" alt="API analysis HTTP typing" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;URLs like &lt;code&gt;/demo/checkout&lt;/code&gt; as their own rows&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ③ metric_service_db — Q2 and Q3
&lt;/h3&gt;

&lt;p&gt;Answers: “Which SQL is slow? Which entry triggered it?” — &lt;strong&gt;same table, same row&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sqlContent&lt;/code&gt; + &lt;code&gt;rootResource&lt;/code&gt; on one row is the most important design for the bar: no Trace hunt for the trigger.&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%2F5rwg5zhur2wr5x52g53t.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%2F5rwg5zhur2wr5x52g53t.png" alt="Database list" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;code&gt;[mysql]demo_apm&lt;/code&gt; / ES as virtual services&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ④ metric_service_flow — Q4
&lt;/h3&gt;

&lt;p&gt;Answers: “From service-a entry, how much response each hop contributes?”&lt;/p&gt;

&lt;p&gt;The path tree is computed once a Trace is &lt;strong&gt;complete&lt;/strong&gt; — not one hop per arriving Span.&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%2Fvoti6undtby61heno213.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%2Fvoti6undtby61heno213.png" alt="Service flow path tree" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Entry service-a expands downstream with response share&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. End-to-end: slow checkout
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Entry health&lt;/strong&gt; — &lt;code&gt;metric_service&lt;/code&gt;: did service-a error rate / avg latency spike?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pin the slow API&lt;/strong&gt; — &lt;code&gt;metric_service_http&lt;/code&gt;: confirm &lt;code&gt;url&lt;/code&gt; is &lt;code&gt;/demo/checkout&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slow SQL + trigger&lt;/strong&gt; — &lt;code&gt;metric_service_db&lt;/code&gt;: &lt;code&gt;rootResource='/demo/checkout' AND isSlow=1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which hop drags&lt;/strong&gt; — &lt;code&gt;metric_service_flow&lt;/code&gt;: expand from service-a, compare response share&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(Optional) which machine&lt;/strong&gt; — JOIN &lt;code&gt;metric_service_instance&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s data quality: filter and aggregate on &lt;strong&gt;fixed columns&lt;/strong&gt; — not guessing Span names, not sending humans back into raw traces.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Three-step self-check
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the four questions&lt;/strong&gt; — if one answer is “dig the traces yourself,” you fail. Chat ≠ troubleshooting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the highlighted matrix rows&lt;/strong&gt; — call analysis / service flow / middleware pages — especially “slow SQL → entry.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you fail&lt;/strong&gt; — add fixed columns (entry API, SQL digest) at write time, or switch to a more complete dataset.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Close:&lt;/strong&gt; In the AI era, ask &lt;em&gt;is your data quality good enough&lt;/em&gt; — before Prompts and models. Four questions set the bar; the matrix shows the product surface; the 12 tables are why.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Try DataBuff&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open source · OpenTelemetry · datasets designed for AI querying&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live Demo: &lt;a href="https://demo.databuff.ai" rel="noopener noreferrer"&gt;https://demo.databuff.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;https://github.com/databufflabs/databuff&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full post: &lt;a href="https://databuff.ai/blog/en/trace-metrics-data-quality/" rel="noopener noreferrer"&gt;https://databuff.ai/blog/en/trace-metrics-data-quality/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this helped, leave a ❤️ or a Star on GitHub — and tell us which of the four questions your stack still can’t answer.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>apm</category>
      <category>opentelemetry</category>
    </item>
    <item>
      <title>DataBuff vs Jaeger: Same-Host Lab Comparison</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Thu, 23 Jul 2026 01:33:56 +0000</pubDate>
      <link>https://dev.to/databufflabs/databuff-vs-jaeger-same-host-lab-comparison-oc0</link>
      <guid>https://dev.to/databufflabs/databuff-vs-jaeger-same-host-lab-comparison-oc0</guid>
      <description>&lt;p&gt;Same-host lab: DataBuff (OTLP &lt;code&gt;:4318&lt;/code&gt;) and Jaeger all-in-one (OTLP / UI &lt;code&gt;:16686&lt;/code&gt;) side by side on the same Demo (service-a / service-b). Host: 192.168.50.140 · DataBuff v0.1.4 · Jaeger v1.76.0. Marks: ✅ verified in this lab · △ present but limited · ❌ no equivalent. Green bold cells are clear DataBuff leads.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Capability matrices
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Seven AI capabilities&lt;/strong&gt; (v0.1.4: See → Squad → Inspect → Diagnose → Repair → Predict → Answer)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Jaeger v1.76.0&lt;/th&gt;
&lt;th&gt;DataBuff v0.1.4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;① See · natural-language questions&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Ask about services / topology / trends; AI reads telemetry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;② Squad · multi-agent collaboration&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Parallel evidence gathering; reusable task orchestration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;③ Inspect · service inspection + report&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ One-shot inspection with evidence and actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;④ Diagnose · bottleneck / RCA evidence&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Trace / metrics / topology evidence (not a black-box “root cause”)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑤ Repair · Ops Expert actions&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Repair under policy + human approval; dangerous-command denylist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑥ Predict · capacity / trends&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Capacity and trend analysis — from after-the-fact to ahead-of-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑦ Answer · product Q&amp;amp;A&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Answers deploy / ingest / config from docs and code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extend · MCP / Skill / custom experts&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ External MCP / Skill and custom digital experts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Largest gap: Jaeger is a distributed tracing backend with no equivalent AI platform; DataBuff exposes the seven capabilities as configurable home entries with APM as AI context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APM&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;Capability&lt;/th&gt;
&lt;th&gt;Jaeger v1.76.0&lt;/th&gt;
&lt;th&gt;DataBuff v0.1.4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Global topology&lt;/td&gt;
&lt;td&gt;△ Dependencies (service DAG; this lab shows service-a → service-b)&lt;/td&gt;
&lt;td&gt;✅ Topology + health colors + drill-down (incl. middleware)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Service list &amp;amp; golden metrics&lt;/td&gt;
&lt;td&gt;❌ Search dropdown only; no dedicated service list / golden-metric charts&lt;/td&gt;
&lt;td&gt;✅ Service list + charts; same demo shows service-a / b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Service-level topology&lt;/td&gt;
&lt;td&gt;△ Via Dependencies only&lt;/td&gt;
&lt;td&gt;✅ Dedicated service topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Service call analysis (up/downstream + Trace)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Upstream/downstream structure, latency/contribution; drill to Trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Instance golden metrics&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Instance golden-metric charts / list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Instance topology&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Dedicated instance topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Instance call analysis (up/downstream + Trace)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Per-instance up/downstream + Trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8. Endpoint topology&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Dedicated endpoint topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9. Endpoint call analysis (up/downstream + Trace)&lt;/td&gt;
&lt;td&gt;❌ Mostly Trace search filters&lt;/td&gt;
&lt;td&gt;✅ Per-endpoint caller/callee + Trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10. Service flow (service / endpoint Trace contribution)&lt;/td&gt;
&lt;td&gt;❌ Dependencies answers “who connects” only&lt;/td&gt;
&lt;td&gt;✅ Response contribution from entry; service / endpoint Trace view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11. Middleware / external pages (DB / cache / MQ / external)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Dedicated pages: DB / cache / MQ / external&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12. Error analysis (stats + endpoint)&lt;/td&gt;
&lt;td&gt;❌ Mostly Trace status filters&lt;/td&gt;
&lt;td&gt;✅ Error stats + endpoint drill-down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13. Trace list / search&lt;/td&gt;
&lt;td&gt;✅ Service / operation / Tags / time — mature search UX&lt;/td&gt;
&lt;td&gt;✅ Charts + list, multi-dimension filters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14. Trace detail&lt;/td&gt;
&lt;td&gt;✅ Classic Waterfall + Tags + Span Logs&lt;/td&gt;
&lt;td&gt;✅ Call-order waterfall + Span attributes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15. Trace Span → logs&lt;/td&gt;
&lt;td&gt;△ Span Logs (instrumentation events) only; no OTLP app-log link&lt;/td&gt;
&lt;td&gt;✅ Top “Log analysis” + Span Logs / Logs tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16. Log list / search&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Log analysis list / search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17. Log detail&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18. Log → Trace&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Log → Trace, down to Span&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Jaeger is strong on &lt;strong&gt;pure Trace search and waterfall&lt;/strong&gt;. Most other APM surfaces (golden metrics, multi-level topology / call analysis, service flow, middleware pages, logs) are absent. DataBuff leads there and on &lt;strong&gt;Span↔log&lt;/strong&gt; linkage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alerting&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;Capability&lt;/th&gt;
&lt;th&gt;Jaeger v1.76.0&lt;/th&gt;
&lt;th&gt;DataBuff v0.1.4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;How rules are configured&lt;/td&gt;
&lt;td&gt;❌ No built-in alerting product&lt;/td&gt;
&lt;td&gt;✅ Alert center in product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Threshold alerts&lt;/td&gt;
&lt;td&gt;❌ Needs Prometheus / Alertmanager, etc.&lt;/td&gt;
&lt;td&gt;✅ Managed in platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart alerts&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Linked with APM metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alert event list&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Non-empty in this lab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alerts linked to service / middleware&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ List links back into APM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Jaeger itself does not alert; threshold / notify stacks are external. DataBuff keeps rule config, event list, and service context in one alert center.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to pick which&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;Scenario&lt;/th&gt;
&lt;th&gt;Better fit&lt;/th&gt;
&lt;th&gt;Note&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Already on OTLP, want AI / APM depth first&lt;/td&gt;
&lt;td&gt;DataBuff (side-by-side)&lt;/td&gt;
&lt;td&gt;Point ingest at DataBuff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need the seven AI capabilities&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;No Jaeger AI platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP / Skill / custom experts&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;Jaeger has no such layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;See who slows the entry response&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;Service flow + contribution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Call analysis → Trace (service / instance / endpoint)&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;No Jaeger path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slow SQL / cache / MQ pages&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;Jaeger has no middleware pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Log + Trace correlation&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;Jaeger has no log product surface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Built-in / smart alerts&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;Jaeger needs external stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lightweight Trace storage + waterfall only&lt;/td&gt;
&lt;td&gt;Jaeger / either&lt;/td&gt;
&lt;td&gt;No need to migrate for brand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Already on ES / Cassandra and Trace-only&lt;/td&gt;
&lt;td&gt;Jaeger&lt;/td&gt;
&lt;td&gt;Reuse storage; DataBuff can still OTLP side-by-side&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Boundary:&lt;/strong&gt; Deep Jaeger search workflow lock-in, or Trace-only needs → stay on Jaeger. DataBuff fits same OTLP data + AI + APM depth + alerts, side-by-side or gradual switch.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Screenshot evidence (explains the tables)
&lt;/h2&gt;

&lt;p&gt;Screenshots from the same lab (Jaeger UI &lt;code&gt;:16686&lt;/code&gt;; DataBuff v0.1.4). Captions map to capability rows. Focus on DataBuff’s AI / call analysis / dedicated pages / alerts. Jaeger’s strength is pure Trace search and waterfall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Seven AI capabilities&lt;/strong&gt; (no Jaeger equivalent UI)&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%2Fvphqr0c1q7euydapkg2a.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%2Fvphqr0c1q7euydapkg2a.png" alt="DataBuff AI home" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff AI chat home and seven capability entries (no Jaeger equivalent)&lt;/em&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%2F79qd4ay1xdmvv3u0rz55.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%2F79qd4ay1xdmvv3u0rz55.png" alt="DataBuff AI chat" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff ① See: ask about service-a calling service-b; AI reads telemetry&lt;/em&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%2Facted0ugnl4ildennwgq.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%2Facted0ugnl4ildennwgq.png" alt="DataBuff digital experts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff ② Squad: digital expert / multi-agent entries&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Services &amp;amp; topology&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%2F6w8fwmwjiou4zf9ebwrw.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%2F6w8fwmwjiou4zf9ebwrw.png" alt="Jaeger Dependencies" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jaeger Dependencies: service-a → service-b (“who connects”)&lt;/em&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%2Fdpgi5ncen2ndwmri4lzi.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%2Fdpgi5ncen2ndwmri4lzi.png" alt="DataBuff topology" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Global topology + health colors (incl. mysql / redis)&lt;/em&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%2Fja46166d2xlqbzcc2f5d.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%2Fja46166d2xlqbzcc2f5d.png" alt="DataBuff services" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Service list + golden-metric charts (Jaeger has Search dropdown only)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Call analysis + service flow&lt;/strong&gt; (matrix rows 4 / 9 / 10)&lt;/p&gt;

&lt;p&gt;Jaeger Dependencies only answers “who connects”. DataBuff goes from “who connects” to “who slows the response, then drill into Trace”.&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%2Fj23rnaa61ddbqn9lydzt.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%2Fj23rnaa61ddbqn9lydzt.png" alt="DataBuff service call analysis" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Service call analysis: service-a → service-b (drill to Trace)&lt;/em&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%2Fe7cgsd1w4p409pxfaxdu.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%2Fe7cgsd1w4p409pxfaxdu.png" alt="DataBuff endpoint call analysis" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Endpoint call analysis for &lt;code&gt;/demo/checkout&lt;/code&gt;&lt;/em&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%2Fftmitru9v0bibu5pnsn0.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%2Fftmitru9v0bibu5pnsn0.png" alt="DataBuff service flow" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Service flow: entry service-a → downstream response contribution&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trace&lt;/strong&gt; (Jaeger mature surface)&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%2Fxzy52i3nxxyh44q6i8dw.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%2Fxzy52i3nxxyh44q6i8dw.png" alt="Jaeger Search" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jaeger Search: service / operation / Tags filters&lt;/em&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%2Fmn0urmpvbz5fn59ws4ag.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%2Fmn0urmpvbz5fn59ws4ag.png" alt="Jaeger Trace list" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jaeger Trace list: service-a results + scatter&lt;/em&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%2F76s2kj7k21w5cscbmn11.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%2F76s2kj7k21w5cscbmn11.png" alt="DataBuff Trace list" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Trace list: charts + table&lt;/em&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%2F6udiu288rsrn3mg9b2mp.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%2F6udiu288rsrn3mg9b2mp.png" alt="Jaeger Trace detail" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jaeger Waterfall + Tags + Span Logs&lt;/em&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%2F6h8jqc6zj1tp7qnasb5e.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%2F6h8jqc6zj1tp7qnasb5e.png" alt="DataBuff Trace detail" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Call-order waterfall; can link to application logs&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logs&lt;/strong&gt; (matrix rows 16–18; no Jaeger equivalent)&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%2Flrzjdfaihzfi6nhnvkmn.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%2Flrzjdfaihzfi6nhnvkmn.png" alt="DataBuff logs" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Log analysis: Log → Trace down to Span&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DataBuff dedicated pages&lt;/strong&gt; (matrix rows 11 / 12)&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%2Fnxrulwv9r6xz7r7mlwim.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%2Fnxrulwv9r6xz7r7mlwim.png" alt="Database" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Database page&lt;/em&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%2Fn456mnc8amp8mhm1vsi6.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%2Fn456mnc8amp8mhm1vsi6.png" alt="Cache" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Cache page&lt;/em&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%2Foudgi6ga4gmqwmjm0k0q.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%2Foudgi6ga4gmqwmjm0k0q.png" alt="MQ" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Message queue page&lt;/em&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%2Fpe9s840u85q8dz0fitb9.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%2Fpe9s840u85q8dz0fitb9.png" alt="External" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff External service page&lt;/em&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%2Frhjsifaa7gix4jklunvn.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%2Frhjsifaa7gix4jklunvn.png" alt="API" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Endpoint analysis&lt;/em&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%2F68vbdwx1s18t6rij15n3.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%2F68vbdwx1s18t6rij15n3.png" alt="Errors" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Error analysis&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These pages are the depth after Dependencies shows “who connects” — the APM gap most worth verifying side-by-side with Jaeger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alerting&lt;/strong&gt; (no Jaeger built-in alerts)&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%2Fmdq49yruwrmjkzw84t94.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%2Fmdq49yruwrmjkzw84t94.png" alt="DataBuff alerts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Alert center; non-empty in this lab&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If this helped, give us a Star:&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;




&lt;p&gt;&lt;strong&gt;Try DataBuff&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open source · OpenTelemetry APM with AI-native troubleshooting&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live Demo: &lt;a href="https://demo.databuff.ai" rel="noopener noreferrer"&gt;https://demo.databuff.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;https://github.com/databufflabs/databuff&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full comparison: &lt;a href="https://databuff.ai/blog/en/databuff-vs-jaeger/" rel="noopener noreferrer"&gt;https://databuff.ai/blog/en/databuff-vs-jaeger/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this helped, a ❤️ or a GitHub Star is appreciated.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>apm</category>
      <category>tracing</category>
    </item>
    <item>
      <title>DataBuff vs OpenObserve: Same-Host Lab Comparison</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Thu, 23 Jul 2026 01:33:54 +0000</pubDate>
      <link>https://dev.to/databufflabs/databuff-vs-openobserve-same-host-lab-comparison-4pbg</link>
      <guid>https://dev.to/databufflabs/databuff-vs-openobserve-same-host-lab-comparison-4pbg</guid>
      <description>&lt;p&gt;Same-host lab: DataBuff (OTLP &lt;code&gt;:4318&lt;/code&gt;) and OpenObserve (OTLP HTTP &lt;code&gt;:5080/api/default&lt;/code&gt;) on the same Demo (service-a / service-b). Host: 192.168.50.140 · DataBuff v0.1.4 · OpenObserve v0.91.0-rc1. Marks: ✅ verified in this lab · △ present but limited · ❌ no equivalent. Green bold cells are clear DataBuff leads.&lt;/p&gt;

&lt;p&gt;Positioning: DataBuff = AI-native APM depth; OpenObserve = unified observability platform (Logs / Metrics / Traces / RUM), strong on log search and object-storage cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Capability matrix
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Seven AI capabilities&lt;/strong&gt; (v0.1.4: See → Squad → Inspect → Diagnose → Repair → Predict → Answer)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;OpenObserve v0.91.0-rc1&lt;/th&gt;
&lt;th&gt;DataBuff v0.1.4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;① See · natural-language questions&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Ask about services / topology / trends; AI reads telemetry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;② Squad · multi-agent collaboration&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Parallel evidence gathering; serial context preservation; reusable task orchestration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;③ Inspect · service inspection + report&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ One-shot inspection with evidence and recommended actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;④ Diagnose · bottleneck / RCA evidence&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Trace / metrics / topology evidence (not a black-box “root cause”)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑤ Repair · Ops Expert actions&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Repair under policy + human approval; dangerous-command denylist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑥ Predict · capacity / trends&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Capacity and trend analysis — from after-the-fact to ahead-of-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑦ Answer · product Q&amp;amp;A&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Answers deploy / ingest / config from docs and code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extend · MCP / Skill / custom experts&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ External MCP / Skill and custom digital experts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Largest gap: OpenObserve has no equivalent AI platform (Traces has an LLM Insights entry, not validated here as APM triage); DataBuff exposes the seven capabilities as configurable home entries with APM as AI context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APM&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;Capability&lt;/th&gt;
&lt;th&gt;OpenObserve v0.91.0-rc1&lt;/th&gt;
&lt;th&gt;DataBuff v0.1.4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Global topology&lt;/td&gt;
&lt;td&gt;❌ No service dependency topology&lt;/td&gt;
&lt;td&gt;✅ Global topology + health colors + node drill-down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Service list &amp;amp; golden metrics&lt;/td&gt;
&lt;td&gt;✅ Service Catalog (Requests / Error Rate / P99, etc.)&lt;/td&gt;
&lt;td&gt;✅ Service list + charts; same demo shows service-a / b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Service-level topology&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Dedicated service topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Service call analysis (up/downstream + Trace)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Upstream/downstream structure, latency/contribution; drill to Trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Instance golden metrics&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Instance golden-metric charts / list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Instance topology&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Dedicated instance topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Instance call analysis (up/downstream + Trace)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Per-instance up/downstream + Trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8. Endpoint topology&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Dedicated endpoint topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9. Endpoint call analysis (up/downstream + Trace)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Per-endpoint caller/callee + Trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10. Service flow (service / endpoint Trace contribution)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Response contribution from entry; service / endpoint Trace view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11. Middleware / external pages (DB / cache / MQ / external)&lt;/td&gt;
&lt;td&gt;❌ db/http visible on Span fields; no dedicated pages&lt;/td&gt;
&lt;td&gt;✅ Dedicated pages: DB / cache / MQ / external&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12. Error analysis (stats + endpoint)&lt;/td&gt;
&lt;td&gt;△ Can filter ERROR spans / logs&lt;/td&gt;
&lt;td&gt;✅ Error stats + endpoint drill-down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13. Trace list / search&lt;/td&gt;
&lt;td&gt;✅ Spans/Traces + flexible query; this lab shows service-a · GET /demo/checkout&lt;/td&gt;
&lt;td&gt;✅ Charts + list, multi-dimension filters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14. Trace detail&lt;/td&gt;
&lt;td&gt;✅ Waterfall / Flame Graph / Trace Graph&lt;/td&gt;
&lt;td&gt;✅ Call-order waterfall + Span attributes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15. Trace Span → logs&lt;/td&gt;
&lt;td&gt;✅ Trace / Span can link to logs&lt;/td&gt;
&lt;td&gt;✅ Top “Log analysis” + Span Logs / Logs tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16. Log list / search&lt;/td&gt;
&lt;td&gt;✅ Strength: SQL / full-text + histogram; hundreds of events in this lab&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17. Log detail&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18. Log → Trace&lt;/td&gt;
&lt;td&gt;✅ Log → Trace (down to Span)&lt;/td&gt;
&lt;td&gt;✅ Log → Trace, down to Span&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19. Flexible Metrics query (SQL / PromQL)&lt;/td&gt;
&lt;td&gt;✅ Metrics page: SQL / PromQL / Builder&lt;/td&gt;
&lt;td&gt;△ Internal SQL; no public PromQL entry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20. Custom dashboards&lt;/td&gt;
&lt;td&gt;✅ Dashboards can be created (list may be empty in this lab; capability present)&lt;/td&gt;
&lt;td&gt;❌ Not yet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21. Unified storage cost (object store + compression)&lt;/td&gt;
&lt;td&gt;✅ Home shows Ingested / Compressed (~96MB → 10.5MB in this lab)&lt;/td&gt;
&lt;td&gt;△ Doris columnar; not an object-storage cost story&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22. RUM&lt;/td&gt;
&lt;td&gt;✅ Built-in RUM (Real User Monitoring)&lt;/td&gt;
&lt;td&gt;❌ Not yet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;23. Pipelines&lt;/td&gt;
&lt;td&gt;✅ Realtime / Scheduled: transform / enrich / filter / route after ingest (VRL); logs→metrics, etc.&lt;/td&gt;
&lt;td&gt;❌ Not yet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24. Reports&lt;/td&gt;
&lt;td&gt;✅ Scheduled / Cached reports; timed generate &amp;amp; distribute&lt;/td&gt;
&lt;td&gt;❌ Not yet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Shared base: service list &amp;amp; golden metrics, Trace list/waterfall, logs, and Span↔log links. DataBuff leads on &lt;strong&gt;topology / service·instance·endpoint call analysis / service flow / middleware pages&lt;/strong&gt;. OpenObserve leads on &lt;strong&gt;log search &amp;amp; cost, SQL/PromQL, custom dashboards, Pipelines, Reports, unified L/M/T + RUM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alerting&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;Capability&lt;/th&gt;
&lt;th&gt;OpenObserve v0.91.0-rc1&lt;/th&gt;
&lt;th&gt;DataBuff v0.1.4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;How rules are configured&lt;/td&gt;
&lt;td&gt;✅ Alerts UI (needs Destination / Template first)&lt;/td&gt;
&lt;td&gt;✅ Alert center in product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Threshold alerts&lt;/td&gt;
&lt;td&gt;✅ Scheduled / Realtime&lt;/td&gt;
&lt;td&gt;✅ Managed in platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart alerts&lt;/td&gt;
&lt;td&gt;❌ No equivalent smart-alert product&lt;/td&gt;
&lt;td&gt;✅ Smart alerts linked with APM metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alert event list&lt;/td&gt;
&lt;td&gt;✅ Alerts UI for triggered alerts / rules&lt;/td&gt;
&lt;td&gt;✅ Alert list (severity / service / time)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alerts linked to service / middleware&lt;/td&gt;
&lt;td&gt;△ Stream-oriented alerts; APM context must be stitched manually&lt;/td&gt;
&lt;td&gt;✅ List links service / middleware back into APM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both can configure alerts in UI; difference is &lt;strong&gt;smart alerts&lt;/strong&gt; and &lt;strong&gt;alert → APM service context&lt;/strong&gt;. OpenObserve alerts lean Logs/Metrics streams; DataBuff leans APM triage loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to pick which&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;Scenario&lt;/th&gt;
&lt;th&gt;Better fit&lt;/th&gt;
&lt;th&gt;Note&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Already on OTLP; want AI / APM depth first&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;Point exporters at DataBuff; no need to migrate off OpenObserve first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need the seven AI capabilities&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;OpenObserve has no equivalent AI platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need MCP / Skill or custom digital experts&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;AI platform is extensible; OO has no such layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need global topology + health colors at a glance&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;OO has no service dependency topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need “who slowed the response” from entry service&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;Service flow + contribution; OO has no equivalent page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need service / instance / endpoint call analysis → Trace&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;Three-level call analysis all link to Trace; OO has no path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need instance golden metrics / instance topology&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;OO has no equivalent instance pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need slow SQL / cache / MQ / external service pages&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;OO mostly Span fields; no dedicated pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need dedicated error analysis&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;OO requires manual ERROR filtering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need smart alerts tied to service / middleware&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;OO alerts are stream-oriented; no smart-alert APM loop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Huge log volume; need object-storage cost control&lt;/td&gt;
&lt;td&gt;OpenObserve&lt;/td&gt;
&lt;td&gt;Compression / storage story is a strength&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need SQL / PromQL Metrics + custom dashboards&lt;/td&gt;
&lt;td&gt;OpenObserve&lt;/td&gt;
&lt;td&gt;DataBuff has no custom dashboards yet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need post-ingest transform / enrich / filter / route&lt;/td&gt;
&lt;td&gt;OpenObserve&lt;/td&gt;
&lt;td&gt;Pipelines (Realtime / Scheduled + VRL)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need scheduled / cached reports&lt;/td&gt;
&lt;td&gt;OpenObserve&lt;/td&gt;
&lt;td&gt;Reports (Scheduled / Cached)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need unified Logs + Metrics + Traces + RUM&lt;/td&gt;
&lt;td&gt;OpenObserve&lt;/td&gt;
&lt;td&gt;DataBuff focuses on APM depth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Only need the same Demo Trace waterfall&lt;/td&gt;
&lt;td&gt;Either&lt;/td&gt;
&lt;td&gt;No need to migrate for branding&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Boundary:&lt;/strong&gt; Staying on OpenObserve is reasonable when deeply tied to its log pipelines / dashboards / Pipelines / Reports / cost story. DataBuff fits OTLP + seven AI + topology / call analysis / service flow / dedicated pages / smart alerts. Dashboards, Pipelines, Reports, and large-scale log cost are not peer capabilities yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Screenshot evidence (explains the tables)
&lt;/h2&gt;

&lt;p&gt;Screenshots from the same lab (&lt;strong&gt;192.168.50.140&lt;/strong&gt;). Captions map to capability rows. Focus on DataBuff AI / topology / dedicated pages / alerts, plus OpenObserve logs / Trace / Metrics / dashboard entry points.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Seven AI capabilities&lt;/strong&gt; (no OpenObserve equivalent UI; DataBuff evidence)&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%2Fdeutzxncskccbrenbke5.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%2Fdeutzxncskccbrenbke5.png" alt="DataBuff AI home" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff AI chat home and seven capability entries: See / Squad / Inspect / Diagnose / Repair / Predict / Answer&lt;/em&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%2Fq3rdonfiu9w55w65f2wl.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%2Fq3rdonfiu9w55w65f2wl.png" alt="DataBuff AI chat" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff ① See: real question on service-a checkout / service-b; AI reads telemetry&lt;/em&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%2F5i2xgsm1vdmrdbjovs9y.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%2F5i2xgsm1vdmrdbjovs9y.png" alt="DataBuff digital experts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff ② Squad: digital expert / multi-agent entries (no OpenObserve equivalent)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview &amp;amp; data plane&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%2Fbw681ddmvu8jglxywzpc.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%2Fbw681ddmvu8jglxywzpc.png" alt="OpenObserve Home" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Home: Streams≈38 · Events≈205K · Ingested 96MB → Compressed 10.5MB (matrix row 21)&lt;/em&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%2Fj366osxt75ierkv4br68.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%2Fj366osxt75ierkv4br68.png" alt="OpenObserve Streams" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Streams: unified Logs / Metrics / Traces data plane&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Services &amp;amp; topology&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%2Fz727z6czcfm72p1o1bki.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%2Fz727z6czcfm72p1o1bki.png" alt="DataBuff services" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Service list + golden-metric charts (peers with OO Service Catalog)&lt;/em&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%2Fmj4sd9ei74yzw4neryv4.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%2Fmj4sd9ei74yzw4neryv4.png" alt="DataBuff topology" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Global topology + health colors (mysql can show red); OpenObserve has no topology view&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Service / endpoint call analysis + service flow&lt;/strong&gt; (matrix rows 4 / 9 / 10)&lt;/p&gt;

&lt;p&gt;OpenObserve can list Trace / Span, but &lt;strong&gt;has no&lt;/strong&gt; service / instance / endpoint call analysis, and &lt;strong&gt;no&lt;/strong&gt; service-flow contribution view. DataBuff goes from “who connects” to “who slows, then into Trace”.&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%2Fnsovwobexm78nxjfub70.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%2Fnsovwobexm78nxjfub70.png" alt="DataBuff service call analysis" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Service call analysis: service-a → service-b (drill to Trace)&lt;/em&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%2F4tv973t9zu1jsl9crg20.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%2F4tv973t9zu1jsl9crg20.png" alt="DataBuff endpoint call analysis" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Endpoint call analysis for &lt;code&gt;/demo/checkout&lt;/code&gt;: volume / latency / error rate&lt;/em&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%2Fuaursxoligmfqkciwcf6.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%2Fuaursxoligmfqkciwcf6.png" alt="DataBuff service flow" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Service flow: entry service-a → downstream response contribution; no OpenObserve equivalent&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trace&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%2Fexzgtg2kkkzfjwkb7twe.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%2Fexzgtg2kkkzfjwkb7twe.png" alt="OpenObserve Trace list" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Traces: service-a · GET /demo/checkout · 240ms · 13 Spans&lt;/em&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%2Fypbk176sntuipr0fs12b.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%2Fypbk176sntuipr0fs12b.png" alt="DataBuff Trace list" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Trace list: charts + table&lt;/em&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%2F5nq8wdfkwam2wnkm1904.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%2F5nq8wdfkwam2wnkm1904.png" alt="OpenObserve Trace detail" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Trace Waterfall: service-a → service-b · includes SQL / Dubbo Spans&lt;/em&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%2Fxlwoey37d7swt2hbcoqd.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%2Fxlwoey37d7swt2hbcoqd.png" alt="DataBuff Trace detail" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Call-order waterfall + Span attributes; can link to logs in-product&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log / Metric&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%2Ftkf7mwfsxojk1wbcbjqf.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%2Ftkf7mwfsxojk1wbcbjqf.png" alt="OpenObserve Logs" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Logs: histogram + event table; Trace / Span correlation (matrix rows 15–18)&lt;/em&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%2Fgclvuu58xykakp9gyb03.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%2Fgclvuu58xykakp9gyb03.png" alt="DataBuff logs" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Log analysis: Log → Trace down to Span&lt;/em&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%2Fyeabz82edvptgyw85z9k.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%2Fyeabz82edvptgyw85z9k.png" alt="OpenObserve Metrics" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Metrics: SQL / PromQL / Builder (matrix row 19; DataBuff has no public PromQL)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboards / Pipelines / Reports&lt;/strong&gt; (matrix rows 20 / 23 / 24; OpenObserve strengths)&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%2F6gddzmpi2909zwfvfjmw.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%2F6gddzmpi2909zwfvfjmw.png" alt="OpenObserve Dashboards" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Dashboards: create custom boards&lt;/em&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%2F28r1aexo5avv8y2hpc0h.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%2F28r1aexo5avv8y2hpc0h.png" alt="OpenObserve Pipelines" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Pipelines: Realtime / Scheduled data pipelines&lt;/em&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%2F6tl7txuvn004ie8go06w.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%2F6tl7txuvn004ie8go06w.png" alt="OpenObserve Reports" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Reports: Scheduled / Cached&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DataBuff dedicated pages&lt;/strong&gt; (matrix rows 11 / 12; no OO equivalents)&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%2F3ajo8mz0m8o4g6trbs5w.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%2F3ajo8mz0m8o4g6trbs5w.png" alt="Database" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Database page&lt;/em&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%2Fmdrunstztdrysrkpsnng.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%2Fmdrunstztdrysrkpsnng.png" alt="Cache" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Cache page&lt;/em&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%2Fjywsunxc57gru34y12h1.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%2Fjywsunxc57gru34y12h1.png" alt="MQ" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Message queue page&lt;/em&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%2Fh8ll2yh21a87cj6g8g03.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%2Fh8ll2yh21a87cj6g8g03.png" alt="External" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff External service page&lt;/em&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%2F1nf09zbhn21ulg5owxch.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%2F1nf09zbhn21ulg5owxch.png" alt="API" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Endpoint analysis list&lt;/em&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%2F3916au7syzod1ol4pjwh.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%2F3916au7syzod1ol4pjwh.png" alt="Errors" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Error analysis (stats + endpoint)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These pages are depth beyond “middleware Spans in Trace” — the APM differences most worth validating against OpenObserve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alerting&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%2Fst1bcir29yr5le961lxb.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%2Fst1bcir29yr5le961lxb.png" alt="OpenObserve Alerts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OpenObserve Alerts UI: configure and view rules / events&lt;/em&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%2F0hheb5ow4116rd1pdfnw.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%2F0hheb5ow4116rd1pdfnw.png" alt="DataBuff alerts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Alert center: rules in-product; list links service context; non-empty in this lab&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If this helped, give us a Star:&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;

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




&lt;p&gt;&lt;strong&gt;Try DataBuff&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open source · OpenTelemetry APM with AI-native troubleshooting&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live Demo: &lt;a href="https://demo.databuff.ai" rel="noopener noreferrer"&gt;https://demo.databuff.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;https://github.com/databufflabs/databuff&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full comparison: &lt;a href="https://databuff.ai/blog/en/databuff-vs-openobserve/" rel="noopener noreferrer"&gt;https://databuff.ai/blog/en/databuff-vs-openobserve/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this helped, a ❤️ or a GitHub Star is appreciated.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>apm</category>
      <category>observability</category>
    </item>
    <item>
      <title>DataBuff vs SigNoz: Same-Host Lab Comparison</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Thu, 23 Jul 2026 01:33:19 +0000</pubDate>
      <link>https://dev.to/databufflabs/databuff-vs-signoz-same-host-lab-comparison-4ofl</link>
      <guid>https://dev.to/databufflabs/databuff-vs-signoz-same-host-lab-comparison-4ofl</guid>
      <description>&lt;p&gt;Same-host lab: DataBuff (OTLP &lt;code&gt;:4318&lt;/code&gt;) and SigNoz (OTLP &lt;code&gt;:24318&lt;/code&gt;) side by side on the same Demo (service-a / service-b). Host: 192.168.50.140 · DataBuff v0.1.4 · SigNoz v0.133.0. Marks: ✅ verified in this lab · △ present but limited · ❌ no equivalent. Green bold cells are clear DataBuff leads.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Capability matrices
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Seven AI capabilities&lt;/strong&gt; (v0.1.4: See → Squad → Inspect → Diagnose → Repair → Predict → Answer)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;SigNoz v0.133.0&lt;/th&gt;
&lt;th&gt;DataBuff v0.1.4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;① See · natural-language questions&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Ask about services / topology / trends; AI reads telemetry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;② Squad · multi-agent collaboration&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Parallel evidence gathering; reusable task orchestration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;③ Inspect · service inspection + report&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ One-shot inspection with evidence and actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;④ Diagnose · bottleneck / RCA evidence&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Trace / metrics / topology evidence (not a black-box “root cause”)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑤ Repair · Ops Expert actions&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Repair under policy + human approval; dangerous-command denylist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑥ Predict · capacity / trends&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Capacity and trend analysis — from after-the-fact to ahead-of-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑦ Answer · product Q&amp;amp;A&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Answers deploy / ingest / config from docs and code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extend · MCP / Skill / custom experts&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ External MCP / Skill and custom digital experts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Largest gap: SigNoz has no equivalent AI platform; DataBuff exposes the seven capabilities as configurable home entries with APM as AI context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APM&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;Capability&lt;/th&gt;
&lt;th&gt;SigNoz v0.133.0&lt;/th&gt;
&lt;th&gt;DataBuff v0.1.4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Global topology&lt;/td&gt;
&lt;td&gt;✅ Service Map (incl. middleware nodes)&lt;/td&gt;
&lt;td&gt;✅ Topology + health colors + drill-down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Service list &amp;amp; golden metrics&lt;/td&gt;
&lt;td&gt;✅ Services (P99 / Error / OPS)&lt;/td&gt;
&lt;td&gt;✅ Service list + charts; same demo shows service-a / b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Service-level topology&lt;/td&gt;
&lt;td&gt;△ Via Service Map only; no dedicated page&lt;/td&gt;
&lt;td&gt;✅ Dedicated service topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Service call analysis (up/downstream + Trace)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Upstream/downstream structure, latency/contribution; drill to Trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Instance golden metrics&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Instance golden-metric charts / list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Instance topology&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Dedicated instance topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Instance call analysis (up/downstream + Trace)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Per-instance up/downstream + Trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8. Endpoint topology&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Dedicated endpoint topology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9. Endpoint call analysis (up/downstream + Trace)&lt;/td&gt;
&lt;td&gt;❌ Mostly Traces filters&lt;/td&gt;
&lt;td&gt;✅ Per-endpoint caller/callee + Trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10. Service flow (service / endpoint Trace contribution)&lt;/td&gt;
&lt;td&gt;❌ Service Map answers “who connects”&lt;/td&gt;
&lt;td&gt;✅ Response contribution from entry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11. Middleware / external pages (DB / cache / MQ / external)&lt;/td&gt;
&lt;td&gt;❌ Nodes only, no dedicated depth&lt;/td&gt;
&lt;td&gt;✅ Dedicated pages: DB / cache / MQ / external&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12. Error analysis (stats + endpoint)&lt;/td&gt;
&lt;td&gt;❌ Mostly Traces filters&lt;/td&gt;
&lt;td&gt;✅ Error stats + endpoint drill-down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13. Trace list / search&lt;/td&gt;
&lt;td&gt;✅ Traces Explorer&lt;/td&gt;
&lt;td&gt;✅ Charts + list, multi-dimension filters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14. Trace detail&lt;/td&gt;
&lt;td&gt;✅ Span timeline / attributes&lt;/td&gt;
&lt;td&gt;✅ Call-order waterfall + Span attributes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15. Trace Span → logs&lt;/td&gt;
&lt;td&gt;✅ From Trace detail&lt;/td&gt;
&lt;td&gt;✅ Top “Log analysis” + Span Logs / Logs tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16. Log list / search&lt;/td&gt;
&lt;td&gt;✅ Logs Explorer&lt;/td&gt;
&lt;td&gt;✅ Log analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17. Log detail&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18. Log → Trace&lt;/td&gt;
&lt;td&gt;✅ Log → Trace&lt;/td&gt;
&lt;td&gt;✅ Log → Trace, down to Span&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19. Custom dashboards&lt;/td&gt;
&lt;td&gt;✅ Dashboards V2 (Perses / PromQL)&lt;/td&gt;
&lt;td&gt;❌ Not yet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Basics (incl. Span↔logs) exist on both sides; DataBuff leads on call analysis, service flow, dedicated pages, error depth, and Log→Trace down to Span. SigNoz’s clear strength is &lt;strong&gt;custom dashboards&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alerting&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;Capability&lt;/th&gt;
&lt;th&gt;SigNoz v0.133.0&lt;/th&gt;
&lt;th&gt;DataBuff v0.1.4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;How rules are configured&lt;/td&gt;
&lt;td&gt;✅ Alert Rules UI&lt;/td&gt;
&lt;td&gt;✅ Alert center&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Threshold alerts&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ Managed in platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Period-over-period (WoW/MoM) alerts&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Period-over-period entry linked with APM metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alert event list&lt;/td&gt;
&lt;td&gt;✅ Triggered Alerts; firing in this lab&lt;/td&gt;
&lt;td&gt;✅ Non-empty in this lab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alerts linked to service / middleware&lt;/td&gt;
&lt;td&gt;△ Notifications; stitch APM yourself&lt;/td&gt;
&lt;td&gt;✅ List links back into APM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both sides have alerting; this lab has a SigNoz threshold rule firing. Gaps remain on period-over-period alerts and alerts that carry service / middleware APM context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to pick which&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;Scenario&lt;/th&gt;
&lt;th&gt;Better fit&lt;/th&gt;
&lt;th&gt;Note&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Same OTel data, want AI / APM pages first&lt;/td&gt;
&lt;td&gt;DataBuff (side-by-side)&lt;/td&gt;
&lt;td&gt;Point OTLP at DataBuff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need the seven AI capabilities&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;No SigNoz AI platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP / Skill / custom experts&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;No such layer in SigNoz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;See who slows the entry response&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;Service flow + contribution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Call analysis → Trace (service / instance / endpoint)&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;No SigNoz path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slow SQL / cache / MQ pages&lt;/td&gt;
&lt;td&gt;DataBuff&lt;/td&gt;
&lt;td&gt;SigNoz mostly map nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom dashboards / PromQL boards&lt;/td&gt;
&lt;td&gt;SigNoz&lt;/td&gt;
&lt;td&gt;Dashboards V2; DataBuff not yet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mature Trace / Logs Explorer only&lt;/td&gt;
&lt;td&gt;Either / lean SigNoz&lt;/td&gt;
&lt;td&gt;No need to migrate for brand&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Boundary:&lt;/strong&gt; Deep SigNoz Dashboard / PromQL workflows → stay on SigNoz. DataBuff fits same OTel data + AI + APM depth, side-by-side or gradual switch.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Screenshot evidence (explains the tables)
&lt;/h2&gt;

&lt;p&gt;Screenshots from &lt;strong&gt;192.168.50.140&lt;/strong&gt;. Captions map to capability rows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Seven AI capabilities&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%2F0xr4zipcjxy9oo06yjix.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%2F0xr4zipcjxy9oo06yjix.png" alt="DataBuff AI home with seven capabilities" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff AI chat home and seven capability entries (no SigNoz equivalent)&lt;/em&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%2Fy8tmq89allbcxvnvbjjh.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%2Fy8tmq89allbcxvnvbjjh.png" alt="DataBuff AI chat" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff ① See: natural language over telemetry&lt;/em&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%2F91gc2wk4wsgc939d0gvu.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%2F91gc2wk4wsgc939d0gvu.png" alt="DataBuff digital experts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff ② Squad: digital expert entries&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Services &amp;amp; topology&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%2Fe6eazsos9y1zaovc44aw.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%2Fe6eazsos9y1zaovc44aw.png" alt="SigNoz Services" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SigNoz Services: application P99 / Error / OPS&lt;/em&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%2Fko8eog1ivsq3cu7z8g3g.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%2Fko8eog1ivsq3cu7z8g3g.png" alt="DataBuff services" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Service list + golden-metric charts&lt;/em&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%2Fgduklzw8vwx8eso0v1js.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%2Fgduklzw8vwx8eso0v1js.png" alt="SigNoz Service Map" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SigNoz Service Map: middleware nodes appear here too&lt;/em&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%2Fsg1o62t3xjw47tprbm1i.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%2Fsg1o62t3xjw47tprbm1i.png" alt="DataBuff topology" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Global topology + health colors; drill into dedicated pages&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fact check:&lt;/strong&gt; SigNoz Service Map also draws middleware nodes. The gap is dedicated-page depth plus call analysis / service flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Call analysis &amp;amp; service flow&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%2Fmiqj1pveau6wjprw540n.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%2Fmiqj1pveau6wjprw540n.png" alt="Service call analysis" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Service call analysis → Trace&lt;/em&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%2Fg1g3n9ub0e4kw1p4j5ko.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%2Fg1g3n9ub0e4kw1p4j5ko.png" alt="Endpoint call analysis" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Endpoint call analysis (no SigNoz page)&lt;/em&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%2Fjgbt8y6cpjjif6zwr06f.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%2Fjgbt8y6cpjjif6zwr06f.png" alt="Service flow" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Service flow: response contribution from entry&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trace&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%2F11lhjlznogx9okl0v6ac.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%2F11lhjlznogx9okl0v6ac.png" alt="SigNoz Traces" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SigNoz Traces Explorer&lt;/em&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%2Fulti6u9gb7jbgvlccf61.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%2Fulti6u9gb7jbgvlccf61.png" alt="DataBuff Traces" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Tracing: charts + list&lt;/em&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%2F90rn6s0orh7rjjgxq2gc.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%2F90rn6s0orh7rjjgxq2gc.png" alt="SigNoz Trace detail" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SigNoz Trace detail: Span timeline&lt;/em&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%2Ff4mnp4gxb5acipkrzreh.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%2Ff4mnp4gxb5acipkrzreh.png" alt="DataBuff Trace detail" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Trace→Log productized path&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log&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%2F18bnyl4hu1lyd6yizbk4.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%2F18bnyl4hu1lyd6yizbk4.png" alt="SigNoz Logs" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SigNoz Logs Explorer&lt;/em&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%2Frcoe42gozepkkhhla8e1.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%2Frcoe42gozepkkhhla8e1.png" alt="DataBuff logs" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Log→Trace, down to Span&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboards&lt;/strong&gt; (SigNoz strength)&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%2Fyuxzl203urqbr50tyvqj.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%2Fyuxzl203urqbr50tyvqj.png" alt="SigNoz Dashboards" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SigNoz Dashboards V2; DataBuff has no peer yet&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DataBuff dedicated pages&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%2Fvo2fxn3ccvkltwk78xai.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%2Fvo2fxn3ccvkltwk78xai.png" alt="Database" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Database page&lt;/em&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%2Fk2fdqkc2qfmrymfje7k0.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%2Fk2fdqkc2qfmrymfje7k0.png" alt="Cache" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Cache page&lt;/em&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%2Fpkdsvlpj2c5lbttkmv06.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%2Fpkdsvlpj2c5lbttkmv06.png" alt="MQ" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Message queue page&lt;/em&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%2Fec7s2eacwruty0l5az4e.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%2Fec7s2eacwruty0l5az4e.png" alt="External" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff External service page&lt;/em&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%2Fermmjfllksm8ktsfzpnq.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%2Fermmjfllksm8ktsfzpnq.png" alt="API" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Endpoint analysis&lt;/em&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%2Fal1diwe0bedkcqd4wblo.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%2Fal1diwe0bedkcqd4wblo.png" alt="Errors" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Error analysis&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alerting&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%2F32f5vfnhu258n9vktdul.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%2F32f5vfnhu258n9vktdul.png" alt="SigNoz Alerts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;SigNoz Triggered Alerts: demo-calls-threshold firing&lt;/em&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%2Finnuf0ovfaet73rwo2ka.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%2Finnuf0ovfaet73rwo2ka.png" alt="DataBuff alerts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DataBuff Alert center; non-empty in this lab&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If this helped, give us a Star:&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;




&lt;p&gt;&lt;strong&gt;Try DataBuff&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open source · OpenTelemetry APM with AI-native troubleshooting&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live Demo: &lt;a href="https://demo.databuff.ai" rel="noopener noreferrer"&gt;https://demo.databuff.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/databufflabs/databuff" rel="noopener noreferrer"&gt;https://github.com/databufflabs/databuff&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full comparison: &lt;a href="https://databuff.ai/blog/en/databuff-vs-signoz/" rel="noopener noreferrer"&gt;https://databuff.ai/blog/en/databuff-vs-signoz/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this helped, a ❤️ or a GitHub Star is appreciated.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>apm</category>
      <category>opentelemetry</category>
    </item>
    <item>
      <title>Open-Source AIOps, Finally Someone Built It</title>
      <dc:creator>databufflabs</dc:creator>
      <pubDate>Mon, 20 Jul 2026 02:40:45 +0000</pubDate>
      <link>https://dev.to/databufflabs/open-source-aiops-finally-someone-built-it-55l7</link>
      <guid>https://dev.to/databufflabs/open-source-aiops-finally-someone-built-it-55l7</guid>
      <description>&lt;p&gt;Gartner coined &lt;em&gt;AIOps&lt;/em&gt; back in 2016. For years the gut feeling was “vaporware”: commercial tools are expensive, closed, and black-box; in open source you get alert-noise scripts or log analyzers — nothing that truly wires AI into live monitoring data and can &lt;em&gt;fix&lt;/em&gt; problems. The moment I got DataBuff running, my first thought was — &lt;strong&gt;someone finally built it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This post skips architecture slides and protocol names. I walk through seven scenarios I ran hands-on in a test environment. Each starts with one sentence; the AI pulls data, draws conclusions, and in some cases SSHs in to repair. After these, AIOps stops being a deck concept and becomes something you can use.&lt;/p&gt;

&lt;p&gt;What it is: open source, AI-native, OpenTelemetry APM&lt;/p&gt;

&lt;p&gt;One-line positioning: DataBuff is an &lt;strong&gt;open-source, AI-native APM built on OpenTelemetry&lt;/strong&gt;. Plain English — it is a monitoring platform for metrics, traces, and logs; unlike classic APM, AI is not a bolt-on chat box on the side. It lives on the data: you ask a question, it reads live metrics, follows traces, queries logs, and returns evidence-backed answers instead of dumping charts on you.&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%2Fxm0z2tjhj2oh5l72mjz7.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%2Fxm0z2tjhj2oh5l72mjz7.jpg" alt="DataBuff minimal architecture" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Minimal stack: ingest + storage + AI platform — one command to start&lt;/p&gt;

&lt;p&gt;The gap is “AI-native.” Many products are “APM + chat widget” where the model just tells you to look at a dashboard. DataBuff’s AI reads data, calls tools, and can reach hosts — the seven scenarios below are proof. The arc to keep in mind:&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%2Fdyt5hxtiixeuxnv0iofb.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%2Fdyt5hxtiixeuxnv0iofb.png" alt="Seven-scenario roadmap" width="772" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Glance the roadmap first, then walk each case&lt;/p&gt;

&lt;p&gt;Scenario 1 · Ask your system in plain language&lt;/p&gt;

&lt;p&gt;Start with the obvious. To find slow services you used to open Grafana, memorize PromQL, write queries, read charts, and sort yourself. In DataBuff I asked in plain English: &lt;strong&gt;“Which service was slowest in the last hour? List the top 3.”&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%2Fpncxgcsomrke3n9h6zd2.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%2Fpncxgcsomrke3n9h6zd2.png" alt="Natural language slowest services" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One question — AI queried 20 services and returned a ranked table with latency and error rate&lt;/p&gt;

&lt;p&gt;It did not flash a chart and leave me guessing. It actually scanned 20 services, computed average latency, and returned a table: slowest &lt;strong&gt;service-a at 240ms avg&lt;/strong&gt; , then service-b 70ms, skyWalking-service-a 35.7ms, with volume and error rate. Twenty-three seconds, zero query language.&lt;/p&gt;

&lt;p&gt;For newcomers, that is what AIOps should feel like — &lt;strong&gt;no query DSL, no metric math — just ask&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Takeaway: natural-language Q&amp;amp;A is not “search.” The model reads intent, hits live data, and answers with evidence. The more casual the question, the more concrete the reply.&lt;/p&gt;

&lt;p&gt;Scenario 2 · Multi-agent: not one bot, a squad&lt;/p&gt;

&lt;p&gt;If scenario one felt “nice,” this one reframes the product — &lt;strong&gt;DataBuff is not a single AI, it is a squad&lt;/strong&gt;. The experts on the roster: &lt;strong&gt;AI Brain, Data Query, Intelligent Inspection, Ops Expert, Product Q&amp;amp;A&lt;/strong&gt;. The right pattern is not inventing fake “metrics expert / trace expert” labels — &lt;strong&gt;leave the expert picker alone, throw the hard task at AI Brain&lt;/strong&gt; , and let it dispatch real experts. I said one sentence:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Any cluster anomalies in the last hour? Run a joint diagnosis with Data Query and Intelligent Inspection: Data Query checks latency, error rate, and slow traces; Inspection runs tiered health checks; summarize into an incident report I can forward.”&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%2Fcn0m3x7e5ot0qt3fo5iz.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%2Fcn0m3x7e5ot0qt3fo5iz.png" alt="AI Brain dispatching Data Query and Inspection" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI Brain calls dispatchExpertTask twice — Data Query (data) and Inspection in parallel&lt;/p&gt;

&lt;p&gt;What followed is not typical APM. AI Brain said it would dispatch two tasks, then &lt;strong&gt;successfully called &lt;code&gt;dispatchExpertTask&lt;/code&gt; twice&lt;/strong&gt; — latency/errors/slow traces to &lt;strong&gt;Data Query&lt;/strong&gt; , tiered health checks to &lt;strong&gt;Intelligent Inspection&lt;/strong&gt;. Both worked in parallel. Inspection reported JVM/GC/thread metrics healthy across 34 services; Data Query found real issues: Elasticsearch index 404 (~144k failures) and MySQL-side InsufficientStockException. AI Brain merged both into a forwardable report.&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%2F97r27xvn2r9yk20be2o5.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%2F97r27xvn2r9yk20be2o5.png" alt="Combined incident report" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;P0 ES index down + P1 inventory business errors; Inspection confirms service health; HTML report ready to share&lt;/p&gt;

&lt;p&gt;The report: &lt;strong&gt;P0 Elasticsearch indexes unavailable&lt;/strong&gt; (my_index_1 / my_index_2 all 404, ~144k failures); &lt;strong&gt;P1 MySQL stock business errors&lt;/strong&gt; (InsufficientStockException on service-b — business stock-out, not infra down); plus &lt;strong&gt;service self-health confirmed by Inspection&lt;/strong&gt;. Full HTML you can preview or paste into an incident channel.&lt;/p&gt;

&lt;p&gt;Takeaway: the “A” in AIOps is not a chat box — it is &lt;strong&gt;AI Brain splitting work across real experts, then synthesizing&lt;/strong&gt;. One human sentence; a squad that can name and dispatch.&lt;/p&gt;

&lt;p&gt;Scenario 3 · Inspection: one sentence → shareable HTML report&lt;/p&gt;

&lt;p&gt;Runbooks hate manual inspection — check metrics, thresholds, stitch a report for half a day. In DataBuff I switched to Intelligent Inspection and asked: &lt;strong&gt;“Run an inspection on service-b and output a full HTML report.”&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%2Frvz78u63vbdcwwn8rtwe.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%2Frvz78u63vbdcwwn8rtwe.png" alt="Trigger service-b inspection" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Intelligent Inspection on service-b — full HTML report requested&lt;/p&gt;

&lt;p&gt;Eighty-one seconds, twenty-two steps — not a chat essay but formatted HTML. Overview: entry health 98, downstream MySQL 60, Redis 100, zero active alerts. &lt;strong&gt;Entry looks fine&lt;/strong&gt; (~4 req/min, 0% errors, ~70ms avg), but error logs expose “false green” — 60 ERROR lines in 30 minutes, all InsufficientStockException:&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%2Fo0bzzvjgo66lk7iu3r3v.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%2Fo0bzzvjgo66lk7iu3r3v.png" alt="HTML report overview and error logs" width="800" height="1026"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Top of report: health cards + entry metrics + errors (0% HTTP errors vs InsufficientStockException)&lt;/p&gt;

&lt;p&gt;Further down: evidence chain — downstream &lt;code&gt;[mysql]demo_apm&lt;/code&gt; at 50% errors, traces show findInventory → stock query throwing; graded conclusion P0 system OK, &lt;strong&gt;P1 partial business impact&lt;/strong&gt; , with fixes — repair stock data, alert on this business exception so HTTP 200 does not hide it. File at &lt;code&gt;outputs/service-b-health-report.html&lt;/code&gt;, preview in-chat.&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%2F1p6b8lwdckp71hg47ttg.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%2F1p6b8lwdckp71hg47ttg.png" alt="HTML report downstream and conclusion" width="800" height="1026"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bottom of report: dependencies, trace evidence, graded conclusion and actions&lt;/p&gt;

&lt;p&gt;Inspection should end in &lt;strong&gt;an HTML report you can open and forward&lt;/strong&gt; — green at the edge, red underneath, spelled out.&lt;/p&gt;

&lt;p&gt;Scenario 4 · Root cause: one sentence with evidence&lt;/p&gt;

&lt;p&gt;Incident triage is experience-heavy — charts, time alignment, hand-written PromQL, manual evidence chains. I asked bluntly: &lt;strong&gt;“Where is the bottleneck for service-a in the last hour — app, database, or downstream?”&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%2Fzmr5waxmguun8uidaiqy.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%2Fzmr5waxmguun8uidaiqy.png" alt="RCA topology and outbound latency table" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data Query pulls topology and ranks seven downstream calls by latency share&lt;/p&gt;

&lt;p&gt;It delivered. Time range set, service-a topology — seven downstreams — then a table of call count, avg latency, and share: service-b HTTP 100ms and RPC 80ms on top; MySQL 20ms, ES 18ms, Redis 13ms, Kafka 8ms, remote payment 7ms all normal.&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%2Fkwowo4iewzefv5gicrts.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%2Fkwowo4iewzefv5gicrts.png" alt="RCA conclusion service-b bottleneck" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bottleneck: downstream service-b (73.2% of outbound time); app and other deps cleared&lt;/p&gt;

&lt;p&gt;One-line conclusion: &lt;strong&gt;bottleneck is downstream service-b&lt;/strong&gt; — HTTP 100ms + RPC 80ms = 180ms per request, 73.2% of outbound time. It also listed who is &lt;em&gt;not&lt;/em&gt; at fault — service-a 120 requests 0 errors 0 alerts, MySQL/ES/Redis/Kafka/remote payment all normal — then next steps on service-b HTTP/RPC for slow calls or thread blocking.&lt;/p&gt;

&lt;p&gt;Takeaway: RCA here is not “here is a trend chart” — it is ranked downstream latency, attributed share, and a sentence you can paste into an incident doc.&lt;/p&gt;

&lt;p&gt;Scenario 5 · Ops Expert: don’t just look — fix it&lt;/p&gt;

&lt;p&gt;The first four scenarios are read-only intelligence. The next step for AIOps is hands-on — &lt;strong&gt;Ops Expert SSHs in, investigates, changes config, and repairs&lt;/strong&gt;. Most tools stop at “here is what broke.”&lt;/p&gt;

&lt;p&gt;Real case: demo container ai-apm-demo stuck in Restarting. I said: &lt;strong&gt;“Container keeps restarting — fix it.”&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%2F2zo0s61q27x0ptn9re7r.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%2F2zo0s61q27x0ptn9re7r.png" alt="Ops Expert restart prompt" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Plain-language request: container keeps restarting&lt;/p&gt;

&lt;p&gt;Ops Expert SSH’d in, ran &lt;code&gt;docker logs&lt;/code&gt;, &lt;code&gt;docker inspect&lt;/code&gt;, &lt;code&gt;free -m&lt;/code&gt;, found OOM kill (137) from too-low memory limit, applied the fix, restarted the container.&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%2Ft16xrql5gffkc816xtek.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%2Ft16xrql5gffkc816xtek.png" alt="Ops Expert SSH investigation" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On-host investigation via docker logs / inspect / free -m&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%2F5aknvo8kwu6bls1yy55x.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%2F5aknvo8kwu6bls1yy55x.png" alt="Ops Expert fix conclusion" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OOM from memory cap — parameter updated, docker ps healthy again&lt;/p&gt;

&lt;p&gt;After &lt;code&gt;docker ps&lt;/code&gt;, the container stayed up. &lt;strong&gt;Other AIOps tell you what broke; this one helped fix it.&lt;/strong&gt; That is the line between “see” and “repair” in open-source AIOps.&lt;/p&gt;

&lt;p&gt;Ops Expert does not only suggest commands — it investigates, concludes, and proposes the fix. DataBuff closes the loop.&lt;/p&gt;

&lt;p&gt;Scenario 6 · Capacity: from reactive firefighting to foresight&lt;/p&gt;

&lt;p&gt;Everything so far is after failure. Higher-level AIOps judges capacity before you scale. I asked: &lt;strong&gt;“This Redis averages 366ms — capacity bottleneck or not? Should we scale? Planning advice.”&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%2F4ptuanfs8siz5awy5u5q.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%2F4ptuanfs8siz5awy5u5q.png" alt="Redis capacity health analysis" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Topology clarifies which Redis instance matters; capacity vs slow-operation guidance&lt;/p&gt;

&lt;p&gt;First it clarified topology — &lt;strong&gt;service-a actually depends on [redis]redis:6379 (154 calls/hr, 13ms, healthy)&lt;/strong&gt; ; the 366ms [redis]redis.test:6379 is not on service-a’s path. Easy to mix up under pressure.&lt;/p&gt;

&lt;p&gt;On the slow instance: 352,807 calls/hour, ~98 QPS, 366ms avg. It did not say “scale because slow” — &lt;strong&gt;98 QPS is far below what a single Redis can take; the bottleneck is likely operations&lt;/strong&gt; (big keys, blocking commands like KEYS / wide SMEMBERS), with Top 3 causes and &lt;code&gt;SLOWLOG GET&lt;/code&gt; / &lt;code&gt;redis-cli --bigkeys&lt;/code&gt;. Advice: &lt;strong&gt;do not scale blindly — find the slow command first&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Good capacity analysis separates “under-provisioned” from “misused” — only the former deserves more machines.&lt;/p&gt;

&lt;p&gt;Scenario 7 · Product Q&amp;amp;A: open source with built-in support&lt;/p&gt;

&lt;p&gt;Hardest part of open source: “how do I configure this?” — docs, issues, waiting. DataBuff ships a Q&amp;amp;A expert. I asked the classic newbie question: &lt;strong&gt;“How do I wire the OpenTelemetry SDK? Where do I set alert thresholds? Step-by-step paths.”&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%2Fjt8j0m0eq8kkv0hnzs49.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%2Fjt8j0m0eq8kkv0hnzs49.png" alt="Q&amp;amp;A expert OTLP and alerts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Answers from product docs: OTLP ports and alert menu paths&lt;/p&gt;

&lt;p&gt;Not a generic tutorial — it read &lt;em&gt;this&lt;/em&gt; product’s docs: OTLP ingest, &lt;strong&gt;gRPC 4317 / HTTP 4318&lt;/strong&gt; , point any SDK exporter at Ingest for traces, metrics, and logs without a separate agent.&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%2Fuw7867iwnqc0zi168kfx.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%2Fuw7867iwnqc0zi168kfx.png" alt="OTel SDK config examples" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Env vars + Spring Boot javaagent one-liner + Python doc paths&lt;/p&gt;

&lt;p&gt;It also pointed to language quick starts: Spring Boot with &lt;code&gt;opentelemetry-javaagent.jar&lt;/code&gt;, one &lt;code&gt;java -javaagent:...&lt;/code&gt; for zero-code instrumentation; Python OTLP docs too. Alerts under &lt;strong&gt;Configuration → Alerting → Detection rules → New rule&lt;/strong&gt; — pick object, metric, threshold, severity; evaluates every minute on the last five minutes; plus convergence and silence policies.&lt;/p&gt;

&lt;p&gt;Open source’s gap is often “someone to ask.” DataBuff embeds Q&amp;amp;A that reads its own docs — better than a random search result.&lt;/p&gt;

&lt;p&gt;Worth saying: the UI is a solid APM on its own&lt;/p&gt;

&lt;p&gt;DataBuff is not chat-only. Under the hood you get global topology, services, service map, databases, queues, caches, external deps — &lt;strong&gt;full-path drill-down&lt;/strong&gt; from the big graph to metrics to a single trace. AI reads; the UI lets you verify.&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%2F08cr3cu179uopbph7ell.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%2F08cr3cu179uopbph7ell.jpg" alt="Global topology" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Global topology — services and dependencies at a glance&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%2F4zjmd3ngdvvvbpxv5g6l.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%2F4zjmd3ngdvvvbpxv5g6l.jpg" alt="Service health overview" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Service list — health status in one scan&lt;/p&gt;

&lt;p&gt;Will you actually run it?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yes — quickly.&lt;/strong&gt; One curl, three components, minimal deps. Open the Web UI, add an API key, start asking.&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%2Fyjcsojlab3xm8lz6gcvf.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%2Fyjcsojlab3xm8lz6gcvf.png" alt="One-command install success" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One command — three components up&lt;/p&gt;

&lt;p&gt;AIOps should not be a luxury for a few big vendors — &lt;strong&gt;any team should spin it up in five minutes&lt;/strong&gt;. DataBuff is open, self-hostable, data stays yours, code is inspectable, built on OpenTelemetry so most SDKs plug in without lock-in.&lt;/p&gt;

&lt;p&gt;Open-source AIOps, finally built — you could be next&lt;/p&gt;

&lt;p&gt;If these seven scenarios resonate, don’t stop at reading.&lt;/p&gt;

&lt;p&gt;Star it on GitHub, run it in minutes, and ask it the question that annoys you most on-call.&lt;/p&gt;

&lt;p&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;Questions? Open DataBuff and ask the Q&amp;amp;A expert — it is already in the product.&lt;/p&gt;




&lt;p&gt;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;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>apm</category>
      <category>opentelemetry</category>
    </item>
    <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>
  </channel>
</rss>
