All Projects → VerizonMedia → Kubectl Flame

VerizonMedia / Kubectl Flame

Licence: apache-2.0
Kubectl plugin for effortless profiling on kubernetes

Programming Languages

java
68154 projects - #9 most used programming language
go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Kubectl Flame

React Esi
React ESI: Blazing-fast Server-Side Rendering for React and Next.js
Stars: ✭ 537 (+80.81%)
Mutual labels:  hacktoberfest, performance
Goldiloader
Just the right amount of Rails eager loading
Stars: ✭ 1,074 (+261.62%)
Mutual labels:  hacktoberfest, performance
Sinuous
🧬 Light, fast, reactive UI library
Stars: ✭ 740 (+149.16%)
Mutual labels:  hacktoberfest, performance
Ava
Node.js test runner that lets you develop with confidence 🚀
Stars: ✭ 19,458 (+6451.52%)
Mutual labels:  hacktoberfest, performance
Easyengine
Command-line control panel for Nginx Server to manage WordPress sites running on Nginx, PHP, MySQL, and Let's Encrypt
Stars: ✭ 1,881 (+533.33%)
Mutual labels:  hacktoberfest, performance
Guider
Performance Analyzer
Stars: ✭ 393 (+32.32%)
Mutual labels:  hacktoberfest, performance
Lozad.js
🔥 Highly performant, light ~1kb and configurable lazy loader in pure JS with no dependencies for responsive images, iframes and more
Stars: ✭ 6,932 (+2234.01%)
Mutual labels:  hacktoberfest, performance
Guess
🔮 Libraries & tools for enabling Machine Learning driven user-experiences on the web
Stars: ✭ 6,762 (+2176.77%)
Mutual labels:  hacktoberfest, performance
Hawktracer
HawkTracer is a highly portable, low-overhead, configurable profiling tool built in Amazon Video for getting performance metrics from low-end devices.
Stars: ✭ 108 (-63.64%)
Mutual labels:  hacktoberfest, performance
Packagephobia
⚖️ Find the cost of adding a new dependency to your project
Stars: ✭ 1,110 (+273.74%)
Mutual labels:  hacktoberfest, performance
Predator
A powerful open-source platform for load testing APIs.
Stars: ✭ 356 (+19.87%)
Mutual labels:  hacktoberfest, performance
Fiber
⚡️ Express inspired web framework written in Go
Stars: ✭ 17,334 (+5736.36%)
Mutual labels:  hacktoberfest, performance
Wipe Modules
🗑️ Easily remove the node_modules folder of non-active projects
Stars: ✭ 304 (+2.36%)
Mutual labels:  hacktoberfest, performance
Bigcache
Efficient cache for gigabytes of data written in Go.
Stars: ✭ 5,304 (+1685.86%)
Mutual labels:  hacktoberfest, performance
Hint
💡 A hinting engine for the web
Stars: ✭ 3,280 (+1004.38%)
Mutual labels:  hacktoberfest, performance
Phpspy
Low-overhead sampling profiler for PHP 7+
Stars: ✭ 1,105 (+272.05%)
Mutual labels:  hacktoberfest, performance
K6
A modern load testing tool, using Go and JavaScript - https://k6.io
Stars: ✭ 14,829 (+4892.93%)
Mutual labels:  hacktoberfest, performance
Front End Performance Checklist
🎮 더 빠르게 작동하는 프론트엔드 성능 체크리스트
Stars: ✭ 183 (-38.38%)
Mutual labels:  hacktoberfest, performance
Awesome Frameworkless
A collection of awesome things regarding Frameworkless
Stars: ✭ 293 (-1.35%)
Mutual labels:  hacktoberfest
Buttercup Mobile
📱 React-Native mobile application for Buttercup
Stars: ✭ 297 (+0%)
Mutual labels:  hacktoberfest

kubectl flame 🔥

A kubectl plugin that allows you to profile production applications with low-overhead by generating FlameGraphs

Running kubectlf-flame does not require any modification to existing pods.

Table of Contents

Requirements

  • Supported languages: Go, Java (any JVM based language), Python and Ruby
  • Kubernetes cluster that use Docker as the container runtime (tested on GKE, EKS and AKS)

Usage

Profiling Kubernetes Pod

In order to profile a Java application in pod mypod for 1 minute and save the flamegraph as /tmp/flamegraph.svg run:

kubectl flame mypod -t 1m --lang java -f /tmp/flamegraph.svg

Profiling Alpine based container

Profiling Java application in alpine based containers require using --alpine flag:

kubectl flame mypod -t 1m -f /tmp/flamegraph.svg --lang java --alpine

NOTICE: this is only required for Java apps, the --alpine flag is unnecessary for Go profiling.

Profiling sidecar container

Pods that contains more than one container require specifying the target container as an argument:

kubectl flame mypod -t 1m --lang go -f /tmp/flamegraph.svg mycontainer

Profiling Golang multi-process container

Profiling Go application in pods that contains more than one process require specifying the target process name via --pgrep flag:

kubectl flame mypod -t 1m --lang go -f /tmp/flamegraph.svg --pgrep go-app

Java profiling assumes that the process name is java. Use --pgrep flag if your process name is different.

Installing

Krew

You can install kubectl flame using the Krew, the package manager for kubectl plugins.

Once you have Krew installed just run:

kubectl krew install flame

Pre-built binaries

See the release page for the full list of pre-built assets.

How it works

kubectl-flame launch a Kubernetes Job on the same node as the target pod. Under the hood kubectl-flame use async-profiler in order to generate flame graphs for Java applications. Interaction with the target JVM is done via a shared /tmp folder. Golang support is based on ebpf profiling. Python support is based on py-spy. Ruby support is based on rbspy.

Contribute

Please refer to the contributing.md file for information about how to get involved. We welcome issues, questions, and pull requests.

Maintainers

License

This project is licensed under the terms of the Apache 2.0 open source license. Please refer to LICENSE for the full terms.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].