Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenTelemetry – ein offener Standard für den Du...

OpenTelemetry – ein offener Standard für den Durchblick in Anwendungslandschaften (Java Forum Nord 2021)

Um in verteilten Anwendungslandschaften den Überblick zu behalten, gibt es schon seit einiger Zeit unterschiedliche Ansätze um Daten wie Metriken, Traces und Logs zentralisiert zu analysieren. Die Uneinheitlichkeit machte es bislang aufwändig wirklich alle Komponenten einfach zu berücksichtigen. Im Jahr 2019 wurde unter dem Dach der Cloud Native Computing Foundation (CNCF) OpenTelemetry als herstellerneutrales, quelloffenes Ökosystem mit dem Ziel geschaffen die Erfassung und Übertragung von Telemetriedaten zu standardisieren.

In dieser Session werden die Spezifikation und deren Bestandteile kurz vorgestellt. Es wird gezeigt, wie eine Integration bei Java-Anwendungen und die Verknüpfung mit gängigen Bibliotheken (Drop-In Instrumentation) erfolgt. Zuletzt wird auf die Interaktion mit Cloud-Infrastruktur eingegangen, da OpenTelemetry sich insbesondere auf cloud-native Anwendungen fokussiert.

Dennis Kieselhorst

September 16, 2021
Tweet

More Decks by Dennis Kieselhorst

Other Decks in Programming

Transcript

  1. © 2021, Amazon Web Services, Inc. or its Affiliates. Dennis

    Kieselhorst Sr. Solutions Architect OpenTelemetry An Observability Framework for Cloud-Native Software
  2. © 2021, Amazon Web Services, Inc. or its Affiliates. Agenda

    • Observability • CNCF Cloud Native Landscape • What is OpenTelemetry? • OpenTelemetry architecture • Tracing concepts in a nutshell • OpenTelemetry in Java • Demo • OpenTelemetry Collector • AWS Distro for OpenTelemetry • Q&A
  3. © 2021, Amazon Web Services, Inc. or its Affiliates. Detect

    Why is Observability important? Remediate Investigate
  4. © 2021, Amazon Web Services, Inc. or its Affiliates. Logs

    Traces Metrics Foundation of Observability
  5. © 2021, Amazon Web Services, Inc. or its Affiliates. Logs

    Traces Metrics Foundation of Observability ✓Discrete events ✓Usually timestamped ✓Can be structured
  6. © 2021, Amazon Web Services, Inc. or its Affiliates. Logs

    Traces Metrics grafana.com/grafana/dashboards/1244 ✓ Regularly sampled data points (timestamped) ✓ Numeric value ✓ Dimension/Labels
  7. © 2021, Amazon Web Services, Inc. or its Affiliates. Logs

    Traces Metrics Foundation of Observability jaegertracing.io/docs/1.18/ Request path across a number of services
  8. © 2021, Amazon Web Services, Inc. or its Affiliates. Observability

    across the stack Metal Virtualization Container and runtime Application and business
  9. © 2021, Amazon Web Services, Inc. or its Affiliates. CNCF

    Cloud Native Landscape http://l.cncf.io
  10. © 2021, Amazon Web Services, Inc. or its Affiliates. CNCF

    Cloud Native Landscape http://l.cncf.io
  11. © 2021, Amazon Web Services, Inc. or its Affiliates. CNCF

    end-user technology radar https://radar.cncf.io/2020-09-observability https://www.cncf.io/blog/2020/09/11/cncf-end-user-technology-radar-observability-september-2020/ „1. The most commonly adopted tools are open source. 2. There’s no consolidation in the observability space. 3. Prometheus and Grafana are frequently used together.”
  12. © 2021, Amazon Web Services, Inc. or its Affiliates. What

    is OpenTelemetry OpenTelemetry is a collection of tools, APIs, and SDKs. You can use it to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) for analysis in order to understand your software's performance and behavior. A N O B S E R V A B I L I T Y F R A M E W O R K F O R C L O U D - N A T I V E S O F T W A R E Broad Language Support Java | C# | Go | JavaScript | PHP | Python | Rust | C++ | Erlang/Elixir | .NET | Swift Integrates With Popular Frameworks and Libraries MySQL | Redis | Django | Kafka | Jetty | Akka | RabbitMQ | Spring | Flask | net/http | gorilla/mux | WSGI | JDBC | PostgreSQL https://opentelemetry.io
  13. © 2021, Amazon Web Services, Inc. or its Affiliates. OpenTelemetry

    Reference architecture https://opentelemetry.io/docs/
  14. © 2021, Amazon Web Services, Inc. or its Affiliates. OpenTelemetry

    Architecture Application Code Auto-Instrumentation Agent OpenTelemetry Collector (Receivers/Exporters) OpenTelemetry Extension/Processing OpenTelemetry In-Process Exporter OpenTelemetry API/SDK Monitoring Services (Observability back-ends) Clients In application process Outside application process
  15. © 2021, Amazon Web Services, Inc. or its Affiliates. Logs

    Traces Metrics OpenTelemetry status API: stable SDK: stable Protocol: stable Collector: experimental https://opentelemetry.io/status/ API: draft SDK: draft Protocol: experimental Collector: experimental API: feature-freeze SDK: draft Protocol: stable Collector: experimental
  16. © 2021, Amazon Web Services, Inc. or its Affiliates. Tracing

    concepts in a nutshell • Span represents an operation within a transaction. Typically encapsulates: operation name, a start and finish timestamp, attributes (a list of key-value pairs), events, a parent span identifier, links to other spans, and a SpanContext. • Trace defined implicitly by its spans. A trace can be thought of as a directed acyclic graph (DAG) of spans where the edges between spans are defined as parent/child relationships. • SpanContext represents all the information that identifies Span in the Trace and MUST be propagated to child Spans and across process boundaries. A SpanContext contains the tracing identifiers and the options that are propagated from parent to child Spans. • Tracer is responsible for tracking the currently active span. https://github.com/open-telemetry/opentelemetry- specification/blob/main/specification/overview.md#tracing-signal
  17. © 2021, Amazon Web Services, Inc. or its Affiliates. Getting

    started: OpenTelemetry with Java applications Manual instrumentation opentelemetry-api and opentelemetry-sdk libraries available to e.g. create spans programmatically https://opentelemetry.io/docs/java/manual_instrumentation/ Auto instrumentation Java agent attached to the JVM https://github.com/open-telemetry/opentelemetry-java- instrumentation#getting-started https://github.com/open-telemetry/opentelemetry-java- instrumentation/blob/main/docs/supported-libraries.md https://opentelemetry.io/docs/java/
  18. © 2021, Amazon Web Services, Inc. or its Affiliates. Demo

    https://aws.amazon.com/blogs/opensource/aws- one-observability-demo-workshop-whats-new- with-prometheus-grafana-and-opentelemetry/
  19. © 2021, Amazon Web Services, Inc. or its Affiliates. Collector

    Vendor-agnostic way to receive, process and export telemetry data Deployment • Agent: A Collector instance running with the application or on the same host as the application (e.g. binary, sidecar, or daemonset). • Gateway: One or more Collector instances running as a standalone service (e.g. container or deployment) typically per cluster, datacenter or region. Components • Receivers: How to get data into the Collector; these can be push or pull based • Processors: What to do with received data • Exporters: Where to send received data; these can be push or pull based • Pipelines: Enable the components https://opentelemetry.io/docs/concepts/data-collection/
  20. © 2021, Amazon Web Services, Inc. or its Affiliates. Collector

    configuration https://github.com/aws-observability/aws-otel- lambda/blob/main/adot/collector/config.yaml https://github.com/open- telemetry/opentelemetry- collector/blob/main/examples/dem o/otel-collector-config.yaml https://opentelemetry.io/docs/collector/configuration/
  21. © 2021, Amazon Web Services, Inc. or its Affiliates. A

    secure, production-ready open source distribution supported by AWS One-click deploy and configure from AWS Container and AWS Lambda consoles Exporters for AWS monitoring solutions including - CloudWatch, X- Ray, Elasticsearch Service, and Partner Solutions AWS Distro for OpenTelemetry
  22. © 2021, Amazon Web Services, Inc. or its Affiliates. AWS

    Distro for OpenTelemetry Architecture Application Code Auto-Instrumentation Agent OpenTelemetry Collector OpenTelemetry Extension/Processing OpenTelemetry In-Process Exporter OpenTelemetry API/SDK Monitoring Services Clients In application process Outside application process AWS resource metadata X-Ray Trace ID Support Correlation between metrics and traces AWS SDK Support X-Ray Trace ID Support Format conversion between OT and AWS Correlation between metrics and traces Traces Metrics X-Ray CloudWatch Metrics Prometheus Partners
  23. © 2021, Amazon Web Services, Inc. or its Affiliates. AWS

    Resources • Overview page: http://aws.amazon.com/otel • Developer Portal: https://aws-otel.github.io • Roadmap: https://github.com/orgs/aws-observability/projects/4 • Feature requests, bugs: https://github.com/aws-observability/aws-otel- community/issues • OpenTelemetry spec https://github.com/open-telemetry/opentelemetry- specification/tree/main/specification • Contact us on Gitter: https://gitter.im/aws-otel-distro/community