Telemetry Features
OpenTelemetry
- OpenTelemetry Traces: all services are
instrumented using OpenTelemetry available instrumentation libraries.
- OpenTelemetry Metrics: select services
are instrumented using OpenTelemetry available instrumentation libraries. More
will be added as the relevant SDKs are released.
- OpenTelemetry Logs: select services are
instrumented using OpenTelemetry available instrumentation libraries. More
will be added as the relevant SDKs are released.
- OpenTelemetry Collector: all services are instrumented
and sending the generated traces and metrics to the OpenTelemetry Collector
via gRPC. The received traces are then exported to the logs and to Jaeger;
received metrics and exemplars are exported to logs and Prometheus.
Observability Solutions
- Grafana: all metric dashboards are stored in
Grafana.
- Jaeger: all generated traces are being
sent to Jaeger.
- OpenSearch: all generated logs are sent to Data
Prepper. OpenSearch will be used to centralize logging data from services.
- Prometheus: all generated metrics and exemplars
are scraped by Prometheus.
Environments
- Docker: this forked sample can be executed with
Docker.
- Kubernetes: the app is designed to run on
Kubernetes (both locally, as well as on the cloud) using a Helm chart.
Protocols
- gRPC: microservices use a high volume of gRPC calls to
communicate to each other.
- HTTP: microservices use
HTTP where gRPC is unavailable or not well supported.
Other Components
- Envoy: Envoy is used as a reverse proxy for
user-facing web interfaces such as the frontend, load generator, and feature
flag service.
- Locust: a background job that creates realistic usage
patterns on the website using a synthetic load generator.
- OpenFeature: a feature flagging API and SDK
that allows for the enabling and disabling of features in the application.
- flagd: a feature flagging daemon that is used to
manage feature flags in the demo application.