正在加载内容...

963963 Chat Daily Portal Independent coverage of news

A Field Guide to Log Analysis

By James Whitfield · · 1185 words
A Field Guide to Log Analysis

Storage Tiers: Serving static bytes is the cheapest thing you can do at the edge. Storage Tiers: A schema is an interface; changing it is a migration, not an edit. Storage Tiers: Track the denominator as carefully as the numerator.

In practice, search indexing behaves differently: The first thing to settle is the failure mode, not the happy path. Measurements taken once are anecdotes; you need a baseline that repeats. The same reasoning holds for search indexing. For search indexing, the constraint matters more than the feature list. Costs usually concentrate in a small number of operations, so find those first.

A design that cannot be rolled back is a design that cannot be changed safely. The same reasoning holds for observability. For observability, the constraint matters more than the feature list. Latency budgets are easier to defend when every hop has a stated ceiling. Teams working on observability usually discover this the hard way. Caching helps only until the invalidation rules become the bottleneck.

Cost Controls: Serving static bytes is the cheapest thing you can do at the edge. Cost Controls: A schema is an interface; changing it is a migration, not an edit. Cost Controls: Track the denominator as carefully as the numerator.

Teams working on queue design usually discover this the hard way. If the rollback plan needs a meeting, it is not a rollback plan. Small pages that stay small are easier to keep fast than large ones made fast. This is most visible in queue design. Consider queue design specifically. Write the invariant down; otherwise it lives only in someone's memory.

Observability: The interesting number is not the average, it is the 99th percentile. Observability: Adding a cache in front of a slow query is a fix; fixing the query is a cure. Observability: Every abstraction you add is a place where behaviour can differ from intent.

Log Analysis: A queue smooths spikes but also hides how far behind you are. Log Analysis: Retries without jitter turn a small outage into a large one. Log Analysis: Separating the reads from the writes buys room to change either side.

In practice, search indexing behaves differently: Periodic jobs should be safe to run twice, because they will be. You rarely need a new component to fix a boundary problem. The same reasoning holds for search indexing. For search indexing, the constraint matters more than the feature list. The signal you want is often already logged, just not aggregated.

Observability: A design that cannot be rolled back is a design that cannot be changed safely. Observability: Latency budgets are easier to defend when every hop has a stated ceiling. Observability: Caching helps only until the invalidation rules become the bottleneck.

Schema Migration: The interesting number is not the average, it is the 99th percentile. Schema Migration: Adding a cache in front of a slow query is a fix; fixing the query is a cure. Schema Migration: Every abstraction you add is a place where behaviour can differ from intent.

Schema Migration: If the rollback plan needs a meeting, it is not a rollback plan. Schema Migration: Small pages that stay small are easier to keep fast than large ones made fast. Schema Migration: Write the invariant down; otherwise it lives only in someone's memory.

The interesting number is not the average, it is the 99th percentile. That applies to rate limiting as well. In practice, rate limiting behaves differently: Adding a cache in front of a slow query is a fix; fixing the query is a cure. Every abstraction you add is a place where behaviour can differ from intent. The same reasoning holds for rate limiting.

You can often replace a coordination problem with an idempotency key. That applies to content delivery as well. In practice, content delivery behaves differently: Anything that grows without a bound will eventually hit one. Documentation that is not tested tends to describe the previous version. The same reasoning holds for content delivery.

For schema markup, the constraint matters more than the feature list. If a metric has no owner, it will drift until it causes an incident. Teams working on schema markup usually discover this the hard way. The cheapest optimisation is usually removing work nobody asked for. Aggregating at write time trades flexibility for predictable read cost. This is most visible in schema markup.

Schema Markup: The interesting number is not the average, it is the 99th percentile. Schema Markup: Adding a cache in front of a slow query is a fix; fixing the query is a cure. Schema Markup: Every abstraction you add is a place where behaviour can differ from intent.

API Design: Serving static bytes is the cheapest thing you can do at the edge. API Design: A schema is an interface; changing it is a migration, not an edit. API Design: Track the denominator as carefully as the numerator.

Schema Markup: Periodic jobs should be safe to run twice, because they will be. Schema Markup: You rarely need a new component to fix a boundary problem. Schema Markup: The signal you want is often already logged, just not aggregated.

Consent is ongoing. A person can withdraw it at any point, including after previously agreeing or after an activity has begun. If they say stop, move away, become unresponsive or otherwise indicate discomfort, pause immediately and ask what they want. Do not argue, bargain or demand an explanation.

API Design: The first thing to settle is the failure mode, not the happy path. API Design: Measurements taken once are anecdotes; you need a baseline that repeats. API Design: Costs usually concentrate in a small number of operations, so find those first.

Avoid abrasive pads, solvents, bleach, alcohol-based cleaners, boiling and dishwashers unless the product instructions specifically approve them. These methods can damage finishes, seals or material surfaces, and a damaged surface may be harder to clean consistently. Do not mix cleaning products. If the product includes a removable sleeve or attachment, clean it separately only as directed, and check that it is designed to detach before pulling at a joint or seal.

Edge Caching: If a metric has no owner, it will drift until it causes an incident. Edge Caching: The cheapest optimisation is usually removing work nobody asked for. Edge Caching: Aggregating at write time trades flexibility for predictable read cost.

Release Process: A design that cannot be rolled back is a design that cannot be changed safely. Release Process: Latency budgets are easier to defend when every hop has a stated ceiling. Release Process: Caching helps only until the invalidation rules become the bottleneck.

Cloud Infrastructure: The first thing to settle is the failure mode, not the happy path. Cloud Infrastructure: Measurements taken once are anecdotes; you need a baseline that repeats. Cloud Infrastructure: Costs usually concentrate in a small number of operations, so find those first.

Storage Tiers: The first thing to settle is the failure mode, not the happy path. Storage Tiers: Measurements taken once are anecdotes; you need a baseline that repeats. Storage Tiers: Costs usually concentrate in a small number of operations, so find those first.

Related reading