scryops
menu
01
Guide 8 min read

OpenTelemetry: What It Is and How It Fits Together

OpenTelemetry is a single instrumentation layer that produces traces, metrics, and logs in a vendor-neutral format. This guide explains what each signal is for, how the SDK and Collector relate, and where to go next.
02
Guide 11 min read

Context Propagation: How Distributed Traces Stay Connected Across Services

A distributed trace is only as complete as its weakest propagation link. One hop that drops the context and the trace splits in two. W3C Trace Context and Baggage, the propagator settings that matter, and the places context gets lost — between services and inside them — in .NET, Java, Go, Python and Node.
03
How-to 8 min read

How to Instrument a .NET Service with OpenTelemetry

Add OpenTelemetry to an ASP.NET Core service: traces, metrics and logs in one setup block, manual spans and metrics for business logic, Serilog, and the zero-code agent for services you can't change. All verified against a local Collector.
04
How-to 7 min read

How to Instrument a Java Spring Boot Service with OpenTelemetry

Instrument a Spring Boot service with the OpenTelemetry Java agent or the Spring Boot starter: traces, metrics and logs with no code, then your own spans and metrics, the Micrometer bridge and log correlation. All verified against a local Collector.
05
How-to 8 min read

How to Wire Trace IDs Into Your Logs

Logs and traces live in separate worlds until you connect them. Put the trace ID on every log line in .NET, Java, Go or Python, check where each runtime actually writes it, and make the field name a contract your backend can use.
06
Guide 9 min read

Logging Foundations

What logging is for, how it fits next to metrics and traces, and what to log, where and how. The mental model to have before touching a logging framework, and the starting point for the rest of the logging guides.
07
Guide 8 min read

Structured Logging: Teaching Machines to Read

Logs were designed for humans grepping text files at 2am. Now they also have to feed query engines, correlation and anomaly detection. Here's what that changes about what you write, and which field names to use.
08
Guide 11 min read

Telemetry Data Sovereignty: Where Your Data Lives Matters

A system that spans continents produces telemetry that spans legal jurisdictions. Here's how to keep traces and logs where the law wants them, and still see your whole system.
09
How-to 9 min read

Enrich Logs with Business Context in .NET

A log line that says 'payment failed' tells you something broke. One that says 'payment failed, enterprise customer, checkout-v2 experiment' tells you what to do about it. Here's how to add that context to every log event in a .NET service, safely, with Serilog.
10
How-to 9 min read

How to Configure OTel Collector Tail Sampling

Move from flat probabilistic sampling to tail-based sampling in the OTel Collector. Keep every error and slow trace, cut health-check noise to 1%, and check that the Collector is doing what you think.
11
Article 7 min read

Your Sampling Strategy Is Lying to You

A flat 5% sampling rate sounds like a sensible trade between cost and coverage. It isn't. A random slice of your traffic is mostly the requests you'll never look at, and it throws away the rare ones you need at the same rate.
12
Article 6 min read

The dashboard was green, but the request was broken.

Metrics tell you how the crowd is doing. Logs tell you what one service saw. A trace tells you what one request went through, and at 2 a.m. that is usually the question you are asking.
13
How-to 10 min read

Scrub PII from Application Logs in .NET

Keep personal data out of your .NET logs before they leave the process: classify fields so the logger erases or pseudonymises them, scrub free text and exception messages in an OpenTelemetry processor, and prove nothing leaks.
14
Guide 11 min read

Async Logging: Keeping Your Application Threads Free

A synchronous log write makes the request thread wait on disk or network I/O. Async logging hands that work to a background thread, and quietly adds a queue that can fill up, drop records and lose them at shutdown. How to size it, watch it and flush it, with Serilog, the OpenTelemetry SDK and Python.
15
Guide 8 min read

Log Context Enrichment: Adding Meaning to Your Events

Enrichment turns isolated log records into connected business events. Here is the architecture that makes it work — static resource attributes, background-refreshed caches, and per-request scopes — without taxing the request path.
16
Guide 8 min read

Implementing Audit Trails with OpenTelemetry

An audit trail is not a log. It's a tamper-evident, time-ordered record of who did what, when, and why. Most teams build this wrong. Here is how to do it correctly using OpenTelemetry and append-only storage.
17
Guide 8 min read

Data Masking in Telemetry: The Art of Safe Transformation

Telemetry data is just as risky for PII as any database. Here's how to turn sensitive fields into safe, useful signals: hashing, tokenising, coarsening, and picking the right tool for the job.
18
Guide 10 min read

Distributed Logging: Ten Services, One Story

When a request crosses ten services, you get ten log streams that share nothing but a timestamp you can't trust. How to collect them on every node, carry the trace ID through, ship them through the OpenTelemetry Collector, and notice when lines go missing.
19
Guide 11 min read

High-Throughput Logging: Sampling, Collectors, and the Wire

At 1.5 million log events per second you cannot keep, batch, or ship everything the way you did at moderate scale. Content-aware sampling, OTel exporter tuning, Collector-side batching, and cheaper bytes on the wire.
20
Article 5 min read

The Evolution of System Understanding

From grepping one log file to querying wide, trace-linked events: how the questions we can ask a running system changed when monoliths split apart, and why OpenTelemetry had to exist.
21
Guide 8 min read

Your Traces Are Leaking User Data

Every OTel span that includes a customer email, shipping address, or payment token is a GDPR audit waiting to happen. The fix isn't application code; it's a Collector pipeline.
22
Article 6 min read

Observability 1.0 meant forensics. Observability 2.0 means prevention.

Observability 1.0 taught us to look backward. Observability 2.0 asks us to look forward. Most teams haven’t made that shift yet. That’s why I named this site after a medieval divination practice.