Unit Metrics
To measure unit cost, you need two things: the total cost and the number of units that cost supports. In Octo, the total cost is represented by a cost group, while the number of units is provided by the Unit Metrics feature.
The Unit Metrics feature enables users to input, link, or stream business metrics—such as the number of API calls, customers, transactions, or active users—on a daily basis. These metrics are then used to calculate unit cost by dividing the total cost (from a cost group) by the metric value.
Unit Cost = Total Cost (Cost Group) ÷ Unit Metric (per day)
This feature is designed to:
- Help teams measure the efficiency of cloud spend.
- Understand cost trends like cost per customer, cost per request, or cost per product.
- Allow daily tracking of business metrics alongside cloud costs.
- Enable data-driven decisions for optimizing spend.
You can upload metrics manually (via CSV or Google Sheets), retrieve them from CloudWatch, or stream them through our Telemetry API — all of which will be covered in the following sections.
Creating a Unit Metric
To create a new Unit Metric, click the Create new unit button in the top-right of the Unit Metrics Management page.
You’ll first be asked to choose the denominator data source, which defines where the metric values (the number of units) will come from.
ℹ️ The numerator (total cost) is automatically taken from your selected cost group in a later step.
The available denominator data sources are:
- Upload CSV file for denominator data
- Retrieve data from Google Sheet
- Use AWS CloudWatch metric as denominator
- (API integration is currently under development)
After selecting a data source, you'll be guided through a 5-step creation process to configure your Unit Metric.
Step 1: Basic Details
Enter a Unit Metric Name and an optional Description. This helps you identify and manage your metrics later, especially when you have multiple unit metrics for different teams or products.
We recommend naming your metric based on what it's measuring. A good convention is to use "Cost per \<unit>", where the unit represents what you're tracking.
💡 Examples:
- Cost per API Call
- Cost per Customer
- Cost per GB Processed
- Cost per Active User
- Cost per Transaction
You can also use the Description field to add more context, such as the data source, team, or purpose (e.g., “Metrics from marketing Google Sheet” or “Production API usage from CloudWatch”).
This name will appear in charts and tables, so make it as clear and meaningful as possible.
Step 2: Select Cost Group (Numerator)
Choose the Cost Group that this unit metric will be tied to. The total cost from this group will serve as the numerator in the unit cost formula.
Step 3: Choose Metric Source (Denominator)
Select where your unit metric data will come from. The setup instructions vary depending on the source:
Uploading a CSV file allows you to bring in unit metric values from local data exports or reports.
To ensure accurate processing, your CSV file must contain at least two columns:
1. A date column in YYYY-MM-DD
format.
2. A unit value column representing your metric (e.g., number of API calls, active users, storage used, transactions).
⚠️ Without these two columns, the system won't allow you to proceed.
🗂 Upload CSV
Click the Upload CSV file button to import your file.
Click to view image
Before continuing, ensure your file:
- Contains a column with dates (format: 2025-02-25
)
- Contains a numeric column for metric values
🔗 Map Data Points
After uploading, you’ll be asked to map your columns:
- Select timestamp column – Choose the column that contains the date in
YYYY-MM-DD
format. - Select unit value column – Choose the column containing the numeric value used as the denominator (e.g., daily_active_users, transaction_count).
Below the mapping section, you’ll see a reference table preview of your uploaded CSV. This lets you verify that the correct columns are selected and the data looks clean.
Click to view image
✅ You can also re-upload your CSV file at any time if the contents change or if you selected the wrong one.
📝 Tips:
- Additional columns (e.g., region, environment, notes) are ignored but helpful for reference.
- Only the selected date and value columns are used for the actual metric calculation.
- Avoid blank rows and ensure all dates are valid and continuous if possible.
Using a Google Sheet allows you to connect real-time, collaborative metric data directly into Octo.
Before you begin, make sure:
- The Google Sheet is accessible to "Anyone with the link"
- Permission is set to "Viewer"
🔗 Link Your Google Sheet
Paste your Google Sheet URL in the field provided, then click Confirm and link.
🔐 If the sheet is private or restricted, Octo won’t be able to access it.
Click to view image
Once the sheet is successfully linked, a 3-step configuration process will appear:
Click to view image
Select Sheet Name
Choose the specific sheet/tab within your Google Sheet where your metric data is located.
This dropdown lists all the tabs available in the document.
Click to view image
Select Data Range
Next, decide how much of the sheet to use:
-
Entire sheet – Octo will read all rows and columns in the tab. ??? info "Click to view image"
-
Specific range – You can enter a custom cell range like
A1:E92
. ??? info "Click to view image"
📌 The first row of the selected range will be treated as the column headers.
When to Use Each Option:
- Entire Sheet:
- Best for simple tables where the first row contains column headers (e.g.,
timestamp
,daily_active_users
, etc.). -
✅ Recommended when your data is regularly updated with new rows (e.g., new daily entries). Octo will automatically include new rows in future metric calculations.
-
Specific Range:
- Best for custom-formatted sheets where your table doesn't start at the top-left cell (e.g., headers begin at row 5 or column C).
- ⚠️ Only the selected range will be used. If you add rows outside this range later, Octo will not retrieve them unless you manually update the range.
Map Data Points
After retrieving data, you’ll be asked to map:
- A timestamp column – Must be in
YYYY-MM-DD
format. - A unit value column – The numeric metric that will be used as the denominator.
✅ These two fields are required for calculating unit cost. Without them, you can’t proceed.
A preview of the data will be shown below the mapping section so you can verify accuracy before moving forward.
Click to view image
📝 Notes
- Additional columns like
region
,environment
, ornotes
are ignored in the calculation but may help you visually verify your data. - Make sure the date column contains valid, continuous dates, and avoid blank or malformed rows.
- You can go back to any step or re-link your Google Sheet if needed.
Using AWS CloudWatch as a source allows you to fetch live metric data directly from your AWS account.
You'll be guided through the following steps:
- Select an AWS account and region.
- Choose a namespace, metric name, and optionally a dimension for precise filtering.
Choose Account & Region
You’ll start by choosing which AWS accounts and regions to browse metrics from.
There are two options available for account and region listing:
-
AWS accounts within selected cost group
Only shows accounts and regions that are part of the cost group selected in Step 2.
✅ Recommended for scoping metrics to only those relevant to the selected cost group. -
Show all AWS accounts
Displays all linked AWS accounts and their respective regions.
⚠️ Useful for pulling external metrics, but may include data not related to the selected cost group.
Click to view image
Select Namespace and Metric
After selecting an account and region, you’ll choose a CloudWatch namespace (e.g., AWS/EC2
, AWS/S3
, etc.) and a metric name (e.g., CPUUtilization
, RequestCount
, etc.).
ℹ️ Only namespaces and metrics available for the selected account and region will be shown.
Click to view image
Optional: Add Metric Dimension
If needed, you can refine your metric by applying a dimension filter, such as an instance ID, load balancer name, or queue name.
- Toggle the Metrics dimension switch to enable.
- Choose a dimension name (e.g.,
InstanceId
) - Choose a value (e.g.,
i-086b2069ed24b542b
)
🧠 Dimensions help filter metrics more precisely when your cost group uses tags or you want to isolate data to a specific resource.
Click to view image
📝 Notes
- If your cost group uses services and not tags, dimensions are optional.
- If your cost group is defined using tags, it's better to add dimensions to filter your metrics more precisely.
- The account/region selection logic allows flexibility depending on the use case:
- Scoped to cost group, or
- Global across your AWS organization.
Use the Telemetry API to stream metric data programmatically into Octo in real time.
This source is currently under development, but once available, it will allow seamless integration between your internal systems and Octo's Unit Metrics engine.
Status: In Development
We're actively working on this feature. Once released, you'll be able to:
- Connect your internal service, application, or data pipeline to Octo via our Telemetry API endpoint.
- Send daily metric values (e.g., user count, transactions, API calls) via authenticated API requests.
- Automate metric reporting without needing CSVs, Google Sheets, or manual uploads.
- Enable real-time and continuous ingestion of business telemetry for unit cost tracking.
⚠️ Stay tuned — We’ll update this section with full setup instructions, authentication details, and example requests once the API is ready.
💡 Interested in early access or want to provide feedback?
Feel free to contact us.
Step 4: Aggregation Method
The aggregation method defines how Octo should group and calculate metric values when: - You have multiple data points in a single day. - You switch the granularity in charts or reports (e.g., daily → monthly).
You can choose from the following aggregation methods:
-
Sum: Adds all the values together.
Example: If you have 3 entries on the same day with values 5, 10, and 15 → the total is 30.
-
Average: Takes the mean of all the values.
Example: Values 5, 10, and 15 → average is 10.
-
Maximum: Uses the highest value from the group.
- Minimum: Uses the lowest value from the group.
This aggregation setting ensures consistent and meaningful results, especially when: - Your raw data includes multiple rows per day. - You're viewing data on a weekly, monthly, or quarterly basis.
💡 If you're calculating unit cost per month, and your unit metric is uploaded daily with multiple values per day, the aggregation method controls how the monthly total is calculated.
Step 5: Preview & Confirm
Before finalizing, review all the details you've configured:
- Basic details — Unit metric name and description
- Denominator source — Where the metric values are coming from
- Aggregation method — How data will be grouped
- Cost group — Which total cost (numerator) will be used
If everything looks correct, click Confirm and Create. Your unit metric will now be saved and used in calculating your unit cost.
✏️ You can go back and edit any section before confirming if you spot something that needs adjusting.
Viewing the Unit Cost in Cost Group Chart
After completing the creation of a Unit Metric, Octo automatically applies it to the selected Cost Group to visualize the Unit Cost.
How it works:
- Navigate to the Cost Group you assigned during Step 2 of the Unit Metric creation.
- If the Unit Metric data is valid (e.g., dates match and values are present), Octo will automatically calculate and overlay the Unit Cost.
- The Unit Cost appears as a red line graph on top of the bar chart representing total daily cost.
- Just above the chart, you'll see the Avg. Cost per Unit, based on the selected date range of the Cost Group.
Example Interpretation
In the image above:
- Total Cost is around $597,378.19 for the selected period.
- Avg. Cost per Unit is $8.44.
- The red line (unit cost) is declining over time, even though the stacked bars (total cost) appear stable.
This is a good sign.
Here's why:
- A declining unit cost means you're getting more value (more units) for the same or even increasing cloud spend.
- It reflects improved efficiency — you're serving more customers, running more transactions, or delivering more services without increasing cost proportionally.