{"id":13561843,"url":"https://github.com/yahoo/kubectl-flame","last_synced_at":"2025-12-15T18:25:21.630Z","repository":{"id":37350787,"uuid":"287330410","full_name":"yahoo/kubectl-flame","owner":"yahoo","description":"Kubectl plugin for effortless profiling on kubernetes","archived":false,"fork":false,"pushed_at":"2024-01-18T20:15:05.000Z","size":88,"stargazers_count":808,"open_issues_count":36,"forks_count":97,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-03T15:11:12.178Z","etag":null,"topics":["docker","golang","hacktoberfest","java","kubernetes","performance"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yahoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"Contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"Code-of-Conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-13T16:36:06.000Z","updated_at":"2025-03-18T04:10:30.000Z","dependencies_parsed_at":"2024-01-14T03:40:34.587Z","dependency_job_id":"dbb6274b-d961-4b91-ba35-77c119b2125a","html_url":"https://github.com/yahoo/kubectl-flame","commit_stats":null,"previous_names":["verizonmedia/kubectl-flame"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2Fkubectl-flame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2Fkubectl-flame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2Fkubectl-flame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2Fkubectl-flame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yahoo","download_url":"https://codeload.github.com/yahoo/kubectl-flame/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248590501,"owners_count":21129829,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","golang","hacktoberfest","java","kubernetes","performance"],"created_at":"2024-08-01T13:01:01.917Z","updated_at":"2025-04-12T15:37:14.527Z","avatar_url":"https://github.com/yahoo.png","language":"Go","readme":"# kubectl flame :fire:\n\nA kubectl plugin that allows you to profile production applications with low-overhead by generating\n[FlameGraphs](http://www.brendangregg.com/flamegraphs.html)\n\nRunning `kubectlf-flame` does **not** require any modification to existing pods.\n## Table of Contents\n\n- [Requirements](#requirements)\n- [Usage](#usage)\n- [Installing](#installing)\n- [How it works](#how-it-works)\n- [Contribute](#contribute)\n- [Maintainers](#maintainers)\n- [License](#license)\n\n## Requirements\n* Supported languages: Go, Java (any JVM based language), Python, Ruby, and NodeJS\n* Kubernetes cluster that use Docker as the container runtime (tested on GKE, EKS and AKS)\n\n## Usage\n### Profiling Kubernetes Pod\nIn order to profile a Java application in pod `mypod` for 1 minute and save the flamegraph as `/tmp/flamegraph.svg` run:\n```shell\nkubectl flame mypod -t 1m --lang java -f /tmp/flamegraph.svg\n```\n### Profiling Alpine based container\nProfiling Java application in alpine based containers require using `--alpine` flag:\n```shell\nkubectl flame mypod -t 1m -f /tmp/flamegraph.svg --lang java --alpine\n```\n*NOTICE*: this is only required for Java apps, the `--alpine` flag is unnecessary for Go profiling.\n\n### Profiling sidecar container\nPods that contains more than one container require specifying the target container as an argument:\n```shell\nkubectl flame mypod -t 1m --lang go -f /tmp/flamegraph.svg mycontainer\n```\n### Profiling Golang multi-process container\nProfiling Go application in pods that contains more than one process require specifying the target process name via `--pgrep` flag:\n```shell\nkubectl flame mypod -t 1m --lang go -f /tmp/flamegraph.svg --pgrep go-app\n```\nJava profiling assumes that the process name is `java`. Use `--pgrep` flag if your process name is different.\n\n### Profiling on clusters running containerd\n\nTo run this tool on Kubernetes clusters that use containerd as the runtime engine, you must specify the path to the containerd runtime files:\n\n```shell\nkubectl flame mypod -t 1m --docker-path /run/containerd\n```\n\n## Installing\n\n### Krew\n\nYou can install `kubectl flame` using the [Krew](https://github.com/kubernetes-sigs/krew), the package manager for kubectl plugins.\n\nOnce you have [Krew installed](https://krew.sigs.k8s.io/docs/user-guide/setup/install/) just run:\n\n```bash\nkubectl krew install flame\n```\n\n### Pre-built binaries\nSee the release page for the full list of pre-built assets.\n\n## How it works\n`kubectl-flame` launch a Kubernetes Job on the same node as the target pod.\nUnder the hood `kubectl-flame` use [async-profiler](https://github.com/jvm-profiling-tools/async-profiler) in order to generate flame graphs for Java applications. \nInteraction with the target JVM is done via a shared `/tmp` folder.\nGolang support is based on [ebpf profiling](https://en.wikipedia.org/wiki/Berkeley_Packet_Filter).\nPython support is based on [py-spy](https://github.com/benfred/py-spy).\nRuby support is based on [rbspy](https://rbspy.github.io/).\nNodeJS support is based on [perf](https://perf.wiki.kernel.org/index.php/Main_Page). In order for Javascript Symbols to be resolved, node process needs to be run with `--perf-basic-prof` flag.\n\n## Contribute\nPlease refer to [the contributing.md file](Contributing.md) for information about how to get involved. We welcome issues, questions, and pull requests.\n\n## Maintainers\n- Eden Federman: efederman@verizonmedia.com\n\n## License\nThis project is licensed under the terms of the [Apache 2.0](LICENSE-Apache-2.0) open source license. Please refer to [LICENSE](LICENSE) for the full terms.\n","funding_links":[],"categories":["Go","golang"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahoo%2Fkubectl-flame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyahoo%2Fkubectl-flame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahoo%2Fkubectl-flame/lists"}