APM, OpenTelemetry and SRE guides
Practical engineering guides on OpenTelemetry, distributed tracing, SLOs, OpenShift and Kubernetes monitoring, incident response and AIOps.
Alert fatigue: audit your pager and cut the noise
A practical audit for noisy on-call rotations. Classify a month of pages, delete what nobody acts on, group the rest, and page on symptoms and burn rate.
Monitoring Core Web Vitals from real users
Measure LCP, INP and CLS at p75 from real users, read the good, needs-work and poor split, handle SPAs, and trace slow interactions to the backend.
Database connection pool exhaustion: diagnosis and fixes
Why connection pools run dry, how to size them with Little's law, which PostgreSQL queries reveal the holder, and why a bigger pool often backfires.
Troubleshooting .NET performance in production
Diagnose slow ASP.NET Core services with dotnet-counters, dotnet-trace and dotnet-dump: thread pool starvation, GC pauses, HttpClient and containers.
Writing an error budget policy that people follow
Write an error budget policy people follow: a template to copy, spending tiers with worked maths, exceptions, sign-off with product teams and traps.
Golden signals, RED and USE
The four golden signals, RED and USE compared with Kubernetes examples: what each one measures, where it fits and a dashboard layout that follows them.
How to run a Helm install in an air-gapped cluster
Move a Helm chart and every image it needs into a disconnected Kubernetes or OpenShift cluster, verify integrity, and catch hidden external pulls.
Java latency troubleshooting: from a p99 spike to the cause
Find the cause of Java latency spikes with Flight Recorder, GC logs, thread dumps and wall-clock profiling, including safepoints and CPU limits.
Kubernetes admission webhooks: how they work and how they fail
How mutating and validating admission webhooks work, how to set failurePolicy and timeouts, and how to stop a webhook from blocking pod starts.
Right-sizing Kubernetes workloads
Set Kubernetes CPU and memory requests from real usage: p95 vs peak, CFS throttling maths, JVM and HPA pitfalls, VPA recommendations and safe rollout.
Log pattern clustering explained
How log template mining turns millions of lines into patterns, with working Python, the Drain approach, tuning, and how to detect new and rising patterns.
OIDC with PKCE and LDAP groups for internal tools
Add single sign-on to an internal tool with OIDC and PKCE, validate tokens properly, map LDAP groups to roles, and plan offboarding.
On-premise vs SaaS APM
Compare on-premise and SaaS APM on data flow, operating work, upgrades and audit, with capacity arithmetic and the cases where SaaS is the better choice.
A practical guide to OpenShift monitoring
What OpenShift monitoring includes out of the box, how to enable user workload monitoring, the first commands to run in an incident and the gaps left.
Running the OpenTelemetry Collector on Kubernetes
Deploy the OpenTelemetry Collector on Kubernetes with Helm: choose agent or gateway, set memory limits, add k8sattributes and avoid common failures.
Getting started with OpenTelemetry
Send your first OpenTelemetry traces with zero-code Python instrumentation, console and OTLP exporters, manual spans and key environment variables.
Auto-instrumentation with the OpenTelemetry Operator
Use the OpenTelemetry Operator to auto-instrument Java, .NET, Python and Node.js pods with one resource and an annotation, plus the common failures.
How to reduce MTTR without just working faster
Break incident time into detection, triage, diagnosis, mitigation and verification, measure each phase, and pick the change that shortens the slowest one.
Running under OpenShift's restricted-v2 SCC
What the OpenShift restricted-v2 SCC enforces, how to fix permission denied and UID errors, how to build compliant images and audit what agents need.
Runbook automation with Ansible AWX
Turn a manual runbook into a safe AWX job template. Covers playbooks with guardrails, API launches, least-privilege tokens, approvals and verification.
SLO burn-rate alerts, from first principles
How to calculate burn rate and set multi-window SLO alerts: the 14.4, 6, 3 and 1 thresholds, the arithmetic behind them, reset time and low traffic.
Tail-based sampling explained
How tail-based sampling keeps errors and slow traces, how to size decision_wait and memory, why you need two collector tiers and which policies to use.
TLS certificate expiry monitoring that actually catches outages
Catch expiring certificates before they cause outages. Inventory public and internal certs, probe what is served, and alert for shorter lifetimes.
W3C Trace Context explained
How the traceparent and tracestate headers work field by field, how to debug broken traces across proxies, queues and browsers, and what to trust.
What changed? Using change correlation to shorten incidents
Answer the first incident question fast. Line up rollouts, ConfigMap and Secret edits and restarts against latency and errors, and avoid false causes.
What is AIOps?
AIOps explained without the hype: what baselines, event correlation, root-cause ranking and LLM assistants can do, and what to verify before you trust it.
What is APM?
What application performance monitoring does, how instrumentation and traces work, how APM differs from observability and logs, and how to choose a tool.
What is distributed tracing?
How distributed tracing works, from spans and context propagation to sampling and reading a trace waterfall, with common failure patterns to spot.