> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skyhook.io/llms.txt
> Use this file to discover all available pages before exploring further.

# FinOps

> Monitor Kubernetes costs, resource efficiency, and network transfer spend across your clusters.

The FinOps dashboard gives you visibility into Kubernetes spend across your connected clusters. It surfaces total cost, potential savings from right-sizing, workload efficiency, and cross-zone/cross-region/internet-egress network costs — all in one place — so you can decide where to optimize before money is wasted.

FinOps data is powered by [OpenCost](https://www.opencost.io/), an open-source Kubernetes cost monitoring project. Skyhook bundles OpenCost and Prometheus together as a single addon and wires in cloud billing integration automatically.

<Frame>
  <img src="https://mintcdn.com/koalaops/QOlGSJhndIM-wpJA/observability/finops/img/finops-dashboard-overview.png?fit=max&auto=format&n=QOlGSJhndIM-wpJA&q=85&s=2ae95028d57621b3ab257186466dc4a9" alt="FinOps dashboard showing total spend, potential savings, efficiency, top inefficient pods, cost composition, cost over time, and action-required items" width="1440" height="1627" data-path="observability/finops/img/finops-dashboard-overview.png" />
</Frame>

## Prerequisites

* At least one connected cluster (see [Connecting Clusters](/infrastructure/clusters/connecting-clusters))
* The **OpenCost** addon installed on the clusters you want to monitor

If OpenCost is not installed, the FinOps pages show an empty state with a direct link to the addon.

## Installing the OpenCost addon

FinOps in Skyhook is delivered as a single addon that installs both OpenCost and Prometheus:

* **Prometheus** — collects metrics from your cluster and containers so efficiency calculations have accurate usage data
* **OpenCost** — joins that usage data with pricing (either estimated or from your cloud bill) to produce cost numbers

<Steps>
  <Step title="Open the OpenCost addon">
    Navigate to **Addons** in the sidebar and find **OpenCost** in the catalog, or follow the **Go to Addon** button from the FinOps empty state.
  </Step>

  <Step title="Enable OpenCost on clusters">
    On the OpenCost addon page, click **Add** next to each cluster where you want cost monitoring.

    <Frame>
      <img src="https://mintcdn.com/koalaops/QOlGSJhndIM-wpJA/observability/finops/img/finops-opencost-addon.png?fit=max&auto=format&n=QOlGSJhndIM-wpJA&q=85&s=3ebcb17a25250282ed152ba30722d5b3" alt="OpenCost addon page showing cluster installation status across 11 clusters, with Configured status on two clusters and Add buttons on the rest" width="1440" height="900" data-path="observability/finops/img/finops-opencost-addon.png" />
    </Frame>
  </Step>

  <Step title="Cloud billing integration (optional)">
    Skyhook automatically detects the cloud provider for each cluster and pre-fills cloud-specific configuration:

    * **AWS** — IRSA role annotation, Athena CUR integration (database, table, workgroup)
    * **GCP** — Workload Identity annotation, BigQuery billing export integration
    * **Generic/other** — Basic Prometheus metrics only (no cloud billing numbers)

    Setup instructions in the YAML header include the exact CLI commands for creating the IAM role or service account. No static credentials are stored.
  </Step>

  <Step title="Wait for data">
    After the addon syncs via ArgoCD, OpenCost needs a few minutes to start reporting metrics. Once data is available, the FinOps pages populate automatically.
  </Step>
</Steps>

<Info>
  FinOps costs shown in Skyhook are **estimates** derived from resource usage rates. Live cloud billing integration is available via the AWS/GCP configuration above — hover over the info icon next to the page title to see the current estimation status.
</Info>

## Summary dashboard

The main FinOps page (**FinOps > Overview**) summarizes cost and efficiency across all clusters where OpenCost is installed.

### Key metrics

Three headline cards at the top:

* **Total Spend** — Sum of Kubernetes resource costs: compute (CPU + memory requests), idle capacity, and network transfer, over the selected time range.
* **Potential Savings** — Estimated cost reduction from right-sizing over-provisioned workloads. Calculated as requested resources minus actual usage.
* **Efficiency** — Ratio of actual resource usage to requested resources, weighted by cost and averaged across all workloads. Color-coded:
  * **Green** ≥ 60% (healthy)
  * **Orange** 30–60% (over-provisioned)
  * **Red** \< 30% (severely over-provisioned)

### Top Inefficient Pods

Lists the five workloads with the worst efficiency (\< 60%) and the monthly savings opportunity for each. Clicking **View All** jumps to the Efficiency Analysis page pre-filtered to those pods.

### Where Your Money Goes

Donut chart breaking total spend into three categories:

* **Compute (Used)** — active workload cost
* **Idle Capacity** — unused cluster resources (node headroom, unallocated pods)
* **Network** — data transfer cost across zones, regions, and internet egress

### Cost Breakdown Over Time

Stacked bar chart of daily or weekly cost, colored by compute/idle/network. Use the time range selector (24h, 7d, 30d, or custom) to change the window — chart buckets resize automatically (7 daily buckets for 7d, 4 weekly buckets for 30d, etc.).

### Action Required

Contextual list of recommended actions derived from the data:

* **Efficiency actions** for the three worst-performing workloads, linking directly to the pod in the Efficiency page
* **Idle capacity actions** when idle percentage exceeds 10%, suggesting right-sizing or workload consolidation

Each item shows severity (high/medium/low), a description, the monthly savings potential, and a **View Details** button.

## Efficiency Analysis

The **FinOps > Efficiency** page shows resource utilization for every workload, with an interactive table to find over-provisioning at any level.

<Frame>
  <img src="https://mintcdn.com/koalaops/QOlGSJhndIM-wpJA/observability/finops/img/finops-efficiency-analysis.png?fit=max&auto=format&n=QOlGSJhndIM-wpJA&q=85&s=99abcf49ef1bcaa2a3239221a9586cfd" alt="Efficiency Analysis page with a sortable table showing CPU Usage, Memory Usage, Overall efficiency, and Waste columns, aggregated by namespace" width="1440" height="957" data-path="observability/finops/img/finops-efficiency-analysis.png" />
</Frame>

### Aggregation

Switch the **Aggregate** dropdown to group by:

* **Namespace** (default)
* **Controller** (Deployment, StatefulSet, etc.)
* **Pod**
* **Node** — adds a **Machine type** column cross-referenced from cluster data

Filters reset when you switch aggregation to avoid stale name filters from a different level.

### Columns

| Column           | What it shows                                            |
| ---------------- | -------------------------------------------------------- |
| **Name**         | Namespace / controller / pod / node name                 |
| **CPU Usage**    | Percent of requested CPU actually in use                 |
| **Memory Usage** | Percent of requested memory actually in use              |
| **Overall**      | Cost-weighted efficiency across CPU + memory             |
| **Waste**        | Estimated monthly dollar amount spent on unused capacity |

Click any column header to sort. Use the **Name** filter box for multi-select filtering across the current aggregation.

A warning icon (⚠️) flags workloads with severely over-provisioned resources.

### Expandable rows

Expand a namespace or controller row to see its child workloads with their individual CPU/memory utilization and inline **Apply** / **Dismiss** recommendations where Skyhook can suggest right-sized requests.

## Network Costs

The **FinOps > Network Costs** page breaks down data transfer spend that often hides in cloud bills.

<Frame>
  <img src="https://mintcdn.com/koalaops/QOlGSJhndIM-wpJA/observability/finops/img/finops-network-costs.png?fit=max&auto=format&n=QOlGSJhndIM-wpJA&q=85&s=4ca56db8278c0a2b62b27d7395f02239" alt="Network Costs page showing total transfer, total network cost, cross-zone, cross-region, and internet egress totals, with a detailed breakdown table and optimization suggestions" width="1440" height="900" data-path="observability/finops/img/finops-network-costs.png" />
</Frame>

### Top-line metrics

* **Total Transfer** — Total data moved across the network in GB
* **Total Network** — Total network spend
* **Cross-Zone** — Transfer between availability zones in the same region (usually the largest line item)
* **Cross-Region** — Transfer between regions
* **Internet Egress** — Transfer leaving the cloud provider's network

### Detailed Breakdown

Table with per-namespace (or per-controller, or per-cluster) cost and GB transferred, split across cross-zone, cross-region, and internet egress columns. Click any column header to sort.

### Optimization Suggestions

Skyhook generates contextual suggestions based on the breakdown — for example:

* **High cross-zone traffic** in a namespace → consider pod affinity rules or topology-aware routing
* **Cross-region traffic** → co-locate services or use regional caching
* **Internet egress** → review external API calls for caching opportunities

Each suggestion includes the current cost contribution. Click **Ask Skyhook Agent** at the top of the suggestions panel to have the AI assistant help dig into the root cause.

## Time range and refresh

Every FinOps page shares a time range selector (**24h / 7d / 30d / Custom**) and a refresh button. Each cluster is queried independently, so if one cluster's OpenCost instance is unreachable, the dashboard shows partial results with a warning banner naming the failed clusters.

A **Last updated** timestamp next to the refresh button shows data freshness. The 7-day window is loaded in the background on page open, so switching between time ranges feels instant.

## Troubleshooting

<AccordionGroup>
  <Accordion title="FinOps pages show 'Install OpenCost to Enable FinOps'" icon="wrench">
    The OpenCost addon is not installed on any connected cluster. Click **Go to Addon** to open the OpenCost configuration page and add it to at least one cluster. After the addon syncs via ArgoCD, click **Refresh** on the FinOps page.
  </Accordion>

  <Accordion title="'Data from cluster-X could not be loaded'" icon="wrench">
    Skyhook couldn't reach OpenCost on one or more clusters. The dashboard still shows partial results from the remaining clusters. Common causes:

    * OpenCost pod is not running — check **Cluster resources** for the `opencost` namespace
    * ArgoCD sync is in progress — verify addon status on the OpenCost addon page
    * Cluster agent connectivity issue — check the cluster health in **Infrastructure > Clusters**
  </Accordion>

  <Accordion title="Cost numbers look lower than my cloud bill" icon="wrench">
    Without cloud billing integration, Skyhook estimates costs from resource usage rates and standard instance pricing. These are useful for relative comparisons (which workload wastes the most?) but won't match a cloud bill to the cent.

    For accurate numbers, configure the AWS Athena CUR integration or GCP BigQuery billing export in the OpenCost addon. The info icon next to the page title shows the current estimation status.
  </Accordion>

  <Accordion title="Efficiency shows > 100% for a workload" icon="wrench">
    A workload using more resources than requested is **underprovisioned** — it's being throttled or risks OOM-kill. Skyhook flags these alongside over-provisioned workloads so you can raise the requests instead of lowering them.
  </Accordion>
</AccordionGroup>
