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

Application Observability

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Application Observability

Avatar for Daniel Heinrich

Daniel Heinrich

February 04, 2022
Tweet

More Decks by Daniel Heinrich

Other Decks in Programming

Transcript

  1. Problem • Micro-Services • Umgebungen • Infrastruktur • Loadbalancer •

    Umsysteme • Kubernetes • Datenbanken • Kommunikation • REST • Online • Externe Systeme • Datei Transfer
  2. Wat? Observability => Die Fähigkeit unsere laufende Software zu beobachten

    Unsere Fragen: • Was macht unsere Anwendung (Auslastung) • Wie ist es zu einen Zustand gekommen • Was ist seit wann kaputt • Korrelationen? (Mehr CPU-Verbrauch mit neuer Version) • Trends (Lastspitzen, Memoryleaks)
  3. Wat? • Logs: (un)struckturierte Anwendung-Events • Startup Nachricht, Exceptions, Fachliche

    Events • Metriken: aggregierte Zahlenreihen / Messwerte • CPU/Memory Verbrauch, Antwortzeiten • Alerts • Trace: Repräsentation von kausal zusammenhängenden verteilten Events A log is an event that happened and a metric is a measurement of the health of a system. [Sridharan]
  4. Wat? Verwirrend, da; • Logs gleichgesetzt mit Technik (z.B. StdOut,

    /var/log/*) • Metrikwerte & CorrelationIds in Logeinträge Traces and metrics are an abstraction built on top of logs that pre- process and encode information along two orthogonal axes, one being request-centric (trace), the other being system-centric (metric). [Sridharan]
  5. Wat? Warum nicht nur Log-Aggregierung? • unstrukturiert & uneinheitlich •

    Ad-Hoc Abfragen stark beschränkt • Nicht alle Metriken aus Events ableitbar (periodic, system-level measurements) • Skaliert nicht • Reaggregationen oft nicht Sinnvoll (p99 mehrerer Instanzen) Text Logs: eingesammelt => aggregiert Messwerte: aggregiert => eingesammelt
  6. Prometheus • Pull-Basierter Metrik-Collector • Einzel-Instanz TSDB (Timeseries Database) •

    Ausgelegt für Mio. Datenreihen • ~1.x Byte pro Datenpunkt • Beispiel Anwendung: 6 Wochen, ~1E10 Datenpunkte, 5GB, 20K Datenreihen • Querysprache • Alerting System • Differenzieren zwischen API / Anwendung • OpenTelemetry • Alternative Backends (z.B. Cortex, Thanos), Caches usw.
  7. Prometheus • de facto Metrikformat => Framework/Library/Tool support • Multidimensional

    (z.B. HTTP Method, Service, Datacenter) • Aggregierungen über Dimensionen/Zeitfenster beim Abfragezeitpunkt • Advanced Alerting System • Alerts filtern • Child/Parent beziehungen • Silence • Unterschiedliche Notification Möglichkeiten (Email, SMS, Telegram, Rocketchat, …)
  8. Jaeger • Verteilt globale Trace-Ids (vgl. Correlation ID) und sammelt

    erzeugte Traces • Agent, Collector, Query, Graph + Datenbank • OpenTelemetry • Funktioniert über weiterreichen von Header (HTTP, Kafka, …) • Sampling der Traces • Integriert in Service Meshes wie Istio • Basiert auf instrumentierung von Anwendungs Libraries (z.B. Proxy JdbcConnection)
  9. Was muss man aufsetzten • Prometheus • Exporter (z.B. für

    Elastic, Kafka) • Einsatz von Micrometer • wie Slf4J für Logs • default vieler Frameworks, z.B. Spring Boot • Prometheus Instanz betreiben Konfigurieren • Jaeger • Header weiterreichen • Libraries Instrumentieren (ggf. mit Java Agent) • Jaeger + Datenbank betreiben Beides wird von Rancher bereitgestellt