OpenTelemetry is a set of APIs, SDKs, tooling and integrations that are designed for the creation and management of telemetry data such as traces, metrics, and logs.
Distributed architectures introduce a variety of operational challenges including how to solve availability and performance issues quickly.
Telemetry data is needed to power observability products. Traditionally, telemetry data has been provided by either open-source projects or commercial vendors. With a lack of standardization, the net result is the lack of data portability and the burden on the user to maintain the instrumentation.
OpenTelemetry is not an observability back-end like Jaeger or Prometheus.
(source: https://opentelemetry.io/docs/concepts/what-is-opentelemetry/)
A very simplified example.
Service | |
---|---|
consumer | Interact with the user management service. It is doing random domain events. |
user-management | This service manage the state of user data |
analytics | Service that gets data from a user.create event and enrich span |
Events | |
---|---|
user.list | List user |
user.create | Creates a user |
user.delete | Delete a user |
Events are not single requests. It should be considered that an event have more impact. For example a user.create
event
maybe is interesting for an analytics team. Or the user.delete
event will have an impact on GDPR.
This setup runs out of the box. It includes a local jaeger that is used to visualize the traces.
make jaeger-build && make jaeger-up
This docker-compose setup will export the data to https://www.honeycomb.io/.
To enable this you need to add a .env-honeycomb
file in this folder this need an environment definition with this env key HONEYCOMB_API_KEY
example:
HONEYCOMB_API_KEY=1234567890
make honeycomb-build && make honeycomb-up