asaaki / surfing-the-tide

πŸ”­πŸŒŠπŸ„πŸ»β€β™€οΈ Integration example of tide + opentelemetry-tide with surf + opentelemetry-surf

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

surfing-the-tide

A fullstack telemetry showcase.

Integration example of
  tide + opentelemetry-tide
with
  surf + opentelemetry-surf

On top of that, the whole docker-compose setup provides you with the following:

  • nginx as the "ingress" service (public port 8080)
  • tide based "frontend" servers (upstream of nginx)
  • tide based "backend" servers (called via surf in frontend server)
  • multiple frontends and backends for distribution and load balancing
  • jaeger tracing pipeline with individual services (agent, collector, query UI)
  • elasticsearch cluster for tracing data storage (3 nodes)
  • prometheus service for metrics collection
  • nginx-prometheus-exporter for basic nginx metrics
  • grafana as a dashboard solution

Only nginx, jaeger query UI, and grafana are publicly exposed

Why is there no logging facility in place?

I believe we should rethink what, how, and why we log. With tracing and properly emitted events via spans, we can achieve the same insights as our good old logs. what we need is maybe a better way to access and/or postprocess those trace based log events. Also keep in mind that you need 100 % tracing, no downsampling allowed, otherwise you loose information. But if we replace our way of logging, then 100 % tracing might not be an issue after all.

The same goes for error reporting by the way. Nothing prevents you from attaching your beloved stacktraces to the span events if you so desire. Yet again, we "just" need better interfaces and integrations for that.

Usage

# start all services (docker compose)
make dc.up

# Make a request or two ...
curl http://localhost:8080/

# Open browser and view the traces
firefox http://localhost:16686/

You should see traces with multiple spans, for nginx, the front(end)-server, and (backend) server.

example jaeger search example jaeger trace

As well as some metrics in grafana, too:

example grafana dashboard for prometheus metrics

About

πŸ”­πŸŒŠπŸ„πŸ»β€β™€οΈ Integration example of tide + opentelemetry-tide with surf + opentelemetry-surf

License:Apache License 2.0


Languages

Language:Rust 64.3%Language:Dockerfile 18.8%Language:JavaScript 10.5%Language:Makefile 5.2%Language:Shell 1.2%