Free — no signup required

The Power of Querying

2 min read

From Search to Analytics

Once your logs are structured objects, your logging backend — whether that is Elasticsearch, Grafana Loki, Splunk, or Google Cloud Logging — becomes an analytics engine rather than a text search tool.

The difference is profound. With unstructured logs, you ask: "Does this line contain the word 'failed'?" With structured logs, you ask: "What is the 95th-percentile upload duration for PDF files, grouped by user, over the last 24 hours?" The first is a grep. The second is a database query.

Concrete examples of what becomes trivially easy:

Question Unstructured (grep) Structured (query)
All slow uploads grep "after [0-9]\{4,\}ms" — fragile regex duration_ms > 1000 — exact, typed
Average duration by user Impossible without a script avg(duration_ms) by user
Exact file match grep "report.pdf" — also matches report.pdf.backup file = "report.pdf" — exact equality
Alert on error rate Parse and count matching lines count(event="upload_failed") / count(event="upload_started") > 0.05

You are no longer searching text. You are querying a database — one that happens to be populated in real time by your running services.

Why Backends Love Structured Logs

Log aggregation systems like Elasticsearch automatically index every field in a JSON document. This means the moment a structured log arrives, duration_ms is already indexed as a numeric field — no parsing pipeline required. With unstructured logs, you must write an ingest pipeline (a Logstash filter, a Fluentd parser, a Loki label extractor) to pull numbers out of strings before you can query them. That pipeline is extra infrastructure that can lag, fail, or silently produce wrong results if the log format changes.

Structured logging eliminates the parsing layer entirely. The log is already the data.

This is one of 18 chapters

Every chapter is free — Kubernetes, Terraform, SRE, distributed systems, and more — with fast daily review built in.

Sign up free