Cost Optimization Skill
Use this skill when investigating or reducing Coralogix data costs. It covers the full cost management lifecycle: measuring current spend, reviewing TCO policies, adjusting retention periods, and configuring archive storage for cold data.
CLI Commands
Key flags:
- All commands support
-o jsonfor structured output and-p <profile>for profile selection cx usage dailyaccepts--type processed-gbs|units|evaluation-tokensand--start/--endtime filterscx usage summaryaccepts--start/--endtime filterscx usage logs-countandcx usage spans-countaccept--start/--endtime filters, defaulting to the last 24h, plus--resolution(default1h),--subsystem-aggregation,--application-aggregation, and repeated--param KEY=VALUEfor API filter query params- Data usage summary and count endpoints are documented as newline-delimited JSON over
Accept: text/event-stream; the CLI handles that transport and normalizes count chunks into.result.logsCount[]or.result.spansCount[]. cx usage capabilitiesis the required first step: it returns the labels, measurements, units, and request limits that the public Data Usage Query API currently supports for the selected tenantcx usage queryis the required second step: submit only a JSON request derived from the immediately precedingcapabilitiesresponse with exactly one of--query '<json>'or--from-file <path>(--from-file -reads stdin)cx tco create/update,cx retentions update,cx archive logs set,cx archive metrics create/update/validateuse--from-file <path>(or-for stdin)
Authoritative Billable Usage Queries
For billable totals, quota units, plan consumption, or a supported usage breakdown, use this mandatory two-step workflow:
- Run
cx usage capabilitiesin the current session. - Build and run
cx usage queryusing only that response.
Do not call cx usage query first and do not guess labels, measurement kinds, units, filter values, intervals, or request limits. They are tenant-specific and can change.
Load references/data-usage-query-api.md [blocked] before creating the query body. It defines the capability and response schemas, valid interval forms, and limits.
Cost Investigation Workflow
Follow these steps to diagnose and reduce costs:
Step 1: Measure Current Usage
For billable totals, quota units, plan consumption, or supported breakdowns, first follow the mandatory two-step workflow above:
Build usage-query.json only from the immediately preceding capabilities response. Do not use the legacy commands below as a substitute for an authoritative billing answer.
For a legacy consumption overview and log/span record counts, use:
Identify which data types consume the most volume. Use jq to sort:
Step 2: Review TCO Policies
TCO policies control which logs go to Frequent Search (expensive, fast) vs. Archive (cheap, slower). Check if high-volume, low-value logs are on Frequent Search:
Step 3: Check Retention Settings
Long retention periods increase storage costs. Identify indices with unnecessarily long retention.
Step 4: Check Archive Configuration
Verify that archive storage is configured for cold data. If no archive is set up, that's a cost-saving opportunity.
Step 5: Recommend Optimizations
Based on findings, recommend changes in priority order (highest impact first).
Common Optimization Patterns
jq Examples
Usage Analysis
TCO Policy Analysis
Retention Review
Archive Status
Applying Changes
IMPORTANT: NEVER pass --yes without explicit user approval. All write operations across archive, TCO, and retentions require interactive confirmation and the --yes flag to execute non-interactively. Before executing any write operation, describe the exact change to the user and wait for their approval before passing --yes.
Read-only mode: Use --read-only (or CX_READ_ONLY=1) to safely explore cost data without risk of accidental writes. All query commands (usage, tco list/get, retentions list, archive get) work normally in read-only mode.
Agent mode: When running inside an AI agent, cx fails fast on write operations instead of hanging on a stdin prompt. Get user confirmation first, then re-run with --yes.
When modifying TCO policies, retention, or archive:
-
Template from existing: Get the current configuration as JSON, modify it, then apply:
-
Verify after changes: Re-run the diagnosis commands to confirm the change took effect.
-
TCO policy ordering matters: Use
cx tco reorder --from-fileto set priority order. Policies are evaluated top-to-bottom; the first match wins.
Metrics-Based Cost Analysis
The cx usage API gives summaries, but for billing-accurate analysis, anomaly detection, and breakdown by pillar/feature, query the customer metrics exporter via PromQL.
Key Metrics
Concept-to-Metric Mapping
- Billing / plan usage / consumption ->
cx_data_usage_units+cx_data_plan_units_per_day - Processed bytes / data volume ->
cx_data_usage_total - AI evaluation tokens ->
cx_data_usage_tokens_total - Metric samples ->
cx_data_usage_samples_total - Overage / PAYG ->
cx_data_usage_payg_units
Common PromQL Queries
UTC-Day Bucketing Rules
All usage metrics accumulate from UTC midnight and reset at 00:00 UTC:
- An instant query during the day returns "today so far"
- For completed-day totals, use the last sample before midnight
- Never subtract values across a UTC midnight boundary
- For weekly/monthly analysis, derive completed daily totals first, then roll up
- Exclude the current partial UTC day when computing trends or averages
Anomaly Detection
When investigating usage anomalies:
- Compare completed UTC days (exclude current partial day)
- Break down by:
measurement_type->pillar->entity_type->priority->feature_group_id->application_name->subsystem_name - Prefer same-weekday comparisons for seasonal traffic
- Use
cx_data_usage_unitsfor billing anomalies,cx_data_usage_totalfor volume anomalies
Breakdown Labels
Usage metrics support these grouping dimensions: pillar, entity_type, priority, measurement_type, feature_group_id, feature_id, application_name, subsystem_name.
Key Principles
- Measure before changing - always run usage/summary commands before modifying policies
- Use
-o jsonwith jq - structured output enables precise analysis - Verify changes - re-query after every modification to confirm it took effect
- Multi-profile awareness - use
-p <profile>or--all-profilesto compare costs across environments - Template from existing - get current config as JSON before creating or updating
- TCO is the biggest lever - moving logs from Frequent Search to Archive tier has the largest cost impact
Related Skills
cx-telemetry-querying- investigate what data is being ingested (query logs, metrics, and spans to identify high-volume sources)
Reference Files
references/data-usage-query-api.md[blocked] - capabilities and query schemas, interval rules, limits, and response interpretation


