Skip to main content

VQL for Kubernetes Efficiency Reports

This page describes how to use VQL when querying Kubernetes Efficiency Reports in the API or using the Terraform Provider.

tip

If you need help constructing a VQL query, navigate to the Kubernetes Efficiency Reports page and click New Report. From the top left, open the Filters menu. Create a filter and click the View as VQL button at the top of the Filters menu to see a filter's VQL representation. You can copy this syntax to use within your API calls.

Kubernetes Efficiency Reports VQL Schema

VQL for Kubernetes Efficiency Reports comprises one namespace, kubernetes, which represents the available filters on Kubernetes Efficiency Reports in the Vantage console. To reference a filter, use the following syntax: namespace.field (e.g., kubernetes.category). The following fields are available within the kubernetes namespace.

NamespaceFieldVQL Example
kubernetesnamespaceNamespace example
cluster_idCluster ID example
categoryCategory example
labelsLabels example

Keywords

VQL includes a set of keywords to create complex filter conditions. These keywords function similar to their SQL equivalents.

KeywordDescriptionVQL SampleExplanation
ANDLogical AND operator(kubernetes.namespace = 'kube-system') AND (kubernetes.labels->>'app' = 'vantage-agent')This example filters for a specific namespace and label, where both conditions must be true.
ORLogical OR operator(kubernetes.namespace = 'gpu-operator') OR (kubernetes.namespace = 'vantage-dev')This example looks for results in two different namespaces. At least one condition must be true.
!=Is not(kubernetes.cluster_id != 'dev-eks-gpu-0')This example looks for results that are in any cluster except for dev-eks-gpu-0.
IN and NOT INUsed to compare against an array/list(kubernetes.labels->>'app.kubernetes.io/component' IN ('csi-driver','gpu-operator','metrics'))This example searches for results with the app.kubernetes.io/component key and multiple values.

This same query also works for NOT IN where the results are anything matching the label key except for those particular values: (kubernetes.labels->>'app.kubernetes.io/component' NOT IN ('csi-driver','gpu-operator','metrics')).
LIKE and NOT LIKEPerforms string comparisons(kubernetes.labels->>'app' LIKE '%test%')This example selects data where the app label value contains test, such as test-app.

This same query also works for NOT LIKE where data does not contain a particular string: (kubernetes.labels->>'app' NOT LIKE '%test%').
->>This operator is used only when constructing queries related to labels(kubernetes.labels->>'container' = 'kube-prometheus-stack-48.4.0')This example looks results with the label name of container and value of kube-prometheus-stack-48.4.0.

With these operators and keywords, you can construct complex filter conditions in VQL.

VQL Examples

The following examples cover common use cases for VQL.

Multiple Namespaces

Filter for one or the other namespace.

(kubernetes.namespace = 'kube-system') OR (kubernetes.namespace = 'default')

Results from a List of Clusters

Filter for a list of different clusters.

(kubernetes.cluster_id IN ('dev-eks-gpu-0','dev-eks-UVmPe9YN'))

Costs by Category

Costs for a specific category, like cpu.

(kubernetes.category = 'cpu')

Filter by Label

Filter based on a specific Kubernetes label, such as app, with the value rollouts-demo.

(kubernetes.labels->>'app' = 'rollouts-demo')

Multiple Filters

Complex filter that shows combining two different statements using OR with multiple criteria.

(kubernetes.cluster_id IN ('dev-eks-gpu-0','dev-eks-UVmPe9YN')) AND (kubernetes.category = 'cpu') OR (kubernetes.cluster_id IN ('dev-eks-gpu-0','dev-eks-UVmPe9YN')) AND (kubernetes.category = 'gpu')