Tell me what you are doing.
2021-09-21 15:11:44,345 - werkzeug - INFO - \"\u001B[33mPOST /order HTTP/1.1\u001B[0m\" 404
2021-09-21 15:11:45,206 - root - INFO - Preparing espresso coffee
2021-09-21 15:11:46,269 - root - INFO - Get product price: cornetto
2021-09-21 15:11:45,024 - werkzeug - INFO - \"OPTIONS /order HTTP/1.1\" 200
2021-09-21 15:11:45,246 - root - ERROR - Missing some ingredients
2021-09-21 15:11:46,270 - root - INFO - Query DB for price of product: cornetto
2021-09-21 15:11:45,074 - root - INFO - Check if tiramisu is available
2021-09-21 15:11:46,272 - root - ERROR - FATAL: remaining connection slots are reserved
...
Don't need to grep your logs, look at the metrics
A couple of years ago in microservices not that far away...
A couple of years ago in microservices not that far away...
Today. Here.
Service A
Service B
Database
Client
A
B
DB
HTTP GET
HTTP POST
DB CLIENT
A
B
DB
HTTP GET
Trace ID: 0x0123
Span ID: 0x0111
Name: HTTP GET (remote)
Status: OK (...)
HTTP POST
DB CLIENT
A
B
DB
HTTP GET
Trace ID: 0x0123
Span ID: 0x0111
Name: HTTP GET (remote)
Status: OK (...)
Trace ID: 0x0123
Span ID: 0x0222
Parent Span ID: 0x0111
Name: HTTP POST (client)
Status: OK (...)
HTTP POST
DB CLIENT
A
B
DB
HTTP GET
Trace ID: 0x0123
Span ID: 0x0111
Name: HTTP GET (remote)
Status: OK (...)
Trace ID: 0x0123
Span ID: 0x0222
Parent Span ID: 0x0111
Name: HTTP POST (client)
Status: OK (...)
HTTP POST
DB CLIENT
A
B
DB
HTTP GET
Trace ID: 0x0123
Span ID: 0x0111
Name: HTTP GET (remote)
Status: OK (...)
Trace ID: 0x0123
Span ID: 0x0222
Parent Span ID: 0x0111
Name: HTTP POST (client)
Status: OK (...)
HTTP POST
DB CLIENT
A
B
DB
HTTP GET
Trace ID: 0x0123
Span ID: 0x0111
Name: HTTP GET (remote)
Status: OK (...)
Trace ID: 0x0123
Span ID: 0x0222
Parent Span ID: 0x0111
Name: HTTP POST (client)
Status: OK (...)
Trace ID: 0x0123
Span ID: 0x0333
Parent Span ID: 0x0222
Name: /order
Status: OK (...)
HTTP POST
DB CLIENT
A
B
DB
HTTP GET
Trace ID: 0x0123
Span ID: 0x0111
Name: HTTP GET (remote)
Status: OK (...)
Trace ID: 0x0123
Span ID: 0x0222
Parent Span ID: 0x0111
Name: HTTP POST (client)
Status: OK (...)
Trace ID: 0x0123
Span ID: 0x0333
Parent Span ID: 0x0222
Name: /order
Status: OK (...)
Trace ID: 0x0123
Span ID: 0x0444
Parent Span ID: 0x0333
Name: INSERT INTO TABLE
Status: OK (...)
HTTP POST
DB CLIENT
The same metadata for logs, metrics and traces.
.
Prometheus
Grafana
Fluentd
Fluent Bit
Jaeger
Zipkin
OpenTracing
Vector
Collectd
Logstash
...
Vendor provided
Vendor provided
Vendor provided
Vendor provided
Vendor provided
Vendor provided
Vendor provided
Vendor provided
Vendor provided
Instrumentation
Collection
Backend
OpenCensus
OpenTracing
OpenTelemetry
Prometheus
Grafana
Fluentd
Fluent Bit
Jaeger
Zipkin
OpenTracing
Vector
Collectd
Logstash
OpenTelemetry
Observability 1.0
Instrumentation
Collection
Backend
Observability 1.0
Observability 2.0
vs
(work in progress)
Observability 1.0
Observability 2.0
Vendor provided
OpenTelemetry provided
OpenTelemetry provided
vs
(work in progress)
Observability 1.0
Observability 2.0
vs
Instrumentation
(work in progress)
Observability 1.0
Observability 2.0
vs
Collection
(work in progress)
Observability 1.0
Observability 2.0
vs
Backend
(work in progress)
Observability 2.0
(work in progress)
Guidelines, API, SDK, semantic conventions
OpenTelemetry Enhancement Proposals (OTEPS)
Language independent interface types (proto)
General-purpose telemetry data delivery protocol designed in the scope of OpenTelemetry project.
Specified for both gRPC and HTTP transports.
receivers:
hostmetrics:
scrapers:
memory:
processors:
resourcedetection/detect-host-name:
detectors:
- system
system:
hostname_sources:
- os
exporters:
otlp:
endpoint: otelcol2:4317
service:
pipelines:
metrics:
receivers:
- hostmetrics
processors:
- resourcedetection/detect-host-name
exporters:
- otlp
Core distribution
Contrib distribution
https://github.com/open-telemetry/opentelemetry-collector-contrib
Custom distributions
.
credits to Przemek Maciołek from Sumo Logic
for his presentation on youtube (in English)
Marcin Stożek "Perk"
@marcinstozek / perk.pl