Skip to main content

Prometheus Usage

OpenCost allows you to export pricing data to Prometheus and then write custom queries for cost insights. Below are instructions for accomplishing this and a set of example queries to get you started.

Configuration

- job_name: opencost
honor_labels: true
scrape_interval: 1m
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
static_configs:
- targets:
- < address of opencost service> # example: <service-name>.<namespace>:<port>

Example queries

Below are a set of sample queries that can be run after Prometheus begins ingesting OpenCost data:

Monthly cost of top 5 containers

topk( 5,
container_memory_allocation_bytes* on(instance) group_left() node_ram_hourly_cost / 1024 / 1024 / 1024 * 730
+
container_cpu_allocation * on(instance) group_left() node_cpu_hourly_cost * 730
)

Hourly memory cost for the default namespace

sum(
avg(container_memory_allocation_bytes{namespace="default"}) by (instance) / 1024 / 1024 / 1024
*
on(instance) group_left() avg(node_ram_hourly_cost) by (instance)
)

Monthly cost of currently provisioned nodes

sum(node_total_hourly_cost) * 730

Available Metrics

Note: Metrics today have both instance and node labels. The instance label will be deprecated in a future version.

MetricDescription
node_cpu_hourly_costHourly cost per vCPU on this node
node_gpu_hourly_costHourly cost per GPU on this node
node_ram_hourly_costHourly cost per Gb of memory on this node
node_total_hourly_costTotal node cost per hour
kubecost_load_balancer_costHourly cost of a load balancer
kubecost_cluster_management_costHourly cost paid as a cluster management fee
pv_hourly_costHourly cost per GP on a persistent volume
node_gpu_countNumber of GPUs available on node
container_cpu_allocationAverage number of CPUs requested/used over last 1m
container_gpu_allocationAverage number of GPUs requested over last 1m
container_memory_allocation_bytesAverage bytes of RAM requested/used over last 1m
pod_pvc_allocationBytes provisioned for a PVC attached to a pod
kubecost_node_is_spotCloud provider info about node preemptibility
kubecost_network_zone_egress_costTotal cost per GB egress across zones
kubecost_network_region_egress_costTotal cost per GB egress across regions
kubecost_network_internet_egress_costTotal cost per GB of internet egress
service_selector_labelsService Selector Labels
deployment_match_labelsDeployment Match Labels
statefulSet_match_labelsStatefulSet Match Labels
kubecost_cluster_memory_working_set_bytesCreated by recording rule
kubecost_http_requests_totalTotal number of http requests serviced
kubecost_http_response_time_secondsResponse time in seconds
kubecost_http_response_size_bytesResponse size in bytes
Documentation Distributed under CC BY 4.0.  The Linux Foundation® (TLF) has registered trademarks and uses trademarks. For a list of TLF trademarks, see: Trademark Usage.