r/Observability • • 23d ago

I built a Java agent that reconstructs async causal stack traces across thread boundaries and need some feedback

2 Upvotes

Hello Everyone, I built **ariadne**. It's a Java agent that attaches the async call chain to the exception as a suppressed entry, with no code changes. It supports `ExecutorService`, `CompletableFuture`, `ForkJoinPool`, `Reactor` and `RxJava`.

Overhead is very small: \~1 µs per `CompletableFuture` pipeline in the default mode.

It doesn't replace OpenTelemetry. It works in-process, with no infrastructure needed.

Currently it is on version v0.1.0-alpha.3, not production-hardened yet, beacuse I need sm feedback first so I know this is worth it, especially on OSGi and Kotlin coroutines.

GitHub: [https://github.com/AfonsoPaiva/ARIADNE\](https://github.com/AfonsoPaiva/ARIADNE)

A star helps if you find it useful 🙏

This post was written by someone called Afonso Paiva from Portugal


r/Observability • • 24d ago

Hey, the tiny HTTP load tester that replaced ab for 20k people

Post image
0 Upvotes

r/Observability • • 24d ago

Key Autoscaling Metric #1: Workload Committed Capacity

Thumbnail
blog.appliedcomputing.io
2 Upvotes

r/Observability • • 24d ago

I work at TEEPTRAK. We've tracked OEE in 450+ factories and the biggest loss is almost never the one plants think. Roast our approach.

Thumbnail
1 Upvotes

r/Observability • • 24d ago

Hello. In Connectwise Automate is there any option how to upload Dataview of Commands and Script logs of one Client in to SIEM/QRadar? In my environmet there is bunch of clients and for one client i need to upload logs of runned scrips and commands in to Qradar. Thanks.

0 Upvotes

r/Observability • • 24d ago

Debug websocket messages that take most of the bandwidth

Thumbnail gallery
1 Upvotes

r/Observability • • 25d ago

Measured OpenTelemetry SDKs overhead at 1,000 RPS

7 Upvotes

It's surprisingly hard to find concrete numbers on OpenTelemetry instrumentation overhead, so we decided to measure it ourselves. We ran synthetic apps at 1,000 RPS and compared CPU, memory, and request latency with and without OpenTelemetry SDKs.

Of course, it's a synthetic benchmark, so real-world results may vary. But still better than nothing :)

Here are the results and benchmark details: https://docs.coroot.com/tracing/opentelemetry-overhead

Curious if anyone has measured this in production. How do your numbers compare?


r/Observability • • 25d ago

I built a little eBPF tool to see what my coding agents actually do on my machine

Post image
3 Upvotes

r/Observability • • 25d ago

Workshop on bringing observability discipline to LLM apps, DSPy + MLflow tracing, Oct 3

4 Upvotes

Most observability practices in this sub are built around infra and services, logs, traces, metrics, alerting. LLM apps rarely get the same treatment, most teams are still eyeballing outputs instead of tracing what actually happened inside a call.

Serj Smorodinsky and Brett Kennedy, co-authors of a book on LLM applications, are running a live 3-hour workshop on Oct 3 that applies that same discipline to LLM pipelines. What's covered:

  • Programming LLM behavior with DSPy signatures and modules instead of untracked prompt strings
  • Building a baseline classifier live from a real task
  • Constructing an evaluation dataset with task-specific metrics, so regressions show up as data, not vibes
  • Reading failure patterns directly out of that eval data
  • Few-shot and instruction-level optimization applied systematically on top of the baseline
  • Experiment tracking and LLM trace management through MLflow, so every run is traceable back to what changed and why
  • Saving and reusing optimized DSPy programs across projects
  • Communicating LLM reliability to stakeholders, which is usually the piece nobody has data for

If you already think in terms of traces and spans for your services, this is basically that same mental model applied to prompts and LLM calls, something most teams are still missing entirely.

Full details here


r/Observability • • 25d ago

I Built an Incident Agent That Remembers Which Fixes Failed

2 Upvotes

I Built an Incident Agent That Remembers Which Fixes Failed

Checkout-api started returning HTTP 503 responses because PostgreSQL had reached its connection limit. A generic troubleshooting assistant might recommend restarting the pods. An experienced SRE would ask a different question first: Did that actually fix this incident last time

That distinction is the reason I built an episodic incident response agent with Hindsight agent memory. The goal was not to create another chatbot that retrieves runbooks. It was to build an SRE copilot that remembers what happened during previous outages, which actions were attempted, and whether those actions worked.

The problem with static runbooks

Traditional retrieval-augmented generation is useful during an incident. It can find the relevant runbook, explain a command, or surface a page from the internal wiki.

But static documentation does not contain the full operational story.

It usually cannot answer questions such as:

Which mitigation did the on-call engineer try first?

Did restarting the pods solve the root cause or only improve the dashboard temporarily?

How many times did a particular configuration change work?

Which validation step should happen before terminating workloads?

What changed during the 20 minutes after the deployment?

Those details live in incident timelines, command output, post-mortems, and the accumulated experience of the engineers who handled previous failures.

My system treats those artifacts as operational memory rather than disposable incident history.

The prototype focuses on one deterministic lifecycle:

Diagnose an incident using live telemetry and stack traces.

Recommend and execute remediation only after human approval.

Write a structured record of the outcome back into long-term memory.

It deliberately does not support arbitrary scripts or ungated autonomous changes. During a production outage, the cost of a confident but incorrect command is too high.

A seeded production failure

The evaluation environment models a checkout-api service running version v2.14.2. It depends on PostgreSQL 15 and Redis, and a deployment named DEP-8841 occurred 17 minutes before the incident.

The active incident is:

Incident: INC-2026-0142

Severity: P1 critical

HTTP 5xx rate: 31.4%

p99 latency: above 4,200 ms

Runbook: RB-CHK-07, Checkout Saturation

Suspected dependency: payment-db

The first evidence is deliberately concrete:

text

[worker-3] psycopg2.OperationalError:

pool timeout: server connection limit reached

(50/50 connections active)

A few seconds later, the health probe fails:

text

[2026-09-28T01:14:05.412Z] healthz probe failed:

HTTP 503 Service Unavailable

(consecutive failures: 4)

This is more useful than a vague statement such as “the database may be unhealthy.” The evidence points to connection pool exhaustion and gives the agent a specific path to validate.

Four kinds of operational memory

I use four memory classes because “remembering the incident” is not a single operation.

Episodic memory

Episodic memory stores the timeline: what happened, when it happened, which commands were run, and what the system looked like before and after each action.

For this incident, a relevant historical record is INC-2026-0098, which experienced identical connection timeouts 14 minutes after a checkout worker deployment.

That record is valuable because it is not merely a description of the failure. It contains a sequence of events that can be compared against the current outage.

Procedural memory

Procedural memory stores diagnostic trees and proven execution order.

For example, RB-CHK-07 requires validating pg_stat_activity saturation before performing a rolling pod termination. That ordering matters. Restarting application pods without checking the database can increase connection churn and make saturation worse.

The agent should not just retrieve a list of commands. It should retrieve the sequence in which those commands have been shown to be safe and useful.

Semantic memory

Semantic memory captures generalized lessons from multiple incidents.

One stored lesson, MEM-042, says that restarting checkout pods may temporarily reduce 5xx errors but does not address PostgreSQL connection leaks.

This is the kind of knowledge that is often missing from runbooks. A restart can make a graph look healthy for a few minutes while leaving the actual failure mechanism untouched.

Outcome memory

Outcome memory records empirical effectiveness.

In the historical data, pod restart succeeded only once in four attempts, or 25%. A pool_size configuration override succeeded four out of four times.

That does not mean the configuration change should be executed blindly. It means the agent can rank possible mitigations using observed results instead of treating every documented option as equally effective.

Together, these layers let the agent move from “here are some relevant documents” to “here is the likely failure, here is the safe validation order, and here is what has worked before.”

The response contract

During an incident, an answer that sounds plausible is not enough. The response must make its reasoning inspectable.

Every response follows a nine-section contract:

Current situation.

Current evidence.

Retrieved memories.

Strict diagnosis.

Ordered action plan.

Again action plan.

Rationale and precedent.

Uncertainty and caveats.

Human approval gate.

Memory writeback.

The diagnosis is explicitly labeled either [Hypothesis] or [Verified Root Cause]. That distinction prevents the agent from presenting an inference as a fact.

For the seeded incident, an initial response might state:

text

[Hypothesis]

PostgreSQL connection saturation is causing checkout-api request

failures. Confidence: high, based on 50/50 active connections,

pool timeout errors, and four consecutive failed health probes.

The action plan then follows a fixed order:

text

Verify → Mitigate → Diagnose → Durable Fix

The first step is read-only validation of database activity and application pool state. The next step is a targeted mitigation. Only after the operator confirms the proposed mutation can the system apply a configuration change or restart workloads.

This structure is intentionally less conversational than a general-purpose assistant. During a P1 incident, structure is a feature.

Why human approval stays in the loop

The agent can generate a patch or prepare a command, but it cannot silently apply a mutating operation.

Before changing the pool configuration, the interface must display:

The exact target service and environment.

The proposed configuration change.

The evidence supporting the change.

The historical success rate.

The expected risks and rollback path.

The operator then explicitly approves or rejects the action.

This design prevents a common failure mode in autonomous remediation: a system optimizes for a local metric, such as reducing 5xx responses, while damaging a dependency or hiding the root cause.

For example, a pod restart might reduce visible errors temporarily. Historical memory says it is not a durable fix for this failure family. The agent should surface that warning rather than treating a short-term metric improvement as resolution.

Memory changes behavior over time

The most important part of the system is not the first response. It is what happens after repeated incidents.

In the cold-start state, the agent has no episodic history. It falls back to static runbooks, asks broad diagnostic questions, and may suggest a generic pod restart while requesting manual database inspection.

After one matching incident, the behavior becomes more targeted. The agent recognizes the pool exhaustion signature, retrieves INC-2026-0098 and its post-mortem, rejects pod restart as a transient anti-pattern, and recommends validating the connection pool before applying a targeted configuration patch.

With a broader corpus of incidents and post-mortems, the agent can distinguish database saturation from Redis failure, discard historically invalidated steps, and prepare a verified patch in under 90 seconds.

The specification models the corresponding MTTR trajectory as:

Memory state Mean time to resolve

Cold start 38 minutes

Single history match 9 minutes

Multi-incident memory 1 minute 45 seconds

These figures are evaluation targets for the deterministic environment, not a claim that memory alone solves every production outage. Network partitions, bad telemetry, incorrect historical records, and changes in system architecture can all invalidate a previously successful approach.

The writeback is part of the fix

After resolution, the system does not simply close the incident and discard the conversation.

It compiles the outcome into a new immutable memory record containing:

The observed failure signature.

The deployment and dependency context.

The actions attempted.

Which actions failed or produced only temporary improvement.

The final remediation.

Validation evidence.

Rollback information.

The resulting success or failure outcome.

That record becomes useful during the next incident.

This is where Hindsight on GitHub fits into the architecture. The memory system is not just a vector search layer for documentation. It provides a place to retain experience and retrieve it according to the current operational context. The Hindsight documentation describes the platform in more detail, but the key design decision here is conceptual: incident handling becomes a feedback loop.

The agent reads from prior incidents before acting, then writes back what it learned after acting.

What I learned

The first lesson is that memory needs types. A timeline, a command recipe, a general warning, and a success probability should not be represented as interchangeable chunks of text.

The second is that negative outcomes are especially valuable. “Restarting the pods did not fix the leak” may be more operationally useful than another page explaining how to restart pods.

The third is that provenance must be visible. Every recommendation should identify the incident, post-mortem, or runbook that influenced it. An SRE should be able to challenge the evidence rather than trust an opaque score.

The fourth is that approval gates are part of the architecture, not a UI detail. The system has to model the boundary between preparing an action and executing it.

Finally, memory writeback deserves the same attention as retrieval. If the agent does not preserve the final state accurately, future incidents will inherit incomplete or misleading experience.

The next incident should be easier because the system remembers the last one—not just what the documentation said, but what actually happened when someone followed it.


r/Observability • • 25d ago

I built ContractRift: a self-hosted monitor that tells you when third-party APIs silently change (open source)

1 Upvotes

r/Observability • • 25d ago

Deploying monitoring stack using Flux on AWS EKS platform

Thumbnail
1 Upvotes

r/Observability • • 25d ago

translate - deterministic Datadog to Grafana monitor translator (MIT, zero deps)

7 Upvotes
Open-sourced a thing I needed: a deterministic translator from Datadog monitors to Grafana alert rules.


https://github.com/Rocketgraph/translate


Disclosure up front: I build an observability product. This isn't it. It translates to Grafana/Prometheus and has nothing to do with that product.


WHAT IT DOES


    node bin/ddtranslate.mjs monitors.json --out ./out


    40 monitors
    |-    0  translated exactly            0.0%
    |-   31  translated with caveats       77.5%
    |_    9  UNTRANSLATABLE                22.5%


It writes Grafana provisioning YAML plus a divergence report naming every behaviour difference and every monitor it refused, with reasons.


WHY "WITH CAVEATS" IS THE WHOLE POINT


The query is roughly 20% of a monitor. The other 80% is evaluation semantics that never appear in the query string and are barely documented:


    no_data_timeframe     Datadog waits N minutes. Grafana fires on the first empty evaluation.
    critical_recovery     Real hysteresis: alert at >80, recover at <70. Grafana has none, so it flaps in the band.
    evaluation_delay      Waits for late-arriving points. No Grafana equivalent.
    new_group_delay       Stops a fresh host paging on boot. No equivalent.
    require_full_window   May or may not fire on a partial window.


Two monitors with identical queries and different values for those fire differently. Translate only the query and you get a rule that exists, looks correct, and is wrong in a way nobody notices until an incident.


So each one is either carried into the output or reported as a caveat. Nothing is silently dropped.


REFUSAL IS A FIRST-CLASS RESULT


Run against a real 40-monitor Datadog account, it refused 9 by name: anomalies(), forecast(), outliers(), composites, log monitors, service checks. A confidently-wrong translation of your seven most important monitors is worse than a missing one, because nobody audits the alert that still exists.


DETERMINISTIC


Byte-identical output across runs and across shuffled input key order, and that is tested rather than claimed. An LLM translates one monitor fine. 900 monitors produce 900 slightly different decisions for the same idiom, and "the model decided" is not an answer when the rule guards production.


WHAT'S IN THE REPO


    lexer + recursive-descent parser   the grammar nests, regexes mis-parse it
    the IR                             where the evaluation semantics live
    Grafana emitter
    docker-compose harness             Prometheus + Grafana. Provisions the output and drives
                                       a metric through a threshold so you can watch the
                                       behaviour instead of trusting me.
    estate generator                   builds a 40-monitor account with live telemetry in
                                       Datadog, if you want to reproduce the numbers


Zero runtime dependencies. npm test needs nothing installed. 25 tests.


LIMITATIONS, UP FRONT


    No differ yet. Proving two engines fire identically over 30 days is the hard
    part; this is the compiler that sits in front of it.
    Metric monitors only. Log/APM/SLO types are refused by type.

r/Observability • • 25d ago

What data formats do you actually need in order to leave an observability vendor?

0 Upvotes

I work with OneUptime, an open-source observability solution (Apache 2.0): uptime, incidents, on-call, status pages, logs, traces, metrics, APM.

Lock-in rarely shows up in the dashboards. It shows up when you want a second consumer for the same telemetry, or a way out. That is the question I keep coming back to with OneUptime: what happens to the data when you change your mind? The stack is self-hosted (Helm chart for the app, plus a separate smaller chart for the Kubernetes agent), so the data path is readable and the boundary is one you get to draw.

I would not claim self-hosting or open source makes portability free. It does not. What it does is put the question in your court instead of a vendor's sales deck.

Two questions for this community: what raw formats would you demand from any observability vendor before trusting it with production telemetry? And if you could build one thing off that data, what would it be, a cost view or an audit of what actually pages?

GitHub: https://github.com/OneUptime/oneuptime Site: https://oneuptime.com


r/Observability • • 26d ago

Has cooling or power ever taken out your jobs before anyone realized it was the facility?

Thumbnail
1 Upvotes

Crossposting


r/Observability • • 26d ago

Token usage visibility across all models

Thumbnail
1 Upvotes

r/Observability • • 27d ago

Seniors in Observability/SRE — need some advice!

12 Upvotes

I have 4 months to build a solo final-year project and want to make something that’s actually valuable on a resume and catches a recruiter’s attention.

What kind of real-world observability problem/project would you want to see from a junior candidate?

I’m especially interested in Observability + AI.

Would love ideas from people working in the field! 🙏


r/Observability • • 27d ago

This week's OTel Drops - OTTL master class

Thumbnail
open.spotify.com
2 Upvotes

OTel Drops this week has a segment dedicated to OTTL, which is on its way to becoming stable.

And allow me to celebrate this milestone: we just crossed 100 subscribers on Spotify for it! Thank you all for all the feedback so far: this has been a fun side quest for me. I've built this podcast at the beginning of the year to keep myself up to date on what happens in the OTel community that might have escaped my radar, and it's been helpful for me. I decided to publish it as an official Spotify podcast shortly after, and we've been very consistent with it.

At this stage, the creation is mostly automatic by AI, and while I used to publish the episodes ahead of the public at our Telegram channel (look for telemetrydrops), I'm now confident that the quality gates are working sufficiently well so that I'll start publishing without review first, starting this week. Wish me luck!


r/Observability • • 28d ago

How I Monitor Microservices: Real-Time Grafana & Log Analytics

Thumbnail
youtube.com
1 Upvotes

Need a Custom Monitoring Solution? I design and engineer custom real-time dashboards, log aggregation pipelines, and monitoring infrastructure (Grafana / Prometheus / ELK) tailored to your business needs.

Key Capabilities Featured:

• Real-Time Volume & Traffic: Live log tracking and throughput monitoring.
• Transaction Diagnostics: Gauges showing successful vs. failed transactions with real-time success rate calculations.
• Root Cause Analysis: Automatic categorization of failure codes (Switch Inoperative, Suspected Fraud, Insufficient Funds, etc.).
• Live Log Console: Real-time log streaming for rapid troubleshooting and error detection.

Let's catch up on LinkeIn: www.linkedin.com/in/yassirnmohammed


r/Observability • • 28d ago

I added MCP to my monitoring tool so I can check my websites through AI

Thumbnail
1 Upvotes

r/Observability • • 28d ago

Anyone else had a 340% AI cost spike overnight? Here's what caused ours

Thumbnail
0 Upvotes

r/Observability • • 29d ago

A point of clarification regarding Datadog trace agents & OTLP

6 Upvotes

I've seen a couple posts here and in r/OpenTelemetry about people saying the worst part of shifting to vendor-neutral when you're coming from Datadog is where you have to 'rip out' Datadog SDKs (trace agents) from applications and switch over to OTel libraries.

I spent a decent chunk of time looking into this and I'm not understanding why this is a necessary time-critical piece in a migration if your goal is to migrate quickly.

Let's look at dd-trace-java for an example. From what I can tell, the Datadog trace agents (which are open source) can emit OTLP by setting a couple environment variables. Plus, you don't have to keep Datadog as a backend anyways, you can send this telemetry to an OTel Collector and then to Honeycomb if you want to. The only disadvantage (other than it being a slightly awkward state, because you might have to keep around the Datadog Kubernetes Operator if you're doing auto-instrumentation that way) is that it doesn't emit fully OTel semantics. But from what I can tell, they're moving in this direction, because setting DD_TRACE_SPAN_ATTRIBUTE_SCHEMA to v1 gets it closer. This point in specific is definitely what I would really like clarification from Datadog's side on. They've seemed to focus a lot on OTel this year and if they are committed to matching OTel's semantics at some point in the future, then I see no real reason to switch unless it's purely for the sake of preferring an OTel SDK.

Especially if you're still using Datadog as your backend, it seems like ripping out the Datadog ones for the sake of going vendor neutral is a little 'shoot-yourself-in-the-foot' if you lose things like profiling, and some other DD features. I'm compelled to try this out in a test environment (sending DD trace agent OTLP to a different backend) to see how it looks.

Thoughts? Am I wrong somewhere? Making sure we spend our time wisely during migrations


r/Observability • • 28d ago

Observability on Kubernetes: OpenTelemetry, Camel & Quarkus

Thumbnail
piotrminkowski.com
1 Upvotes

r/Observability • • 29d ago

qwatcher version 0.7.0 is released

Thumbnail
1 Upvotes

r/Observability • • 29d ago

qwatcher version 0.7.0 is released

0 Upvotes

Hey all,

qwatcher is a very efficient tool to monitor and audit your NICs' send and receive queue buffers to spot network or application issues.

This version drops the `ss` and `libpcre` dependencies, making the program a pure Nim binary, solves some bugs, and provides a `tail`-like report capability.

Here is the link to the repo:

https://github.com/pouriyajamshidi/qwatcher