cx-service-catalog
coralogix/cx-cli
Query Coralogix Service Catalog to discover and analyze APM entities—services, databases, operations, pods, and JVMs.
What is cx-service-catalog?
This skill provides CLI commands to explore and query Coralogix's Service Catalog (APM v2 entities). Use it when you need to list services, check entity types, retrieve schemas, or pull aggregated or timeseries metrics like latency, error rates, and resource usage across services, databases, operations, JVMs, and Kubernetes pods.
- List available entity types (services, databases, operations, JVMs, K8s pods, transactions) in your account
- Inspect schema for any entity type to discover valid columns, filterable labels, and groupable labels
- List known entities of a given type (e.g., all service names)
- Query aggregated metrics across all entities of a type with filtering, grouping, sorting, and limits
- Drill down into individual entity data with timeseries or aggregated results
How to install cx-service-catalog
npx skills add https://github.com/coralogix/cx-cli --skill cx-service-catalog- Coralogix account with APM v2 (Service Catalog) enabled
- cx-cli installed and authenticated with valid Coralogix credentials
How to use cx-service-catalog
- 1.Run `cx service-catalog entity-types -o json` to discover what entity types exist in your account
- 2.Run `cx service-catalog schema <entity-type> -o json` to see available columns and filterable/groupable labels for that type
- 3.Run `cx service-catalog entities <entity-type> -o json` to list known entity names (e.g., service names)
- 4.Run `cx service-catalog data <entity-type> --start now-1h --end now --column <column-id> -o json` to query aggregated metrics
- 5.Optionally add `--filter`, `--group-by`, `--sort-column`, `--limit`, or `--aggregation timeseries` to refine results
- 6.For a single entity, use `cx service-catalog entity-data <entity-type> <entity-id> --start now-1h --end now --column <column-id> -o json`
Use cases
- Find the top 5 services by latency or error rate in the last hour
- Compare resource usage across Kubernetes pods and identify memory saturation
- Track service latency trends over 24 hours for a specific service
- Filter database operations by label and group results by operation type
- Discover which entity types have data in your account before querying
- DevOps engineers monitoring application performance
- SREs investigating service health and resource usage
- Platform engineers exploring APM entity relationships and metrics
- Developers debugging service latency and error rates
cx-service-catalog FAQ
Run `cx service-catalog schema <entity-type> -o json` first. This returns all valid column ids, filterable labels, and groupable labels for that entity type. Columns vary by account and entity type.
No. Column ids are per-entity-type. Always run `schema` again when switching entity types, as a column valid for `service` may not exist for `k8s-pod`.
`data` returns aggregated or timeseries results across all entities of a type (optionally filtered/grouped). `entity-data` drills down into one named entity. Use `entities` to get valid entity ids for the drilldown.
No. Table sorting and limits only work with `--aggregation table` (the default). The CLI rejects that combination up front rather than sending a request whose flags are silently ignored.
Use commas: `--filter label=value1,value2`. Repeating the same label flag is rejected. To filter across different labels, repeat the `--filter` flag for each distinct label.
Full instructions (SKILL.md)
Source of truth, from coralogix/cx-cli.
name: cx-service-catalog
description: >
Query Coralogix's Service Catalog (APM v2 entities) with the cx service-catalog
CLI — discover entity types, list known entities, check their schema, and pull
aggregated or timeseries data for services, databases, operations, JVMs, and
Kubernetes pods. Use when the user asks to "list services", "what entity types
exist", "show me service latency", "check error rate for a service",
"which pods are using the most memory", "database operation performance",
"JVM GC pauses", "service health over time", "compare services by latency",
"what columns are available for this entity type", "service catalog schema",
or wants to explore APM entities and their metrics.
metadata:
version: "0.1.0"
Service Catalog Skill
Use this skill to discover and query Service Catalog entities — services, databases, operations, database operations, JVMs, JVM GC, Kubernetes pods, and transactions — and their columnar metrics (latency, error rate, health, resource usage, etc.) via the v2 Service Catalog API.
CLI Commands
| Command | Purpose | Key flags |
|---|---|---|
cx service-catalog entity-types | List entity types this account has data for | - |
cx service-catalog schema <entity-type> | Columns/labels schema for one entity type | - |
cx service-catalog entities <entity-type> | Known entities of one type (e.g. service names) | - |
cx service-catalog data <entity-type> | Aggregated column data across every entity of a type | --start, --end, --column (required, repeatable); --group-by, --filter, --aggregation, --limit, --sort-column, --sort-order |
cx service-catalog entity-data <entity-type> <entity-id> | Column data for one named entity (drilldown) | --start, --end, --column (required, repeatable); --group-by, --filter, --aggregation |
- All commands are read-only and support
-o json/-o toonfor structured output. - Entity type accepts short forms:
service,database,operation,database-operation,jvm,jvm-gc,k8s-pod,transaction(case-insensitive, hyphens or underscores). The full proto name (ENTITY_TYPE_K8S_POD) also works. Unknown values are rejected client-side before any request is made. --start/--endacceptnow,now-1h-style relative expressions, or RFC3339 timestamps.--columnis required and repeatable — discover valid column ids withcx service-catalog schema <entity-type>first; the API rejects unknown ones.--filter label=value1,value2is repeatable across distinct labels only (filters AND together); combine multiple values for the same label with commas rather than repeating the flag — repeating a label is rejected client-side.--aggregationistable(default behavior when combined with--limit/--sort-column/--sort-order) ortimeseries.--limit,--sort-column, and--sort-orderonly apply totable— the backend silently ignores them fortimeseries, so the CLI rejects that combination up front rather than sending a request whose flags are quietly dropped.entity-datapercent-encodes the entity id for you — pass it as returned byentities(e.g.checkout/api), quoted if it contains/.
Inspection Workflow
Four steps, and only because each one supplies an input the next one requires:
entity-types gives valid <entity-type> values, schema gives valid
--column ids, entities gives the entity-id for a drilldown.
-
Discover what entity types exist — never guess, they vary by account:
cx service-catalog entity-types -o json -
Check the schema for one entity type to find valid column ids and filterable/groupable labels:
cx service-catalog schema service -o json -
List known entities of that type (e.g. service names):
cx service-catalog entities service -o json -
Query data — aggregated across all entities, or scoped to one. Column ids, filter/group-by labels, and entity ids below are placeholders — always substitute values returned by
schema/entitiesfor the entity type in question, they vary by account and entity type:cx service-catalog data <entity-type> --start now-1h --end now \ --column <column-id> --column <column-id> -o json cx service-catalog entity-data <entity-type> <entity-id> --start now-1h --end now \ --column <column-id> -o json
Examples
The commands below use service and k8s-pod for concreteness, but every
<column-id>, <filterable-label>, <groupable-label>, and <entity-id>
must come from that entity type's own schema/entities output — never
assume a column or label from one entity type exists on another.
Top 5 entities by a metric in the last hour
cx service-catalog schema service -o json # discover column ids first
cx service-catalog data service --start now-1h --end now \
--column <column-id> --aggregation table \
--sort-column <column-id> --sort-order desc --limit 5 -o json
Filter to one label value
cx service-catalog schema service -o json # discover filterable_labels first
cx service-catalog data service --start now-1h --end now \
--column <column-id> --column <column-id> \
--filter <filterable-label>=<value> -o json
Group by a label
cx service-catalog schema service -o json # discover groupable_labels first
cx service-catalog data service --start now-1h --end now \
--column <column-id> --group-by <groupable-label> -o json
Kubernetes pod resource saturation
cx service-catalog schema k8s-pod -o json # discover column ids first
cx service-catalog data k8s-pod --start now-1h --end now \
--column <column-id> --column <column-id> --column <column-id> -o json
Latency over time for one entity
cx service-catalog entities service -o json # discover entity ids first
cx service-catalog entity-data service <entity-id> --start now-24h --end now \
--column <column-id> --aggregation timeseries -o json
Just the rows
# Table responses live under .rows; timeseries under .series
cx service-catalog data service --start now-1h --end now \
--column <column-id> -o json | jq '.rows'
Key Principles
- Discover before querying —
entity-typesandschemaare cheap and answer "what's valid here" before spending adata/entity-datacall on a guess. --columnvalues are per-entity-type — a column valid forservicemay not exist fork8s-pod; always re-checkschemawhen switching entity types.- Malformed responses are errors, not silent empty results — a column that is neither a value nor an error (or both) fails loudly rather than producing a partial or empty row, so a non-zero exit means investigate, not "no data".
- A column-level error is not a command failure — an individual column can
come back as
{"error": "..."}inside an otherwise successful row (e.g. a query timeout for just that column); check per-column before assuming the whole request failed. tablevstimeseriesare mutually exclusive result shapes —tableresponses are flat rows suitable for-o json | jq '.rows';timeseriesresponses nest datapoints per series and are best consumed as raw JSON rather than forced into a table.- Use
-o jsonwithjqfor filtering; use-o toonfor token-efficient output in agent contexts. - Multi-profile fan-out works on every subcommand — repeat
-p <profile>to compare the same entity type/data across accounts; rows and series are tagged withprofilewhen more than one is given.
Related Skills
cx-infra— infrastructure resource health (hosts, containers) is a distinct concept from Service Catalog entity health; usecx-infrafor host/instance-level monitoring and this skill for application/service-level APM entities.cx-telemetry-querying— once a service or pod name surfaces from this skill's commands, pivot to raw telemetry:cx logs "filter $l.subsystemname == '<service>'"orcx search-fields "<name>" -s valueto find related log/span fields. Correlate a latency or error spike with the underlying logs/spans.cx-alerts—cx alerts list --name "<service-name>"finds alert definitions matching a service surfaced by this skill.cx-dashboards—cx dashboards search "<service-name> ..."finds dashboards built around a service found here.
Related skills
More from coralogix/cx-cli and the wider catalog.

cx-slos
Manage Coralogix SLO definitions—list, inspect health, and create/update/delete objectives.

cx-telemetry-querying
Query telemetry data across logs, metrics, traces, RUM, and APM to investigate issues and debug problems.

coralogix-docs
Search and read official Coralogix platform documentation with cx docs search and fetch.

cx-ai-center
Observe, evaluate, and guard GenAI/LLM applications—analyze behavior, manage policies, and track costs.

ab-test-setup
Design and run statistically valid A/B tests and build a continuous experimentation program.

ab-testing
Design and run statistically valid A/B tests and build a continuous experimentation program.