Skip to content

Latest commit

 

History

History
67 lines (52 loc) · 2.72 KB

PROMETHEUS.md

File metadata and controls

67 lines (52 loc) · 2.72 KB

Kubecost 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

After deploying the Kubecost model (see README for more info on installation), configure Prometheus to scrape the /metrics endpoint exposed by Kubecost. Below is a sample scrape config:

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

Example queries

Below are a set of sample queries that can be run after Prometheus begins ingesting Kubecost 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.

Metric Description
node_cpu_hourly_cost Hourly cost per vCPU on this node
node_gpu_hourly_cost Hourly cost per GPU on this node
node_ram_hourly_cost Hourly cost per Gb of memory on this node
node_total_hourly_cost Total node cost per hour
kubecost_load_balancer_cost Hourly cost of a load balancer
kubecost_cluster_management_cost Hourly management fee per cluster
pv_hourly_cost Hourly cost per GP on a persistent volume
node_gpu_count Number of GPUs available on node
container_cpu_allocation Average number of CPUs requested/used over last 1m
container_gpu_allocation Average number of GPUs requested over last 1m
container_memory_allocation_bytes Average bytes of RAM requested/used over last 1m
pod_pvc_allocation Bytes provisioned for a PVC attached to a pod