{"id":15190174,"url":"https://github.com/chentao-kernel/spycat","last_synced_at":"2025-10-27T13:30:34.376Z","repository":{"id":232168784,"uuid":"720314925","full_name":"chentao-kernel/spycat","owner":"chentao-kernel","description":" An eBPF kernel Observable Agent To Spy Performance Issue On OS.","archived":false,"fork":false,"pushed_at":"2024-10-27T16:25:52.000Z","size":5153,"stargazers_count":9,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-30T08:03:38.760Z","etag":null,"topics":["bcc","ebpf","exporter","go","kernel","libbpf","metrics","observer"],"latest_commit_sha":null,"homepage":"","language":"C","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/chentao-kernel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2023-11-18T05:10:17.000Z","updated_at":"2024-09-11T02:07:29.000Z","dependencies_parsed_at":"2024-11-13T10:23:11.437Z","dependency_job_id":"9ae0ad84-91e6-4e50-b595-1aadc22a01d8","html_url":"https://github.com/chentao-kernel/spycat","commit_stats":null,"previous_names":["chentao-kernel/spycat"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chentao-kernel%2Fspycat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chentao-kernel%2Fspycat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chentao-kernel%2Fspycat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chentao-kernel%2Fspycat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chentao-kernel","download_url":"https://codeload.github.com/chentao-kernel/spycat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238497658,"owners_count":19482295,"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":["bcc","ebpf","exporter","go","kernel","libbpf","metrics","observer"],"created_at":"2024-09-27T20:05:38.498Z","updated_at":"2025-10-27T13:30:34.371Z","avatar_url":"https://github.com/chentao-kernel.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=center\u003e \u003cimg src=\"doc/logo.png\" width = \"30%\" height=\"30%\" /\u003e \u003c/div\u003e\nAn eBPF observable agent to solve os performance issue in kernel or app like bcc tool.\nThese tools developed refer to bcc which are really useful for solving os issue and some\nnew feature added.\n* support more kernel version\n* support data store with third-party database\n* ...\n\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/chentao-kernel/spycat)](https://github.com/chentao-kernel/spycat/releases)\n[![Go Report Card](https://goreportcard.com/badge/github.com/chentao-kernel/spycat)](https://goreportcard.com/report/github.com/chentao-kernel/spycat)\n[![License](https://img.shields.io/github/license/chentao-kernel/spycat)](https://github.com/chentao-kernel/spycat/blob/main/LICENSE)\n\n----\n\n* [Compoents](#Components)\n* [Feature](#Feature)\n* [Quick Start](#Quick-Start)\n* [OS Support](#OS-Support)\n* [License](#License)\n* [Thanks](#Thanks)\n\n## Components\n\u003cdiv align=center\u003e \u003cimg src=\"doc/spycat.png\" width = \"60%\" height=\"60%\" /\u003e \u003c/div\u003e\n\n## Feature List\n### Tool List\n#### cpu subsystem\n- [X] `oncpu`\ncontinus profiling to detect cpu burst issue, data can be stored in pyroscope\n- [X] `offcpu`\ndetect task scheduling not timely issue, like web app timeout etc.\n- [X] `futexsnoop`\ndetect multitasking lock contention issue\n#### mem subsystem\n#### io subsystem\n#### net subsystem\n\n### Exporter List\n- [X] tmerminal\n- [X] local storage\n- [X] loki\n- [X] pyroscope\n- [ ] influxdb\n- [ ] prometheus\n\n## Quick Start\n### How to build\nYou can use docker/build.sh to build in a container.\n```\nusage: ./args.sh [-h|--help -b|--build -c|--compile -t|--tar -V|--bin_ver]\n        -b              build image\n        -c              compile\n        -t              tar binary\n        -V 0.1.2 -t     tar binary with 0.1.2 version\n```\n### How to run\n##### tool list help\n```\nSUBCOMMANDS\n  completion  generate the autocompletion script for the specified shell\n  futexsnoop  eBPF snoop user futex\n  help        Help about any command\n  offcpu      eBPF offcpu profiler\n  oncpu       eBPF oncpu sampling profiler\n  version     Print spycat version details\nFLAGS         DEFAULT VALUES\n  --help     false\n    help for spycat\n  --version  false\nRun 'Spycat SUBCOMMAND --help' for more information on a subcommand.\n```\n##### futexsnoop for example\n```\nsudo ./spycat futexsnoop -h\nFLAGS                     DEFAULT VALUES\n  --app-name             \n    application name used when uploading profiling data\n  --help                 false\n    help for futexsnoop\n  --log-level            info\n    log level: debug|info|warn|error\n  --max-dur-ms           1000000\n    max time(ms) wait unlock\n  --max-lock-hold-users  100\n    max users hold the same lock\n  --min-dur-ms           1000\n    min time(ms) wait unlock\n  --pid                  0\n    pid to trace, -1 to trace all pids\n  --stack                false\n    get stack info or not\n  --symbol-cache-size    256\n    max size of symbols cache\n  --target-lock          0\n    target lock addr\n  --tid                  0\n    tid to trace, -1 to trace all tids\n```\n### How to develop\n## Os Support\n#### x86\n| OS     | version |\n|--------------|------------|\n|Ubuntu|18.04,20.04,22.04,24.04|\n|Centos|centos8|\n|OpenEuler||\n|Anolis||\n\n#### arm64\n| OS     | version |\n|--------------|------------|\n|Ubuntu|18.04,20.04,22.04,24.04|\n|Centos||\n|OpenEuler||\n|Anolis||\n## License\nspycat is distributed under [Apache License, Version2.0]\n## Acknowledgements\nThis project makes use of the following open source projrces:\n- [kindling](https://github.com/KindlingProject/kindling) Under the Apache License 2.0\n- [pyroscope](https://github.com/grafana/pyroscope) Under the Apache License 3.0\n- [libbpfgo](https://github.com/aquasecurity/libbpfgo) Under the Apache License 2.0\n- [bcc](https://github.com/iovisor/bcc) Under the Apache License 2.0\n* ...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchentao-kernel%2Fspycat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchentao-kernel%2Fspycat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchentao-kernel%2Fspycat/lists"}