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

Implementing Observability Practices on Kubernetes

Implementing Observability Practices on Kubernetes

Che-Wei Lin (johnlin)
LINE Taiwan / SRE / Site Reliability Engineer
Jun-Wei Wan
LINE Taiwan / SRE / Site Reliability Engineer

https://linedevday.linecorp.com/2021/ja/sessions/25
https://linedevday.linecorp.com/2021/en/sessions/25
https://linedevday.linecorp.com/2021/ko/sessions/25

LINE DEVDAY 2021

November 11, 2021
Tweet

More Decks by LINE DEVDAY 2021

Other Decks in Technology

Transcript

  1. Speakers - Site Reliability Engineer @ LINE Taiwan - SRE

    Team - Loves Linux Networking, Distributed Systems & Open Source Che Wei Lin a.k.a johnlin - Site Reliability Engineer @ LINE Taiwan - SRE Team - A Gopher, interested in Kubernetes and Severless Sometimes contribute Open Source project. Wei
  2. Agenda - Traditional Monitoring Practices & Background - Overview of

    Observability Platform - Adoption Status & Current Practices - Challenges of Adoption - Sharing Use Cases
  3. Current (K8s) Adoption Status October 2021 Projects +100% 20 40

    K8s Clusters +40% 50 70 App Configs +500% 130 650+
  4. Background Verda Infrastructure - Verda is a private cloud service

    for LINE - VKS : Verda Kubernetes Service - VES : Verda Elasticsearch Service - VOS : Verda Object Storage - Most application teams use in-house service VKS for hosting applications
  5. Traditional Monitoring Practice Traditional Approaches - Prometheus long-term storage problem

    (ex: 6 months metrics) - Each team may have their own Grafana dashboards cause redundant works For Self-hosting Prometheus, Grafana For Self-hosting ELK stack - Need an expert in ELK stack to manage the performance and indices Build-in LogSender & Prometheus is Not Enough - Logs: Collect container logs with Fluentd and send to Verda Elasticsearch Service (VES) - Metrics: Prometheus monitor cluster level - Traces: Few teams adopt Zipkins for distributed request tracing
  6. Observability Platform Goal of Observability Platform - Use the same

    data sources and dashboards to discuss the behavior of events - The process of importing indicators into the application is the same and experience can be shared - Reduce communication costs caused by differences in tools Pooling of system knowledge for organization Everyone Uses Same Tools & Dashboards - Managed single Grafana instance with multiple organizations for all projects - Provides integrated logs, metrics, and tracing data sources - Built-in common used dashboards
  7. Grafana Loki Bucket / {Tenant ID} Grafana Promtail {Tenant ID:

    A} Workloads Loki Verda Object Storage Promtail {Tenant ID: B} Workloads Verda Network Node Node Node Node Node Node Node Node Node LogQL {Tenant ID} Observability Cluster Project A VKS Cluster Project B VKS Cluster logs logs Read Write Write Write
  8. Prometheus & Thanos っっっっっz Thanos Query B Promtheus + Thanos

    Thanos Query Verda Network Node Node Node Node Node Node Node Node Node Observability Cluster Project A VKS Cluster Project B VKS Cluster Promtheus + Thanos Thanos Query Thanos Query z Thanos Query A Grafana Verda Object Storage Bucket A Bucket B Thanos Store Thanos Store PromQL Thanos Query Read Read
  9. Grafana Tempo & OpenTelemetry Collector Open Telemetry Collector A Pod

    with Jaeger sidecar Verda Network Node Node Node Node Node Node Node Node Node Observability Cluster Project A VKS Cluster Project B VKS Cluster Open Telemetry Collector Open Telemetry Collector B Grafana Bucket / {Tenant ID} Verda Object Storage Kafka Tempo API/SDK/Exporters Pod with Jaeger sidecar Open Telemetry Collector API/SDK/Exporters Write Read Read Write Write Read
  10. Storage Usage Telemetry Data 20M Objects Logs 30 TB 360K

    Objects Metrics 60 TB 1M Objects Traces 20 TB
  11. Managed Ingress Controller Traefik Kubernetes Ingress Provider - Automatically installed

    for clusters for each project - Parts of observability platform: integrated sidecar for collecting traces and expose metrics - Traefik as a Kubernetes ingress provider
  12. Managed Ingress Controller Open Telemetry Collector B Ingress Controller Traefik

    Verda Network Node Node Node Node Node Node Node Node Node Observability Cluster Project A VKS Cluster Project B VKS Cluster Open Telemetry Collector A Jaeger sidecar Ingress Controller Traefik Jaeger sidecar Verda LB Network Traffic Verda LB Network Traffic Open Telemetry Collector Open Telemetry Collector Write Write
  13. Adoption Status Observability Platform Project Adopted LINE SPOT LINE Shopping

    LINE Travel LINE HUB LINE MUSIC TW LINE TODAY OAPLUS Sticker TW
  14. Adoption Status Statistics of Data Sources 0 5 10 15

    20 25 30 35 40 MySQL Elasticsearch InfluxDB Grafana Tempo Grafana Loki Prometheus
  15. Adoption Status Statistics of Telemetry Data 40B+ / week Log

    Lines 300M / h Metric Series 16M 20B+ / week Trace Spans 200M / h hourly, weekly
  16. Current Practices: Telemetry Data - Logs: A record of an

    event that happened within an application - Metrics: Numerical representation of data. Determine a service or component’s overall behavior over time - Traces: The entire path of a request as it moves through all the nodes of a distributed system Exemplars Split view with labels Metric queries Span metrics processor Trace to logs Followed Trace ID Metrics Traces Logs
  17. Challenges of Adoption Challenges of Adopting from Application Team Introducing

    new languages (LogQL, PromQL) Instrumenting for metrics & tracing may require retrofitting existing infrastructure
  18. How to deal with these challenges Built-in Default Dashboards on

    Grafana - Blackbox/Uptime Dashboards - Kubernetes Events/Deployment/Jobs - Traefik Latency/QPS Dashboards
  19. How to deal with these challenges Provide managed ingress controller

    which already export metrics & traces Out of the box feature Built-in TLS certificates & Traefik common middlewares Integrated structure log, tracing agent and exposed metrics
  20. Use Case #1 Interactive Observation with Different Indicators Received Alerts

    from Slack Check metrics time range to locate logs Inspect logs Use LogQL to calculate the average elapsed time Metrics Logs Log Metrics Query Alerts
  21. Metric Queries LogQL to Calculate the Average Elapsed Time -

    Elapsed time peaks in the specific pod - Check the last request before restart
  22. Use Case #2 Interactive Observation with Different Indicators Find out

    500 error from metrics Link to corresponding access logs Open trace viewer for a request Jump to application logs in span of trace Logs Traces Logs Metrics
  23. Roadmap Next Steps Error Tracking Sentry Web Vitals Metrics to

    Traces Prometheus with Exemplars Logs Grafana Loki with Promtail Traces to Metrics OpenTelemetry Collector with Span Metrics Processor Traces Grafana Tempo with OpenTelemetry Collector Metrics Prometheus with Thaons
  24. Summary - Observability platform brings a consolidated dashboard and pooling

    of system knowledge across organization - Current observability practices speed up for teams to achieve actionable insights from data - Traditional monitoring practices are not enough for teams debugging in a distributed system Key Takeaways - Adoption challenges, experience sharing and use cases sharing