Skip to content
This repository has been archived by the owner on Jan 9, 2023. It is now read-only.
/ surfing-the-tide Public archive

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

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

asaaki/surfing-the-tide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

73 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Stars

Watchers

Forks