Key Concepts
Overview
Perspectives in Harness CCM provide powerful cost analysis capabilities through customizable views of your cloud spending data. This guide covers the key concepts and features available in Perspectives.
Perspective Drilldown

- Total Cost: The total cost of the resources in the Perspective.
- Budget: The budget for the resources in the Perspective.
- Forecasted Cost: The forecasted cost of the resources in the Perspective.
- Recommendations: The recommendations for the resources in the Perspective.
Group By

You can create a Perspective for your resources using rules and filters. The filters are used to group the resources. The following are the supported filters:
- Cost Categories: You can create a perspective by filtering based on the cost categories you have created. To create cost categories, see Use Cost Categories.
- Region: Each AWS, GCP, or Azure region you're currently running services in.
- Product: Each of your active products with its cloud costs.
- Cloud Provider: Filter and group costs by the cloud service provider (AWS, GCP, Azure, or Kubernetes clusters) to analyze spending across different cloud platforms.
- Label: Each label that you assign to your AWS resources. You can select a label name to get more granular details of your label. For more information, go to Tagging your AWS resources. For tags to appear in the Perspective, you must activate the user-defined cost allocation tags in the AWS Billing and Cost Management console. For more information, go to Activating User-Defined Cost Allocation Tags. CCM updates the tag keys as follows:
- For the user-defined tags,
user_
prefix is added. - For the AWS system tags,
aws_
prefix is added. - The characters that do not follow regex
[a-zA-Z0-9_]
are changed to_
. - The tags are case-sensitive. If the tags are specified as
UserName
andusername
, then the number suffix_<Number>
is added to the tag. For example,UserName
andusername_1
.
- For the user-defined tags,
- Label V2: Preserves the original structure from AWS similar to how GCP, Azure and Cluster tags are stored. See Understanding the Difference: Label vs. Label V2 and Migrate from Label to Label V2.
Grouping Options by Data Source
CCM provides various grouping options to analyze your cloud costs based on different dimensions. Select the appropriate tab to view available grouping options for each cloud provider, container platform, or external data source.
- AWS
- Azure
- GCP
- External Data
- Kubernetes & ECS
AWS Grouping Options
CCM allows you to view your AWS costs at a glance, understand what is costing the most, and analyze cost trends across all your Amazon Web Services:
Grouping Option | Description |
---|---|
Account | Cost by AWS account connected via Harness AWS Cloud Provider, showing account name and ID |
Billing Entity | Distinguishes between AWS Marketplace transactions and other AWS service purchases (Learn more) |
Instance Type | Cost by Amazon EC2 instance type (e.g., t2.micro, m5.large) |
Line Item Type | Cost by charge type (Usage, Tax, Credit, etc.) (Learn more) |
Payer Account | Cost by AWS account that pays for member accounts in an AWS Organization |
Service | Cost by AWS service (EC2, S3, RDS, etc.) |
Usage Type | Cost by specific resource usage measurement (e.g., BoxUsage:t2.micro(Hrs) for EC2 t2.micro instance hours) |
Azure Grouping Options
Analyze your Microsoft Azure costs across services, resource groups, and other dimensions:
Grouping Option | Description |
---|---|
Benefit Name | Cost by benefit applied to resources (Enterprise Agreement discounts, Azure Hybrid Benefit, etc.) |
Billing Account ID | Cost by unique billing account identifier |
Billing Account Name | Cost by billing account name |
Charge Type | Cost by charge type (Usage, Purchase, Refund, etc.) |
Frequency | Cost by charge frequency (OneTime, Recurring, UsageBased) |
Instance ID | Cost by specific resource instance identifier |
Meter | Cost by usage meter (Compute Hours, IP Address Hours, Data Transfer, etc.) |
Meter Category | Cost by meter category (Cloud Services, Networking, etc.) |
Meter Subcategory | Cost by meter subcategory (A6 Cloud Services, ExpressRoute, etc.) |
Pricing Model | Cost by pricing structure (Pay-as-you-go, Reserved Instance, etc.) |
Publisher Name | Cost by Marketplace service publisher |
Publisher Type | Cost by publisher type (Microsoft/Azure, Marketplace, AWS) |
Reservation ID | Cost by reservation instance identifier |
Reservation Name | Cost by reservation instance name |
Resource | Cost by specific Azure resource |
Resource GUID | Cost by resource unique identifier |
Resource Group Name | Cost by resource group |
Resource Name | Cost by resource name |
Resource Type | Cost by resource type (Virtual Machine, Storage Account, App Service, etc.) |
Service Name | Cost by Azure service (Virtual Machines, App Service, DNS, etc.) |
Service Tier | Cost by service tier (VMs, Dv3, Dsv3, etc.) |
Subscription ID | Cost by subscription identifier |
Subscription Name | Cost by subscription name |
GCP Grouping Options
Analyze your Google Cloud Platform costs across products, projects, and other dimensions:
Grouping Option | Description |
---|---|
Billing Account | Cost by billing account, allowing tracking across multiple linked projects |
Invoice Month | Cost by billing period |
Product | Cost by GCP product (Compute Engine, Cloud Storage, BigQuery, etc.) |
Project | Cost by GCP project |
SKU | Cost by specific SKU, representing the billable unit for GCP services |
External Data Grouping Options
Analyze costs from external data sources that you've integrated with CCM:
Grouping Option | Description |
---|---|
Account ID | Cost by account identifier from external data sources |
Account Name | Cost by account name from external data sources |
Billing Account ID | Cost by billing account identifier from external systems |
Billing Account Name | Cost by billing account name from external systems |
Provider Name | Cost by provider or vendor name from external data |
Resource | Cost by specific resource from external data sources |
SKU | Cost by SKU or product identifier from external systems |
Data Source | Cost by external data source name or identifier |
Category | Cost by custom categories defined in your external data |
Cost Center | Cost by organizational cost center from external systems |
Department | Cost by department or business unit from external data |
Project | Cost by project identifier from external systems |
Team | Cost by team or group from external data sources |
Custom Field 1 | Cost by first custom field defined in external data |
Custom Field 2 | Cost by second custom field defined in external data |
Custom Field 3 | Cost by third custom field defined in external data |
Custom Field 4 | Cost by fourth custom field defined in external data |
Custom Field 5 | Cost by fifth custom field defined in external data |
Kubernetes & Container Grouping Options
Analyze costs for your Kubernetes clusters and ECS environments with these grouping options:
Grouping Option | Description |
---|---|
Cluster Name | Total cost, cost trend, idle cost, unallocated cost, and efficiency score for each cluster name |
Cluster Type | Cost by cluster type (e.g., ECS, Kubernetes) |
Namespace | Cost of each Kubernetes namespace in the cluster (not applicable to ECS clusters) |
Namespace ID | Cost of each Kubernetes namespace ID in the cluster |
Workload | Cost of each Kubernetes workload or ECS service, with workload types identified as Kubernetes pods or ECS tasks |
Workload ID | Cost of each Kubernetes workload ID |
Node | Cost of each Kubernetes node or ECS instance |
Storage | Cost of persistent volumes in your Kubernetes cluster (Learn more about Persistent Volumes) |
Application | Sum of your Harness Application costs |
Environment | Cost of cloud platform infrastructures grouped by environment (Dev, QA, Stage, Production, etc.) |
Service | Cost of your microservices and applications |
Cloud Provider | Cost of your cloud platforms (AWS, Kubernetes, etc.) |
ECS Service | Cost of ECS services running task definition instances (Learn more about ECS Services) |
ECS Launch Type | Cost by launch type (Fargate or EC2) |
ECS Launch Type ID | Cost by unique identifier for an Amazon ECS launch type |
ECS Service ID | Cost by unique identifier for an ECS service |
ECS Task | Cost of each ECS task (smallest deployable unit in Amazon ECS) |
ECS Task ID | Cost by unique identifier for an ECS task |
Preferences

General Preferences
-
Show Others: The default perspective graph displays only the top 12 cost items. Enable this option to group all remaining costs into an "Others" category, ensuring you see your complete spending picture.
-
Show Anomalies: Highlight unusual spending patterns or sudden cost changes in your visualizations. This feature makes it easy to spot potential issues or unexpected charges that may require investigation. The number of anomalies are shown on the Group By graph in a red triangle.

-
Show Negative Cost: Displays instances where discounts exceed the actual billing amount, resulting in negative cost values in your reports. Displays the negative cost with a dotted red bar and labels it as NegativeCost in the legend. To view it, please select "Group By" as None because in other Group Bys, it might not appear in the top 12 entries.
-
Show Unallocated costs on clusters: In certain graphs, you may come across an item labeled as Unallocated. This entry is included to provide a comprehensive view of all costs. When you examine the Total Cost in the perspective, it encompasses the costs of all items, including the unallocated cost. This option is available only in perspectives with cluster rules. The Show "unallocated" costs on clusters option is only available in the chart when the Group By is using Cluster and the following options are selected:
- Namespace
- Namespace ID
- Workload
- Workload ID
- ECS Task
- ECS Task ID
- ECS Service ID
- ECS Service
- ECS Launch Type ID
- ECS Launch Type

Preferences on the perspective overview page are toggle only. They can't be saved at the perspective or account settings level.
Cloud-Based Preferences
When working with Perspectives that include multiple data sources, you'll see two different grouping behaviors:
"Others" Category
- Shows when you have more than 12 cost items in a single data source
- Groups the smaller cost items together for cleaner visualization
- Example: If you have 20 AWS services, the top 12 show individually and the rest appear as "Others"
"No [GroupBy]" Category
- Appears when you group by a field that doesn't exist in all your data sources
- Shows costs from data sources that don't have the selected grouping field
Real-World Examples
Scenario 1: You have AWS + GCP data and group by "AWS->Account"
- AWS costs → Show by individual account names
- GCP costs → Show as "No Account" (because GCP doesn't have AWS accounts)
Scenario 2: You have AWS + GCP data and group by "GCP->Project"
- GCP costs → Show by individual project names
- AWS costs → Show as "No Project" (because AWS doesn't use GCP projects)
🔍 How to Filter "No [GroupBy]" Items
To view only the costs that appear as "No [GroupBy]", use the IS NULL filter:
- Filter:
AWS > Account
IS NULL → Shows only non-AWS costs - Filter:
GCP > Project
IS NULL → Shows only non-GCP costs
🏷️ Label Migration: Label vs. Label V2
⚠️ Migration Notice for Existing Users
This migration is only required for existing users who are currently using the legacy Label system. If you're a new user or haven't used Labels before, you can start directly with Label V2.
Harness CCM is transitioning from the traditional Label system to the enhanced Label V2 system. Support for the legacy Label system will be discontinued in the coming months.
- Label (Legacy): Normalizes AWS tags. GCP, Azure and Clusters tags are not normalized.
- Label V2 (New): Preserves the original structure from AWS similar to how GCP, Azure and Cluster tags are stored.
Key Benefits of Label V2:
- Original tags: Displays your original cloud tag keys exactly as they appear in AWS, Azure, or GCP
- Improved Performance: Enhanced data processing and query performance
- Label is a label that you assign to your AWS resources. See how AWS labels are created.
After Label V2, AWS labels are stored as-is without any normalization.
Who Needs to Migrate?
✅ Migration Required
You need to migrate if you have existing Perspectives that use AWS Labels for grouping or filtering. Check your Perspectives for any Label-based rules.
🆕 No Migration Needed
If you're a new user or haven't used Labels in your Perspectives, simply use Label V2 for all new configurations.
Migration Steps for Existing Users
UI Migration Process
- Identify affected Perspectives: Review Perspectives using AWS Label-based grouping or filtering
- Update each Perspective: Change "Label" selections to "Label V2"
- Verify functionality: Ensure cost data and filters work correctly after migration
API Migration Process
For API users, update the identifier from LABEL
to LABEL_V2
:
- Before (Legacy)
- After (Label V2)
{
"field": {
"fieldId": "labels.value",
"fieldName": "key1",
"identifier": "LABEL",
"identifierName": "Label"
},
"operator": "IN",
"values": ["value1"]
}
{
"field": {
"fieldId": "labels.value",
"fieldName": "key1",
"identifier": "LABEL_V2",
"identifierName": "Label V2"
},
"operator": "IN",
"values": ["value1"]
}
Similarly, for labels.key
:
- Before (Legacy)
- After (Label V2)
{
"idFilter": {
"field": {
"fieldId": "labels.key",
"fieldName": "",
"identifier": "LABEL",
"identifierName": "Label"
},
"operator": "IN",
"values": []
}
}
{
"idFilter": {
"field": {
"fieldId": "labels.key",
"fieldName": "",
"identifier": "LABEL_V2",
"identifierName": "Label V2"
},
"operator": "IN",
"values": []
}
}
Key Change: Replace "identifier": "LABEL"
with "identifier": "LABEL_V2"
and update "identifierName"
accordingly.
Organize Perspectives using Folders
You can organize Perspectives by adding them to folders. The number of Folders that can be created is 2000.
Click New folder, name the folder, and then select the Perspectives you want to add.

You can also add a Perspective to a folder when you create it or move it to a folder when you edit it.

