cx-profiling
Skill241 starsChanged 3 months agoApache-2.0View on GitHub
Query Coralogix continuous-profiling data with the `cx profiling` CLI — find which services use the most CPU or memory, which profile types a service has, what profiles can be filtered by, when usage spiked and which pod or version caused it, and which code paths and functions a service spends its CPU or memory on (flame graphs). Use when the user asks "which services use the most CPU", "top memory consumers", "what is service X spending CPU on", "hot functions", "flame graph for a service", "why is this service using so much CPU", "memory allocations by function", "CPU spike by pod", "which version increased CPU", "continuous profiling", "profiling data", or wants to explore profiles of a service. For how much CPU or memory a service or pod uses and whether it is saturated, use `cx-service-catalog` instead.
In this repository23 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- add-commandSkill
- add-skillSkill
- create-prSkill
- run-testsSkill
- coralogix-docsSkill
- cx-ai-centerSkill
- cx-alertsSkill
- cx-casesSkill
- cx-cliSkill
- cx-coding-agentsSkill
- cx-cost-optimizationSkill
- cx-dashboardsSkill
- cx-data-pipelineSkill
- cx-infraSkill
- cx-observability-setupSkill
- cx-ollySkill
- cx-platform-adminSkill
- cx-rum-setupSkill
- cx-search-dashboardSkill
- cx-service-catalogSkill
- cx-slosSkill
- cx-telemetry-queryingSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 21
Use this skill to answer continuous-profiling questions — which services burn the most CPU or memory, and which functions inside a service …
- Very specific: line 36
All commands are read-only and support -o json / -o toon.
- Very specific: line 37
Every command takes --start / --end (default now-1h / now): now, now-1h-style relative expressions, or ISO-8601 timestamps.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Profiling Skill
Use this skill to answer continuous-profiling questions — which services
burn the most CPU or memory, and which functions inside a service are
responsible — via the Coralogix profiling API. Requires the
profiles.cpu-profiles:Read permission.
CLI Commands
| Command | Purpose | Key flags |
cx profiling services | Profiled services ranked by CPU+wall seconds (cpu) or allocated+heap bytes (memory) | --category (required), --environment, --limit (default 20, max 100), --offset, --include-time-series |
cx profiling metadata <service> | A service's language and which profile types have data | - |
cx profiling filters <service> | Label keys a service's profiles can be filtered by, with their values | --profile-type (required), --filter, --max-values-per-key (default 50) |
cx profiling metrics <service> | One profile type's usage over time, split by service, pod, or any label; highest totals first | --profile-type (required), --sum-by (default service), --max-buckets (default 60), --limit (default 10), --filter |
cx profiling flame-graph <service> | Decoded flame graph plus the top functions by self value | --profile-type (required), --filter, --top-functions (default 20), --min-node-ratio (default 0.01), --max-depth, --show-kernel |
- All commands are read-only and support
-o json/-o toon. - Every command takes
--start/--end(defaultnow-1h/now):now,now-1h-style relative expressions, or ISO-8601 timestamps. --profile-typeis one ofcpu,wall,memory-allocation-bytes,memory-allocation-objects,memory-heap-bytes,memory-heap-objects(case-insensitive;MEMORY_HEAP_BYTESalso works). Checkmetadatafirst — only types withhas_data: truereturn anything.--filteris repeatable and filters AND together:key=v1,v2(any of the values),key!=v1,v2(none of them),key:exists,key:not-exists. Discover keys and values withfilters.services --environmentmatchesdeployment.environment.name; it is the only filter the services ranking honors.servicespages through the ranking: when a page is full the CLI prints the--offsetto use next. Time series are omitted unless--include-time-seriesis passed.flame-graphcan take ~40 s on large services; don't set a short--http-timeout.
Investigation Workflow
Find the heavy services (skip if the user named one):
cx profiling services --category cpu --limit 10 -o json cx profiling services --category memory --environment <env> --limit 10 -o jsonCheck which profile types exist for the service:
cx profiling metadata <service> -o jsonSee what you can filter or split by (pods, versions, environments, ...):
cx profiling filters <service> --profile-type cpu -o jsonFind when usage changed and who caused it — split by
podor a label key from step 3:cx profiling metrics <service> --profile-type cpu --sum-by pod --limit 5 -o json cx profiling metrics <service> --profile-type cpu --sum-by service.version --start now-24h -o jsonFind the code responsible — start with the top functions, then the tree:
cx profiling flame-graph <service> --profile-type cpu --top-functions 10 -o json | jq '.top_functions' cx profiling flame-graph <service> --profile-type cpu --filter k8s.pod.name=<pod> \ --min-node-ratio 0.05 --max-depth 20 -o json
Reading the Output
- Services:
cpurows carrytotal_cpu_seconds/total_wall_seconds;memoryrows carrytotal_memory_allocations_bytes/total_heap_bytes.last_activeis epoch seconds. - Metrics:
seriesis ranked bytotal(sum of the bucket totals) and trimmed to--limit;total_seriesis how many the server returned.unitisseconds,bytes, orobjectsdepending on the profile type. - Flame graph:
top_functionssums self value per function+file across the whole tree, so it is unaffected by tree trimming.treenodes carryfunction,file,line,self,total,self_percent,total_percent, andchildren(sorted by total, highest first).omitted_subtreescounts nodes dropped by--min-node-ratio/--max-depth. The server already prunes nodes under 0.1% of the total. Frames with no symbol show as their address orunknown.warnings(e.g.maxBytes) mean the server stopped reading profiles early, so the graph covers part of the range.
Key Principles
- Rank first, drill down second —
servicesandmetricsare cheap;flame-graphis the expensive call, so narrow the service, profile type, time range, and filters before asking for one. - Large trees are big — a deep stack (Java, Scala) can produce hundreds of
KB of JSON. Raise
--min-node-ratioor set--max-depthfor the tree, or read just.top_functions. - Self vs total — high
selfmeans the function itself is hot; hightotalwith lowselfmeans the cost is in what it calls. - Empty results are not errors — a service with no data for the chosen
profile type or range returns empty series or a zero-total graph; re-check
metadataand widen--start. - No profiling data — if
metadatashows no profile type withhas_data: true, the service is not profiled. Do not look for other service names: answer fromcx-service-catalogorcx-telemetry-querying(how much CPU or memory, when, which pod) and say that function-level detail needs profiling enabled for that service. - Multi-profile fan-out works on every subcommand: repeat
-p <profile>; results are tagged withprofilewhen more than one is given.
Related Skills
cx-service-catalog— RED metrics (latency, errors) for the same services; correlate a latency regression with a CPU spike found here.cx-telemetry-querying— pivot to logs, spans, or PromQL metrics for a service or pod surfaced by profiling (cx logs,cx spans,cx metrics).cx-infra— host and container health when a hot pod points to an infrastructure problem.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

