Прод встал колом по CPU, а перезапускать поды нельзя — знакомая история. Обычно дальше начинается танец с ephemeral containers и пересборкой образа с профайлером внутри.
Google выложил app-toolbox — кастомную сборку штатного COS Toolbox образа для хостов на Container-Optimized OS (ноды GKE, обычные GCE VM), которая снимает профили с живых контейнеров, ничего не перезапуская:
- Java — JFR через jattach, zero-copy, работает даже с read-only ФС контейнера
- Python — py-spy с --nonblocking и --idle
- Golang — on-CPU профилирование через bpftrace
- Node.js — off-CPU профилирование на eBPF
- системная диагностика: biolatency, tcpretrans, offcputime в CO-RE варианте, то есть без kernel headers
Всё это заворачивается интерактивным скриптом app-collector, результат складывается в .tar.xz с SHA-256.
Идеи и бинари можно переиспользовать для собственной реализации в рамках своего окружения ;)
Google выложил app-toolbox — кастомную сборку штатного COS Toolbox образа для хостов на Container-Optimized OS (ноды GKE, обычные GCE VM), которая снимает профили с живых контейнеров, ничего не перезапуская:
- Java — JFR через jattach, zero-copy, работает даже с read-only ФС контейнера
- Python — py-spy с --nonblocking и --idle
- Golang — on-CPU профилирование через bpftrace
- Node.js — off-CPU профилирование на eBPF
- системная диагностика: biolatency, tcpretrans, offcputime в CO-RE варианте, то есть без kernel headers
Всё это заворачивается интерактивным скриптом app-collector, результат складывается в .tar.xz с SHA-256.
Идеи и бинари можно переиспользовать для собственной реализации в рамках своего окружения ;)