Skip to content

Instantly share code, notes, and snippets.

@tschuy
Last active March 14, 2019 23:20
Show Gist options
  • Save tschuy/d74586bfd26e4e8e9d88fd34bd8bfac1 to your computer and use it in GitHub Desktop.
Save tschuy/d74586bfd26e4e8e9d88fd34bd8bfac1 to your computer and use it in GitHub Desktop.
vpus by role
$ curl "http://127.0.0.1:8001/api/v1/namespaces/metering-tschuy-test/services/https:reporting-operator:http/proxy/api/v1/reports/get?name=compute-vcpus-by-role-five-min&namespace=metering-tschuy-test&format=json" | jq
...
{
"period_end": "2019-03-14T21:20:00Z",
"period_start": "2019-03-14T21:15:00Z",
"vcpu_core_seconds": 14400
},
{
"period_end": "2019-03-14T21:25:00Z",
"period_start": "2019-03-14T21:20:00Z",
"vcpu_core_seconds": 14400
}
]
$ curl "http://127.0.0.1:8001/api/v1/namespaces/metering-tschuy-test/services/https:reporting-operator:http/proxy/api/v1/reports/get?name=master-vcpus-by-role-five-min&namespace=metering-tschuy-test&format=json" | jq
...
{
"period_end": "2019-03-14T22:20:00Z",
"period_start": "2019-03-14T22:15:00Z",
"vcpu_core_seconds": 1200
},
{
"period_end": "2019-03-14T22:25:00Z",
"period_start": "2019-03-14T22:20:00Z",
"vcpu_core_seconds": 1200
}
]
apiVersion: metering.openshift.io/v1alpha1
kind: ReportDataSource
metadata:
name: vcpus-by-role
spec:
promsum:
query: vcpus-by-role
apiVersion: metering.openshift.io/v1alpha1
kind: ReportGenerationQuery
metadata:
name: "vcpus-by-role-raw"
spec:
reportDataSources:
- "vcpus-by-role"
columns:
- name: vcpu_cores
type: double
unit: cpu_cores
- name: vcpu_core_seconds
type: double
unit: cpu_core_seconds
# - name: cluster_uuid
# type: string
# unit: uuid
- name: timestamp
type: timestamp
unit: date
- name: timeprecision
type: double
unit: seconds
- name: compute
type: boolean
- name: master
type: boolean
- name: dt
type: string
query: |
SELECT amount as vcpu_cores,
amount * timeprecision as vcpu_core_seconds,
CAST(element_at(labels, 'label_node_role_kubernetes_io_compute') AS BOOLEAN) as compute,
CAST(element_at(labels, 'label_node_role_kubernetes_io_master') AS BOOLEAN) as master,
timestamp,
timeprecision,
dt
FROM {| dataSourceTableName "vcpus-by-role" |}
---
apiVersion: metering.openshift.io/v1alpha1
kind: ReportGenerationQuery
metadata:
name: "compute-vcpus-by-role"
spec:
reportQueries:
- "vcpus-by-role-raw"
view:
disabled: true
columns:
- name: period_start
type: timestamp
unit: date
- name: period_end
type: timestamp
unit: date
# - name: cluster_uuid
# type: string
# unit: uuid
- name: vcpu_core_seconds
type: double
unit: cpu_core_seconds
inputs:
- name: ReportingStart
- name: ReportingEnd
query: |
SELECT
timestamp '{| default .Report.ReportingStart .Report.Inputs.ReportingStart| prestoTimestamp |}' AS period_start,
timestamp '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prestoTimestamp |}' AS period_end,
sum(vcpu_core_seconds) as vcpu_core_seconds
FROM {| generationQueryViewName "vcpus-by-role-raw" |}
WHERE compute
AND "timestamp" >= timestamp '{| default .Report.ReportingStart .Report.Inputs.ReportingStart | prestoTimestamp |}'
AND "timestamp" < timestamp '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prestoTimestamp |}'
AND dt >= '{| default .Report.ReportingStart .Report.Inputs.ReportingStart | prometheusMetricPartitionFormat |}'
AND dt <= '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prometheusMetricPartitionFormat |}'
ORDER BY vcpu_core_seconds DESC
---
apiVersion: metering.openshift.io/v1alpha1
kind: ReportGenerationQuery
metadata:
name: "master-vcpus-by-role"
spec:
reportQueries:
- "vcpus-by-role-raw"
view:
disabled: true
columns:
- name: period_start
type: timestamp
unit: date
- name: period_end
type: timestamp
unit: date
# - name: cluster_uuid
# type: string
# unit: uuid
- name: vcpu_core_seconds
type: double
unit: vcpu_core_seconds
inputs:
- name: ReportingStart
- name: ReportingEnd
query: |
SELECT
timestamp '{| default .Report.ReportingStart .Report.Inputs.ReportingStart| prestoTimestamp |}' AS period_start,
timestamp '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prestoTimestamp |}' AS period_end,
sum(vcpu_core_seconds) as vcpu_core_seconds
FROM {| generationQueryViewName "vcpus-by-role-raw" |}
WHERE master
AND "timestamp" >= timestamp '{| default .Report.ReportingStart .Report.Inputs.ReportingStart | prestoTimestamp |}'
AND "timestamp" < timestamp '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prestoTimestamp |}'
AND dt >= '{| default .Report.ReportingStart .Report.Inputs.ReportingStart | prometheusMetricPartitionFormat |}'
AND dt <= '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prometheusMetricPartitionFormat |}'
ORDER BY vcpu_core_seconds DESC
apiVersion: metering.openshift.io/v1alpha1
kind: ReportPrometheusQuery
metadata:
name: vcpus-by-role
spec:
query: |
sum(kube_node_labels * on(node) group_left kube_node_status_capacity_cpu_cores)
BY (label_beta_kubernetes_io_instance_type, label_node_role_kubernetes_io_compute,
label_node_role_kubernetes_io_master)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment