A story about debugging of one Go application
summary
Debugging a Go CSI driver for Kubernetes uses concrete observability: initially add gRPC trace interceptors to see per-request spans, then switch to metrics when traces lack history, instrument with Prometheus+Grafana and add many domain metrics; centralize JSON logs into the ELK stack and enable a runtime log level toggle via SIGUSR1. Metrics point to a slow “publish volume to node” handler, logs show repeated mount errors "no such file or directory" caused by a cleanup race and retries, and increasing timeouts fixes the regression.
AI-written summary · about
chapters (12)
- 0:00Introduction
- 3:08What is CSI driver
- 6:39CSI driver development challenges
- 10:11Performance degradation problem
- 15:46Tracing with OpenTelemetry
- 17:32Metrics with Prometheus
- 20:44Dynamic log management
- 22:53Centralized log storage
- 25:27Solution and results
- 27:55Alternative debugging tools
- 28:16Remote debugging in Go
- 31:53Q&A
related talks
01h 00mDebug like a pro on Kubernetes
40mDebugging in Golang Apps Inside K8s Environment
31mDebugging Go: from zero to Kubernetes - Michele Caci
30mStreamlined Troubleshooting in Kubernetes
01h 32mTutorial: Debug Your Kubernetes Apps
24mDebugging at Scale in Production - Deep into your Containers
50mTroubleshooting & Debugging Microservices in Kubernetes
29mWhen Kubernetes Misbehaves – Pitfalls and Lessons Learned
