1683 lines
43 KiB
JSON
1683 lines
43 KiB
JSON
|
{
|
||
|
"annotations": {
|
||
|
"list": [
|
||
|
{
|
||
|
"builtIn": 1,
|
||
|
"datasource": "-- Grafana --",
|
||
|
"enable": true,
|
||
|
"hide": true,
|
||
|
"iconColor": "rgba(0, 211, 255, 1)",
|
||
|
"name": "Annotations & Alerts",
|
||
|
"type": "dashboard"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
"description": "Cost metrics from the Kubecost product",
|
||
|
"editable": true,
|
||
|
"gnetId": null,
|
||
|
"graphTooltip": 0,
|
||
|
"id": 7,
|
||
|
"iteration": 1558062099204,
|
||
|
"links": [],
|
||
|
"panels": [
|
||
|
{
|
||
|
"content": "Note: this dashboard requires Kubecost metrics to be available in your Prometheus deployment. [Learn more](https://github.com/kubecost/cost-model/blob/master/PROMETHEUS.md)",
|
||
|
"gridPos": {
|
||
|
"h": 2,
|
||
|
"w": 24,
|
||
|
"x": 0,
|
||
|
"y": 0
|
||
|
},
|
||
|
"id": 27,
|
||
|
"links": [],
|
||
|
"mode": "markdown",
|
||
|
"title": "",
|
||
|
"transparent": true,
|
||
|
"type": "text"
|
||
|
},
|
||
|
{
|
||
|
"cacheTimeout": null,
|
||
|
"colorBackground": false,
|
||
|
"colorValue": false,
|
||
|
"colors": [
|
||
|
"#299c46",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"#d44a3a"
|
||
|
],
|
||
|
"datasource": "${datasource}",
|
||
|
"decimals": 2,
|
||
|
"description": "Monthly run rate of CPU + GPU costs based on currently provisioned resources.",
|
||
|
"format": "currencyUSD",
|
||
|
"gauge": {
|
||
|
"maxValue": 100,
|
||
|
"minValue": 0,
|
||
|
"show": false,
|
||
|
"thresholdLabels": false,
|
||
|
"thresholdMarkers": true
|
||
|
},
|
||
|
"gridPos": {
|
||
|
"h": 3,
|
||
|
"w": 6,
|
||
|
"x": 0,
|
||
|
"y": 2
|
||
|
},
|
||
|
"hideTimeOverride": true,
|
||
|
"id": 2,
|
||
|
"interval": null,
|
||
|
"links": [],
|
||
|
"mappingType": 1,
|
||
|
"mappingTypes": [
|
||
|
{
|
||
|
"name": "value to text",
|
||
|
"value": 1
|
||
|
},
|
||
|
{
|
||
|
"name": "range to text",
|
||
|
"value": 2
|
||
|
}
|
||
|
],
|
||
|
"maxDataPoints": 100,
|
||
|
"nullPointMode": "connected",
|
||
|
"nullText": null,
|
||
|
"postfix": "",
|
||
|
"postfixFontSize": "50%",
|
||
|
"prefix": "",
|
||
|
"prefixFontSize": "50%",
|
||
|
"rangeMaps": [
|
||
|
{
|
||
|
"from": "null",
|
||
|
"text": "N/A",
|
||
|
"to": "null"
|
||
|
}
|
||
|
],
|
||
|
"sparkline": {
|
||
|
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||
|
"full": true,
|
||
|
"lineColor": "rgb(31, 120, 193)",
|
||
|
"show": false
|
||
|
},
|
||
|
"tableColumn": "",
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "sum(\n avg(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node) * avg(node_cpu_hourly_cost) by (node) * 730 * (1-$useDiscount/100) +\n avg(node_gpu_hourly_cost) by (node) * 730 * (1-$useDiscount/100)\n)",
|
||
|
"format": "time_series",
|
||
|
"instant": true,
|
||
|
"interval": "",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": " {{ node }}",
|
||
|
"refId": "A"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": "",
|
||
|
"timeFrom": "15m",
|
||
|
"timeShift": null,
|
||
|
"title": "CPU Cost",
|
||
|
"type": "singlestat",
|
||
|
"valueFontSize": "80%",
|
||
|
"valueMaps": [
|
||
|
{
|
||
|
"op": "=",
|
||
|
"text": "N/A",
|
||
|
"value": "null"
|
||
|
}
|
||
|
],
|
||
|
"valueName": "current"
|
||
|
},
|
||
|
{
|
||
|
"cacheTimeout": null,
|
||
|
"colorBackground": false,
|
||
|
"colorValue": false,
|
||
|
"colors": [
|
||
|
"#299c46",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"#d44a3a"
|
||
|
],
|
||
|
"datasource": "${datasource}",
|
||
|
"decimals": 2,
|
||
|
"description": "Monthly run rate of memory costs based on currently provisioned expenses.",
|
||
|
"format": "currencyUSD",
|
||
|
"gauge": {
|
||
|
"maxValue": 100,
|
||
|
"minValue": 0,
|
||
|
"show": false,
|
||
|
"thresholdLabels": false,
|
||
|
"thresholdMarkers": true
|
||
|
},
|
||
|
"gridPos": {
|
||
|
"h": 3,
|
||
|
"w": 6,
|
||
|
"x": 6,
|
||
|
"y": 2
|
||
|
},
|
||
|
"hideTimeOverride": true,
|
||
|
"id": 3,
|
||
|
"interval": null,
|
||
|
"links": [],
|
||
|
"mappingType": 1,
|
||
|
"mappingTypes": [
|
||
|
{
|
||
|
"name": "value to text",
|
||
|
"value": 1
|
||
|
},
|
||
|
{
|
||
|
"name": "range to text",
|
||
|
"value": 2
|
||
|
}
|
||
|
],
|
||
|
"maxDataPoints": 100,
|
||
|
"nullPointMode": "connected",
|
||
|
"nullText": null,
|
||
|
"postfix": "",
|
||
|
"postfixFontSize": "50%",
|
||
|
"prefix": "",
|
||
|
"prefixFontSize": "50%",
|
||
|
"rangeMaps": [
|
||
|
{
|
||
|
"from": "null",
|
||
|
"text": "N/A",
|
||
|
"to": "null"
|
||
|
}
|
||
|
],
|
||
|
"sparkline": {
|
||
|
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||
|
"full": false,
|
||
|
"lineColor": "rgb(31, 120, 193)",
|
||
|
"show": false
|
||
|
},
|
||
|
"tableColumn": "",
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "sum(\n avg(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node) / 1024 / 1024 / 1024 * avg(node_ram_hourly_cost) by (node) * 730 * (1-$useDiscount/100)\n)",
|
||
|
"format": "time_series",
|
||
|
"instant": true,
|
||
|
"interval": "",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": " {{ node }}",
|
||
|
"refId": "A"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": "",
|
||
|
"timeFrom": "15m",
|
||
|
"timeShift": null,
|
||
|
"title": "Memory Cost",
|
||
|
"type": "singlestat",
|
||
|
"valueFontSize": "80%",
|
||
|
"valueMaps": [
|
||
|
{
|
||
|
"op": "=",
|
||
|
"text": "N/A",
|
||
|
"value": "null"
|
||
|
}
|
||
|
],
|
||
|
"valueName": "current"
|
||
|
},
|
||
|
{
|
||
|
"cacheTimeout": null,
|
||
|
"colorBackground": false,
|
||
|
"colorValue": false,
|
||
|
"colors": [
|
||
|
"#299c46",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"#d44a3a"
|
||
|
],
|
||
|
"datasource": "${datasource}",
|
||
|
"decimals": 2,
|
||
|
"description": "Monthly run rate of attached storage and PV costs based on currently provisioned resources.",
|
||
|
"format": "currencyUSD",
|
||
|
"gauge": {
|
||
|
"maxValue": 100,
|
||
|
"minValue": 0,
|
||
|
"show": false,
|
||
|
"thresholdLabels": false,
|
||
|
"thresholdMarkers": true
|
||
|
},
|
||
|
"gridPos": {
|
||
|
"h": 3,
|
||
|
"w": 6,
|
||
|
"x": 12,
|
||
|
"y": 2
|
||
|
},
|
||
|
"hideTimeOverride": true,
|
||
|
"id": 4,
|
||
|
"interval": null,
|
||
|
"links": [],
|
||
|
"mappingType": 1,
|
||
|
"mappingTypes": [
|
||
|
{
|
||
|
"name": "value to text",
|
||
|
"value": 1
|
||
|
},
|
||
|
{
|
||
|
"name": "range to text",
|
||
|
"value": 2
|
||
|
}
|
||
|
],
|
||
|
"maxDataPoints": 100,
|
||
|
"nullPointMode": "connected",
|
||
|
"nullText": null,
|
||
|
"postfix": "",
|
||
|
"postfixFontSize": "50%",
|
||
|
"prefix": "",
|
||
|
"prefixFontSize": "50%",
|
||
|
"rangeMaps": [
|
||
|
{
|
||
|
"from": "null",
|
||
|
"text": "N/A",
|
||
|
"to": "null"
|
||
|
}
|
||
|
],
|
||
|
"sparkline": {
|
||
|
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||
|
"full": false,
|
||
|
"lineColor": "rgb(31, 120, 193)",
|
||
|
"show": false
|
||
|
},
|
||
|
"tableColumn": "",
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "sum(avg(pv_hourly_cost) by (persistentvolume) * 730 * avg(kube_persistentvolume_capacity_bytes) by (persistentvolume) / 1024 / 1024 / 1024) \n+\nsum(sum(container_fs_limit_bytes{device!=\"tmpfs\", id=\"/\"}) by (instance) / 1024 / 1024 / 1024) * $localStorageGBCost",
|
||
|
"format": "time_series",
|
||
|
"instant": true,
|
||
|
"interval": "",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": " {{ node }}",
|
||
|
"refId": "A"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": "",
|
||
|
"timeFrom": "15m",
|
||
|
"timeShift": null,
|
||
|
"title": "Storage Cost",
|
||
|
"type": "singlestat",
|
||
|
"valueFontSize": "80%",
|
||
|
"valueMaps": [
|
||
|
{
|
||
|
"op": "=",
|
||
|
"text": "N/A",
|
||
|
"value": "null"
|
||
|
}
|
||
|
],
|
||
|
"valueName": "current"
|
||
|
},
|
||
|
{
|
||
|
"cacheTimeout": null,
|
||
|
"colorBackground": false,
|
||
|
"colorValue": false,
|
||
|
"colors": [
|
||
|
"#299c46",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"#d44a3a"
|
||
|
],
|
||
|
"datasource": "${datasource}",
|
||
|
"decimals": 2,
|
||
|
"description": "Sum of compute, memory, storage and network costs.",
|
||
|
"format": "currencyUSD",
|
||
|
"gauge": {
|
||
|
"maxValue": 100,
|
||
|
"minValue": 0,
|
||
|
"show": false,
|
||
|
"thresholdLabels": false,
|
||
|
"thresholdMarkers": true
|
||
|
},
|
||
|
"gridPos": {
|
||
|
"h": 7,
|
||
|
"w": 6,
|
||
|
"x": 18,
|
||
|
"y": 2
|
||
|
},
|
||
|
"hideTimeOverride": true,
|
||
|
"id": 11,
|
||
|
"interval": null,
|
||
|
"links": [],
|
||
|
"mappingType": 1,
|
||
|
"mappingTypes": [
|
||
|
{
|
||
|
"name": "value to text",
|
||
|
"value": 1
|
||
|
},
|
||
|
{
|
||
|
"name": "range to text",
|
||
|
"value": 2
|
||
|
}
|
||
|
],
|
||
|
"maxDataPoints": 100,
|
||
|
"nullPointMode": "connected",
|
||
|
"nullText": null,
|
||
|
"postfix": "",
|
||
|
"postfixFontSize": "50%",
|
||
|
"prefix": "",
|
||
|
"prefixFontSize": "50%",
|
||
|
"rangeMaps": [
|
||
|
{
|
||
|
"from": "null",
|
||
|
"text": "N/A",
|
||
|
"to": "null"
|
||
|
}
|
||
|
],
|
||
|
"sparkline": {
|
||
|
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||
|
"full": false,
|
||
|
"lineColor": "rgb(31, 120, 193)",
|
||
|
"show": false
|
||
|
},
|
||
|
"tableColumn": "",
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "# Compute\nsum(\n avg(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node) * avg(node_cpu_hourly_cost) by (node) * 730 * (1-$useDiscount/100) +\n avg(node_gpu_hourly_cost) by (node) * 730 * (1-$useDiscount/100)\n) +\n\n\n# Memory\nsum(\n avg(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node) / 1024 / 1024 / 1024 * avg(node_ram_hourly_cost) by (node) * 730 * (1-$useDiscount/100)\n) +\n\n# Storage \n\nsum(avg(pv_hourly_cost) by (persistentvolume) * 730 * avg(kube_persistentvolume_capacity_bytes) by (persistentvolume) / 1024 / 1024 / 1024) \n+\nsum(sum(container_fs_limit_bytes{device!=\"tmpfs\", id=\"/\"}) by (instance) / 1024 / 1024 / 1024) * $localStorageGBCost",
|
||
|
"format": "time_series",
|
||
|
"instant": true,
|
||
|
"interval": "",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": " {{ node }}",
|
||
|
"refId": "A"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": "",
|
||
|
"timeFrom": "15m",
|
||
|
"timeShift": null,
|
||
|
"title": "Total Cost",
|
||
|
"type": "singlestat",
|
||
|
"valueFontSize": "120%",
|
||
|
"valueMaps": [
|
||
|
{
|
||
|
"op": "=",
|
||
|
"text": "N/A",
|
||
|
"value": "null"
|
||
|
}
|
||
|
],
|
||
|
"valueName": "current"
|
||
|
},
|
||
|
{
|
||
|
"cacheTimeout": null,
|
||
|
"colorBackground": false,
|
||
|
"colorValue": true,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(50, 172, 45, 0.97)",
|
||
|
"#c15c17"
|
||
|
],
|
||
|
"datasource": "${datasource}",
|
||
|
"decimals": 2,
|
||
|
"description": "Current CPU use from applications divided by allocatable CPUs",
|
||
|
"editable": true,
|
||
|
"error": false,
|
||
|
"format": "percent",
|
||
|
"gauge": {
|
||
|
"maxValue": 100,
|
||
|
"minValue": 0,
|
||
|
"show": true,
|
||
|
"thresholdLabels": false,
|
||
|
"thresholdMarkers": true
|
||
|
},
|
||
|
"gridPos": {
|
||
|
"h": 4,
|
||
|
"w": 3,
|
||
|
"x": 0,
|
||
|
"y": 5
|
||
|
},
|
||
|
"height": "180px",
|
||
|
"hideTimeOverride": true,
|
||
|
"id": 13,
|
||
|
"interval": null,
|
||
|
"isNew": true,
|
||
|
"links": [],
|
||
|
"mappingType": 1,
|
||
|
"mappingTypes": [
|
||
|
{
|
||
|
"name": "value to text",
|
||
|
"value": 1
|
||
|
},
|
||
|
{
|
||
|
"name": "range to text",
|
||
|
"value": 2
|
||
|
}
|
||
|
],
|
||
|
"maxDataPoints": 100,
|
||
|
"nullPointMode": "connected",
|
||
|
"nullText": null,
|
||
|
"postfix": "",
|
||
|
"postfixFontSize": "50%",
|
||
|
"prefix": "",
|
||
|
"prefixFontSize": "50%",
|
||
|
"rangeMaps": [
|
||
|
{
|
||
|
"from": "null",
|
||
|
"text": "N/A",
|
||
|
"to": "null"
|
||
|
}
|
||
|
],
|
||
|
"sparkline": {
|
||
|
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||
|
"full": false,
|
||
|
"lineColor": "rgb(31, 120, 193)",
|
||
|
"show": false
|
||
|
},
|
||
|
"tableColumn": "",
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "(\n sum(\n count(irate(container_cpu_usage_seconds_total{id=\"/\"}[10m])) by (instance)\n * on (instance) \n sum(irate(container_cpu_usage_seconds_total{id=\"/\"}[10m])) by (instance)\n ) \n / \n (sum (kube_node_status_allocatable{resource=\"cpu\", unit=\"core\"}))\n) * 100",
|
||
|
"format": "time_series",
|
||
|
"interval": "",
|
||
|
"intervalFactor": 1,
|
||
|
"refId": "A",
|
||
|
"step": 10
|
||
|
}
|
||
|
],
|
||
|
"thresholds": "30, 80",
|
||
|
"timeFrom": "",
|
||
|
"title": "CPU Utilization",
|
||
|
"type": "singlestat",
|
||
|
"valueFontSize": "80%",
|
||
|
"valueMaps": [
|
||
|
{
|
||
|
"op": "=",
|
||
|
"text": "N/A",
|
||
|
"value": "null"
|
||
|
}
|
||
|
],
|
||
|
"valueName": "current"
|
||
|
},
|
||
|
{
|
||
|
"cacheTimeout": null,
|
||
|
"colorBackground": false,
|
||
|
"colorValue": true,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(50, 172, 45, 0.97)",
|
||
|
"#c15c17"
|
||
|
],
|
||
|
"datasource": "${datasource}",
|
||
|
"decimals": 2,
|
||
|
"description": "Current CPU reservation requests from applications vs allocatable CPU",
|
||
|
"editable": true,
|
||
|
"error": false,
|
||
|
"format": "percent",
|
||
|
"gauge": {
|
||
|
"maxValue": 100,
|
||
|
"minValue": 0,
|
||
|
"show": true,
|
||
|
"thresholdLabels": false,
|
||
|
"thresholdMarkers": true
|
||
|
},
|
||
|
"gridPos": {
|
||
|
"h": 4,
|
||
|
"w": 3,
|
||
|
"x": 3,
|
||
|
"y": 5
|
||
|
},
|
||
|
"height": "180px",
|
||
|
"id": 15,
|
||
|
"interval": null,
|
||
|
"isNew": true,
|
||
|
"links": [],
|
||
|
"mappingType": 1,
|
||
|
"mappingTypes": [
|
||
|
{
|
||
|
"name": "value to text",
|
||
|
"value": 1
|
||
|
},
|
||
|
{
|
||
|
"name": "range to text",
|
||
|
"value": 2
|
||
|
}
|
||
|
],
|
||
|
"maxDataPoints": 100,
|
||
|
"nullPointMode": "connected",
|
||
|
"nullText": null,
|
||
|
"postfix": "",
|
||
|
"postfixFontSize": "50%",
|
||
|
"prefix": "",
|
||
|
"prefixFontSize": "50%",
|
||
|
"rangeMaps": [
|
||
|
{
|
||
|
"from": "null",
|
||
|
"text": "N/A",
|
||
|
"to": "null"
|
||
|
}
|
||
|
],
|
||
|
"sparkline": {
|
||
|
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||
|
"full": false,
|
||
|
"lineColor": "rgb(31, 120, 193)",
|
||
|
"show": false
|
||
|
},
|
||
|
"tableColumn": "",
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "SUM(kube_pod_container_resource_requests{resource=\"cpu\", unit=\"core\"}) / SUM(kube_node_status_allocatable{resource=\"cpu\", unit=\"core\"}) * 100",
|
||
|
"format": "time_series",
|
||
|
"interval": "",
|
||
|
"intervalFactor": 1,
|
||
|
"refId": "A",
|
||
|
"step": 10
|
||
|
}
|
||
|
],
|
||
|
"thresholds": "30, 80",
|
||
|
"title": "CPU Requests",
|
||
|
"type": "singlestat",
|
||
|
"valueFontSize": "80%",
|
||
|
"valueMaps": [
|
||
|
{
|
||
|
"op": "=",
|
||
|
"text": "N/A",
|
||
|
"value": "null"
|
||
|
}
|
||
|
],
|
||
|
"valueName": "current"
|
||
|
},
|
||
|
{
|
||
|
"cacheTimeout": null,
|
||
|
"colorBackground": false,
|
||
|
"colorValue": true,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(50, 172, 45, 0.97)",
|
||
|
"#c15c17"
|
||
|
],
|
||
|
"datasource": "${datasource}",
|
||
|
"description": "Current RAM use vs RAM available",
|
||
|
"editable": true,
|
||
|
"error": false,
|
||
|
"format": "percent",
|
||
|
"gauge": {
|
||
|
"maxValue": 100,
|
||
|
"minValue": 0,
|
||
|
"show": true,
|
||
|
"thresholdLabels": false,
|
||
|
"thresholdMarkers": true
|
||
|
},
|
||
|
"gridPos": {
|
||
|
"h": 4,
|
||
|
"w": 3,
|
||
|
"x": 6,
|
||
|
"y": 5
|
||
|
},
|
||
|
"height": "180px",
|
||
|
"hideTimeOverride": true,
|
||
|
"id": 17,
|
||
|
"interval": null,
|
||
|
"isNew": true,
|
||
|
"links": [],
|
||
|
"mappingType": 1,
|
||
|
"mappingTypes": [
|
||
|
{
|
||
|
"name": "value to text",
|
||
|
"value": 1
|
||
|
},
|
||
|
{
|
||
|
"name": "range to text",
|
||
|
"value": 2
|
||
|
}
|
||
|
],
|
||
|
"maxDataPoints": 100,
|
||
|
"nullPointMode": "connected",
|
||
|
"nullText": null,
|
||
|
"postfix": "",
|
||
|
"postfixFontSize": "50%",
|
||
|
"prefix": "",
|
||
|
"prefixFontSize": "50%",
|
||
|
"rangeMaps": [
|
||
|
{
|
||
|
"from": "null",
|
||
|
"text": "N/A",
|
||
|
"to": "null"
|
||
|
}
|
||
|
],
|
||
|
"sparkline": {
|
||
|
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||
|
"full": false,
|
||
|
"lineColor": "rgb(31, 120, 193)",
|
||
|
"show": false
|
||
|
},
|
||
|
"tableColumn": "",
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "SUM(container_memory_usage_bytes{namespace!=\"\"}) / SUM(kube_node_status_allocatable{resource=\"memory\", unit=\"byte\"}) * 100",
|
||
|
"format": "time_series",
|
||
|
"interval": "",
|
||
|
"intervalFactor": 1,
|
||
|
"refId": "A",
|
||
|
"step": 10
|
||
|
},
|
||
|
{
|
||
|
"expr": "",
|
||
|
"format": "time_series",
|
||
|
"intervalFactor": 1,
|
||
|
"refId": "B"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": "30,80",
|
||
|
"timeFrom": "",
|
||
|
"title": "RAM Utilization",
|
||
|
"transparent": false,
|
||
|
"type": "singlestat",
|
||
|
"valueFontSize": "80%",
|
||
|
"valueMaps": [
|
||
|
{
|
||
|
"op": "=",
|
||
|
"text": "N/A",
|
||
|
"value": "null"
|
||
|
}
|
||
|
],
|
||
|
"valueName": "current"
|
||
|
},
|
||
|
{
|
||
|
"cacheTimeout": null,
|
||
|
"colorBackground": false,
|
||
|
"colorValue": true,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(50, 172, 45, 0.97)",
|
||
|
"#c15c17"
|
||
|
],
|
||
|
"datasource": "${datasource}",
|
||
|
"description": "Current RAM requests vs RAM available",
|
||
|
"editable": true,
|
||
|
"error": false,
|
||
|
"format": "percent",
|
||
|
"gauge": {
|
||
|
"maxValue": 100,
|
||
|
"minValue": 0,
|
||
|
"show": true,
|
||
|
"thresholdLabels": false,
|
||
|
"thresholdMarkers": true
|
||
|
},
|
||
|
"gridPos": {
|
||
|
"h": 4,
|
||
|
"w": 3,
|
||
|
"x": 9,
|
||
|
"y": 5
|
||
|
},
|
||
|
"height": "180px",
|
||
|
"id": 19,
|
||
|
"interval": null,
|
||
|
"isNew": true,
|
||
|
"links": [],
|
||
|
"mappingType": 1,
|
||
|
"mappingTypes": [
|
||
|
{
|
||
|
"name": "value to text",
|
||
|
"value": 1
|
||
|
},
|
||
|
{
|
||
|
"name": "range to text",
|
||
|
"value": 2
|
||
|
}
|
||
|
],
|
||
|
"maxDataPoints": 100,
|
||
|
"nullPointMode": "connected",
|
||
|
"nullText": null,
|
||
|
"postfix": "",
|
||
|
"postfixFontSize": "50%",
|
||
|
"prefix": "",
|
||
|
"prefixFontSize": "50%",
|
||
|
"rangeMaps": [
|
||
|
{
|
||
|
"from": "null",
|
||
|
"text": "N/A",
|
||
|
"to": "null"
|
||
|
}
|
||
|
],
|
||
|
"sparkline": {
|
||
|
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||
|
"full": false,
|
||
|
"lineColor": "rgb(31, 120, 193)",
|
||
|
"show": false
|
||
|
},
|
||
|
"tableColumn": "",
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "(\n sum(kube_pod_container_resource_requests{resource=\"memory\", unit=\"byte\", namespace!=\"\"})\n /\n sum(kube_node_status_allocatable{resource=\"memory\", unit=\"byte\"})\n) * 100",
|
||
|
"format": "time_series",
|
||
|
"interval": "",
|
||
|
"intervalFactor": 1,
|
||
|
"refId": "A",
|
||
|
"step": 10
|
||
|
}
|
||
|
],
|
||
|
"thresholds": "30,80",
|
||
|
"title": "RAM Requests",
|
||
|
"transparent": false,
|
||
|
"type": "singlestat",
|
||
|
"valueFontSize": "80%",
|
||
|
"valueMaps": [
|
||
|
{
|
||
|
"op": "=",
|
||
|
"text": "N/A",
|
||
|
"value": "null"
|
||
|
}
|
||
|
],
|
||
|
"valueName": "current"
|
||
|
},
|
||
|
{
|
||
|
"cacheTimeout": null,
|
||
|
"colorBackground": false,
|
||
|
"colorValue": true,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(50, 172, 45, 0.97)",
|
||
|
"#c15c17"
|
||
|
],
|
||
|
"datasource": "${datasource}",
|
||
|
"decimals": 2,
|
||
|
"description": "This gauge shows the current standard storage use, including cluster storage, vs storage available",
|
||
|
"editable": true,
|
||
|
"error": false,
|
||
|
"format": "percent",
|
||
|
"gauge": {
|
||
|
"maxValue": 100,
|
||
|
"minValue": 0,
|
||
|
"show": true,
|
||
|
"thresholdLabels": false,
|
||
|
"thresholdMarkers": true
|
||
|
},
|
||
|
"gridPos": {
|
||
|
"h": 4,
|
||
|
"w": 6,
|
||
|
"x": 12,
|
||
|
"y": 5
|
||
|
},
|
||
|
"height": "180px",
|
||
|
"hideTimeOverride": true,
|
||
|
"id": 21,
|
||
|
"interval": null,
|
||
|
"isNew": true,
|
||
|
"links": [],
|
||
|
"mappingType": 1,
|
||
|
"mappingTypes": [
|
||
|
{
|
||
|
"name": "value to text",
|
||
|
"value": 1
|
||
|
},
|
||
|
{
|
||
|
"name": "range to text",
|
||
|
"value": 2
|
||
|
}
|
||
|
],
|
||
|
"maxDataPoints": 100,
|
||
|
"nullPointMode": "connected",
|
||
|
"nullText": null,
|
||
|
"postfix": "",
|
||
|
"postfixFontSize": "50%",
|
||
|
"prefix": "",
|
||
|
"prefixFontSize": "50%",
|
||
|
"rangeMaps": [
|
||
|
{
|
||
|
"from": "null",
|
||
|
"text": "N/A",
|
||
|
"to": "null"
|
||
|
}
|
||
|
],
|
||
|
"sparkline": {
|
||
|
"fillColor": "rgba(31, 118, 189, 0.18)",
|
||
|
"full": false,
|
||
|
"lineColor": "rgb(31, 120, 193)",
|
||
|
"show": false
|
||
|
},
|
||
|
"tableColumn": "",
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "sum (\n sum(kube_persistentvolumeclaim_info) by (persistentvolumeclaim, namespace)\n + on (persistentvolumeclaim, namespace)\n sum(pod_pvc_allocation) by (persistentvolumeclaim, namespace) or up * 0\n + sum(container_fs_usage_bytes{device=~\"^/dev/[sv]d[a-z][1-9]$\",id=\"/\"})\n) /\nsum (\n sum(kube_persistentvolumeclaim_info) by (persistentvolumeclaim, namespace)\n + on (persistentvolumeclaim, namespace)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n + sum(container_fs_limit_bytes{device=~\"^/dev/[sv]d[a-z][1-9]$\",id=\"/\"})\n) * 100",
|
||
|
"format": "time_series",
|
||
|
"interval": "",
|
||
|
"intervalFactor": 1,
|
||
|
"refId": "A",
|
||
|
"step": 10
|
||
|
}
|
||
|
],
|
||
|
"thresholds": "30, 80",
|
||
|
"timeFrom": "",
|
||
|
"title": "Storage Utilization",
|
||
|
"type": "singlestat",
|
||
|
"valueFontSize": "80%",
|
||
|
"valueMaps": [
|
||
|
{
|
||
|
"op": "=",
|
||
|
"text": "N/A",
|
||
|
"value": "null"
|
||
|
}
|
||
|
],
|
||
|
"valueName": "current"
|
||
|
},
|
||
|
{
|
||
|
"aliasColors": {},
|
||
|
"bars": false,
|
||
|
"dashLength": 10,
|
||
|
"dashes": false,
|
||
|
"datasource": "${datasource}",
|
||
|
"description": "Monthly run rate of CPU + GPU costs",
|
||
|
"fill": 1,
|
||
|
"gridPos": {
|
||
|
"h": 7,
|
||
|
"w": 6,
|
||
|
"x": 0,
|
||
|
"y": 9
|
||
|
},
|
||
|
"id": 6,
|
||
|
"interval": "1m",
|
||
|
"legend": {
|
||
|
"avg": false,
|
||
|
"current": false,
|
||
|
"max": false,
|
||
|
"min": false,
|
||
|
"show": false,
|
||
|
"total": false,
|
||
|
"values": false
|
||
|
},
|
||
|
"lines": true,
|
||
|
"linewidth": 1,
|
||
|
"links": [],
|
||
|
"nullPointMode": "null",
|
||
|
"percentage": false,
|
||
|
"pointradius": 5,
|
||
|
"points": false,
|
||
|
"renderer": "flot",
|
||
|
"seriesOverrides": [],
|
||
|
"spaceLength": 10,
|
||
|
"stack": false,
|
||
|
"steppedLine": false,
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "sum(\n avg(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node) * avg(node_cpu_hourly_cost) by (node) * 730 +\n avg(node_gpu_hourly_cost) by (node) * 730\n)",
|
||
|
"format": "time_series",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "compute cost",
|
||
|
"refId": "A"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": [],
|
||
|
"timeFrom": null,
|
||
|
"timeShift": null,
|
||
|
"title": "Compute Cost",
|
||
|
"tooltip": {
|
||
|
"shared": true,
|
||
|
"sort": 0,
|
||
|
"value_type": "individual"
|
||
|
},
|
||
|
"type": "graph",
|
||
|
"xaxis": {
|
||
|
"buckets": null,
|
||
|
"mode": "time",
|
||
|
"name": null,
|
||
|
"show": true,
|
||
|
"values": []
|
||
|
},
|
||
|
"yaxes": [
|
||
|
{
|
||
|
"format": "currencyUSD",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": "0",
|
||
|
"show": true
|
||
|
},
|
||
|
{
|
||
|
"format": "short",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": null,
|
||
|
"show": true
|
||
|
}
|
||
|
],
|
||
|
"yaxis": {
|
||
|
"align": false,
|
||
|
"alignLevel": null
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"aliasColors": {},
|
||
|
"bars": false,
|
||
|
"dashLength": 10,
|
||
|
"dashes": false,
|
||
|
"datasource": "${datasource}",
|
||
|
"description": "Monthly run rate of memory costs",
|
||
|
"fill": 1,
|
||
|
"gridPos": {
|
||
|
"h": 7,
|
||
|
"w": 6,
|
||
|
"x": 6,
|
||
|
"y": 9
|
||
|
},
|
||
|
"id": 9,
|
||
|
"interval": "1m",
|
||
|
"legend": {
|
||
|
"avg": false,
|
||
|
"current": false,
|
||
|
"max": false,
|
||
|
"min": false,
|
||
|
"show": false,
|
||
|
"total": false,
|
||
|
"values": false
|
||
|
},
|
||
|
"lines": true,
|
||
|
"linewidth": 1,
|
||
|
"links": [],
|
||
|
"nullPointMode": "null",
|
||
|
"percentage": false,
|
||
|
"pointradius": 5,
|
||
|
"points": false,
|
||
|
"renderer": "flot",
|
||
|
"seriesOverrides": [],
|
||
|
"spaceLength": 10,
|
||
|
"stack": false,
|
||
|
"steppedLine": false,
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "sum(\n avg(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node) / 1024 / 1024 / 1024 * avg(node_ram_hourly_cost) by (node) * 730\n)",
|
||
|
"format": "time_series",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "memory cost",
|
||
|
"refId": "A"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": [],
|
||
|
"timeFrom": null,
|
||
|
"timeShift": null,
|
||
|
"title": "Memory Cost",
|
||
|
"tooltip": {
|
||
|
"shared": true,
|
||
|
"sort": 0,
|
||
|
"value_type": "individual"
|
||
|
},
|
||
|
"type": "graph",
|
||
|
"xaxis": {
|
||
|
"buckets": null,
|
||
|
"mode": "time",
|
||
|
"name": null,
|
||
|
"show": true,
|
||
|
"values": []
|
||
|
},
|
||
|
"yaxes": [
|
||
|
{
|
||
|
"format": "currencyUSD",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": "0",
|
||
|
"show": true
|
||
|
},
|
||
|
{
|
||
|
"format": "short",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": null,
|
||
|
"show": true
|
||
|
}
|
||
|
],
|
||
|
"yaxis": {
|
||
|
"align": false,
|
||
|
"alignLevel": null
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"aliasColors": {},
|
||
|
"bars": false,
|
||
|
"dashLength": 10,
|
||
|
"dashes": false,
|
||
|
"datasource": "${datasource}",
|
||
|
"description": "Monthly run rate of attached disk + PV storage costs",
|
||
|
"fill": 1,
|
||
|
"gridPos": {
|
||
|
"h": 7,
|
||
|
"w": 6,
|
||
|
"x": 12,
|
||
|
"y": 9
|
||
|
},
|
||
|
"id": 10,
|
||
|
"interval": "1m",
|
||
|
"legend": {
|
||
|
"avg": false,
|
||
|
"current": false,
|
||
|
"max": false,
|
||
|
"min": false,
|
||
|
"show": false,
|
||
|
"total": false,
|
||
|
"values": false
|
||
|
},
|
||
|
"lines": true,
|
||
|
"linewidth": 1,
|
||
|
"links": [],
|
||
|
"nullPointMode": "null",
|
||
|
"percentage": false,
|
||
|
"pointradius": 5,
|
||
|
"points": false,
|
||
|
"renderer": "flot",
|
||
|
"seriesOverrides": [],
|
||
|
"spaceLength": 10,
|
||
|
"stack": false,
|
||
|
"steppedLine": false,
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "sum(\n avg(avg_over_time(pv_hourly_cost[$timeRange] offset 1m)) by (persistentvolume) * 730 \n * avg(avg_over_time(kube_persistentvolume_capacity_bytes[$timeRange] offset 1m)) by (persistentvolume) / 1024 / 1024 / 1024\n) +\nsum(avg(container_fs_limit_bytes{device!=\"tmpfs\", id=\"/\"}) by (instance) / 1024 / 1024 / 1024) * $localStorageGBCost",
|
||
|
"format": "time_series",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "storage cost",
|
||
|
"refId": "A"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": [],
|
||
|
"timeFrom": null,
|
||
|
"timeShift": null,
|
||
|
"title": "Storage Cost",
|
||
|
"tooltip": {
|
||
|
"shared": true,
|
||
|
"sort": 0,
|
||
|
"value_type": "individual"
|
||
|
},
|
||
|
"type": "graph",
|
||
|
"xaxis": {
|
||
|
"buckets": null,
|
||
|
"mode": "time",
|
||
|
"name": null,
|
||
|
"show": true,
|
||
|
"values": []
|
||
|
},
|
||
|
"yaxes": [
|
||
|
{
|
||
|
"format": "currencyUSD",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": "0",
|
||
|
"show": true
|
||
|
},
|
||
|
{
|
||
|
"format": "short",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": null,
|
||
|
"show": true
|
||
|
}
|
||
|
],
|
||
|
"yaxis": {
|
||
|
"align": false,
|
||
|
"alignLevel": null
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"aliasColors": {},
|
||
|
"bars": false,
|
||
|
"dashLength": 10,
|
||
|
"dashes": false,
|
||
|
"datasource": "${datasource}",
|
||
|
"description": "Sum of compute, memory, and storage costs",
|
||
|
"fill": 1,
|
||
|
"gridPos": {
|
||
|
"h": 7,
|
||
|
"w": 6,
|
||
|
"x": 18,
|
||
|
"y": 9
|
||
|
},
|
||
|
"id": 22,
|
||
|
"interval": "1m",
|
||
|
"legend": {
|
||
|
"avg": false,
|
||
|
"current": false,
|
||
|
"max": false,
|
||
|
"min": false,
|
||
|
"show": false,
|
||
|
"total": false,
|
||
|
"values": false
|
||
|
},
|
||
|
"lines": true,
|
||
|
"linewidth": 1,
|
||
|
"links": [],
|
||
|
"nullPointMode": "null",
|
||
|
"percentage": false,
|
||
|
"pointradius": 5,
|
||
|
"points": false,
|
||
|
"renderer": "flot",
|
||
|
"seriesOverrides": [],
|
||
|
"spaceLength": 10,
|
||
|
"stack": false,
|
||
|
"steppedLine": false,
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "# Compute\nsum(\n avg(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node) * avg(node_cpu_hourly_cost) by (node) * 730 * (1-$useDiscount/100) +\n avg(node_gpu_hourly_cost) by (node) * 730 * (1-$useDiscount/100)\n) +\n\n\n# Memory\nsum(\n avg(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node) / 1024 / 1024 / 1024 * avg(node_ram_hourly_cost) by (node) * 730 * (1-$useDiscount/100)\n) +\n\n# Storage \n\nsum(avg(pv_hourly_cost) by (persistentvolume) * 730 * avg(kube_persistentvolume_capacity_bytes) by (persistentvolume) / 1024 / 1024 / 1024) \n+\nsum(sum(container_fs_limit_bytes{device!=\"tmpfs\", id=\"/\"}) by (instance) / 1024 / 1024 / 1024) * $localStorageGBCost",
|
||
|
"format": "time_series",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "total cost",
|
||
|
"refId": "A"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": [],
|
||
|
"timeFrom": null,
|
||
|
"timeShift": null,
|
||
|
"title": "Total Cost",
|
||
|
"tooltip": {
|
||
|
"shared": true,
|
||
|
"sort": 0,
|
||
|
"value_type": "individual"
|
||
|
},
|
||
|
"type": "graph",
|
||
|
"xaxis": {
|
||
|
"buckets": null,
|
||
|
"mode": "time",
|
||
|
"name": null,
|
||
|
"show": true,
|
||
|
"values": []
|
||
|
},
|
||
|
"yaxes": [
|
||
|
{
|
||
|
"format": "currencyUSD",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": "0",
|
||
|
"show": true
|
||
|
},
|
||
|
{
|
||
|
"format": "short",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": null,
|
||
|
"show": true
|
||
|
}
|
||
|
],
|
||
|
"yaxis": {
|
||
|
"align": false,
|
||
|
"alignLevel": null
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"columns": [],
|
||
|
"datasource": "${datasource}",
|
||
|
"description": "Cost of by resource class of currently provisioned nodes",
|
||
|
"fontSize": "100%",
|
||
|
"gridPos": {
|
||
|
"h": 9,
|
||
|
"w": 12,
|
||
|
"x": 0,
|
||
|
"y": 16
|
||
|
},
|
||
|
"id": 8,
|
||
|
"links": [],
|
||
|
"pageSize": null,
|
||
|
"scroll": true,
|
||
|
"showHeader": true,
|
||
|
"sort": {
|
||
|
"col": 4,
|
||
|
"desc": false
|
||
|
},
|
||
|
"styles": [
|
||
|
{
|
||
|
"alias": "",
|
||
|
"colorMode": null,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"rgba(50, 172, 45, 0.97)"
|
||
|
],
|
||
|
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||
|
"decimals": 2,
|
||
|
"mappingType": 1,
|
||
|
"pattern": "Time",
|
||
|
"thresholds": [],
|
||
|
"type": "hidden",
|
||
|
"unit": "short"
|
||
|
},
|
||
|
{
|
||
|
"alias": "Compute Cost",
|
||
|
"colorMode": null,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"rgba(50, 172, 45, 0.97)"
|
||
|
],
|
||
|
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||
|
"decimals": 2,
|
||
|
"mappingType": 1,
|
||
|
"pattern": "Value",
|
||
|
"thresholds": [],
|
||
|
"type": "number",
|
||
|
"unit": "short"
|
||
|
},
|
||
|
{
|
||
|
"alias": "CPU Cost",
|
||
|
"colorMode": null,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"rgba(50, 172, 45, 0.97)"
|
||
|
],
|
||
|
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||
|
"decimals": 2,
|
||
|
"mappingType": 1,
|
||
|
"pattern": "Value #A",
|
||
|
"thresholds": [],
|
||
|
"type": "number",
|
||
|
"unit": "currencyUSD"
|
||
|
},
|
||
|
{
|
||
|
"alias": "Mem Cost",
|
||
|
"colorMode": null,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"rgba(50, 172, 45, 0.97)"
|
||
|
],
|
||
|
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||
|
"decimals": 2,
|
||
|
"mappingType": 1,
|
||
|
"pattern": "Value #B",
|
||
|
"thresholds": [],
|
||
|
"type": "number",
|
||
|
"unit": "currencyUSD"
|
||
|
},
|
||
|
{
|
||
|
"alias": "Total",
|
||
|
"colorMode": null,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"rgba(50, 172, 45, 0.97)"
|
||
|
],
|
||
|
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||
|
"decimals": 2,
|
||
|
"mappingType": 1,
|
||
|
"pattern": "Value #C",
|
||
|
"thresholds": [],
|
||
|
"type": "number",
|
||
|
"unit": "currencyUSD"
|
||
|
},
|
||
|
{
|
||
|
"alias": "",
|
||
|
"colorMode": null,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"rgba(50, 172, 45, 0.97)"
|
||
|
],
|
||
|
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||
|
"decimals": 2,
|
||
|
"mappingType": 1,
|
||
|
"pattern": "instance",
|
||
|
"thresholds": [],
|
||
|
"type": "hidden",
|
||
|
"unit": "short"
|
||
|
},
|
||
|
{
|
||
|
"alias": "GPU",
|
||
|
"colorMode": null,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"rgba(50, 172, 45, 0.97)"
|
||
|
],
|
||
|
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||
|
"decimals": 2,
|
||
|
"mappingType": 1,
|
||
|
"pattern": "Value #D",
|
||
|
"thresholds": [],
|
||
|
"type": "number",
|
||
|
"unit": "short"
|
||
|
},
|
||
|
{
|
||
|
"alias": "",
|
||
|
"colorMode": null,
|
||
|
"colors": [
|
||
|
"rgba(245, 54, 54, 0.9)",
|
||
|
"rgba(237, 129, 40, 0.89)",
|
||
|
"rgba(50, 172, 45, 0.97)"
|
||
|
],
|
||
|
"decimals": 2,
|
||
|
"pattern": "/.*/",
|
||
|
"thresholds": [],
|
||
|
"type": "number",
|
||
|
"unit": "short"
|
||
|
}
|
||
|
],
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "avg(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node) * avg(node_cpu_hourly_cost or up * 0) by (node) * 730 * (1-$useDiscount/100)",
|
||
|
"format": "table",
|
||
|
"instant": true,
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "",
|
||
|
"refId": "A"
|
||
|
},
|
||
|
{
|
||
|
"expr": "avg(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node) / 1024 / 1024 / 1024 * avg(node_ram_hourly_cost) by (node) * 730 * (1-$useDiscount/100)",
|
||
|
"format": "table",
|
||
|
"instant": true,
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "",
|
||
|
"refId": "B"
|
||
|
},
|
||
|
{
|
||
|
"expr": "avg(node_gpu_hourly_cost) by (node) * 730 * (1-$useDiscount/100)",
|
||
|
"format": "table",
|
||
|
"instant": true,
|
||
|
"intervalFactor": 1,
|
||
|
"refId": "D"
|
||
|
},
|
||
|
{
|
||
|
"expr": "# CPU \navg(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node) * avg(node_cpu_hourly_cost or up * 0) by (node) * 730 * (1-$useDiscount/100) +\n# GPU\navg(node_gpu_hourly_cost) by (node) * 730 * (1-$useDiscount/100) +\n# Memory\navg(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node) / 1024 / 1024 / 1024 * avg(node_ram_hourly_cost) by (node) * 730 * (1-$useDiscount/100)\n",
|
||
|
"format": "table",
|
||
|
"instant": true,
|
||
|
"intervalFactor": 1,
|
||
|
"refId": "C"
|
||
|
}
|
||
|
],
|
||
|
"title": "Cost by node",
|
||
|
"transform": "table",
|
||
|
"type": "table"
|
||
|
},
|
||
|
{
|
||
|
"aliasColors": {},
|
||
|
"bars": false,
|
||
|
"dashLength": 10,
|
||
|
"dashes": false,
|
||
|
"datasource": "${datasource}",
|
||
|
"description": "Monthly run rate of attached disk + PV storage costs based on currently provisioned resources.",
|
||
|
"fill": 1,
|
||
|
"gridPos": {
|
||
|
"h": 9,
|
||
|
"w": 12,
|
||
|
"x": 12,
|
||
|
"y": 16
|
||
|
},
|
||
|
"id": 25,
|
||
|
"interval": "1m",
|
||
|
"legend": {
|
||
|
"avg": false,
|
||
|
"current": false,
|
||
|
"max": false,
|
||
|
"min": false,
|
||
|
"show": true,
|
||
|
"total": false,
|
||
|
"values": false
|
||
|
},
|
||
|
"lines": true,
|
||
|
"linewidth": 1,
|
||
|
"links": [],
|
||
|
"nullPointMode": "connected",
|
||
|
"percentage": false,
|
||
|
"pointradius": 5,
|
||
|
"points": false,
|
||
|
"renderer": "flot",
|
||
|
"seriesOverrides": [],
|
||
|
"spaceLength": 10,
|
||
|
"stack": true,
|
||
|
"steppedLine": false,
|
||
|
"targets": [
|
||
|
{
|
||
|
"expr": "sum(\n avg(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node) * avg(node_cpu_hourly_cost) by (node) * 730 +\n avg(node_gpu_hourly_cost) by (node) * 730\n)",
|
||
|
"format": "time_series",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "cpu",
|
||
|
"refId": "B"
|
||
|
},
|
||
|
{
|
||
|
"expr": "sum(\n avg(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node) / 1024 / 1024 / 1024 * avg(node_ram_hourly_cost) by (node) * 730\n)",
|
||
|
"format": "time_series",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "memory",
|
||
|
"refId": "A"
|
||
|
},
|
||
|
{
|
||
|
"expr": "sum(\n avg(avg_over_time(pv_hourly_cost[$timeRange] offset 1m)) by (persistentvolume) * 730 \n * avg(avg_over_time(kube_persistentvolume_capacity_bytes[$timeRange] offset 1m)) by (persistentvolume) / 1024 / 1024 / 1024\n) +\nsum(avg(container_fs_limit_bytes{device!=\"tmpfs\", id=\"/\"}) by (instance) / 1024 / 1024 / 1024) * $localStorageGBCost",
|
||
|
"format": "time_series",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "storage",
|
||
|
"refId": "C"
|
||
|
},
|
||
|
{
|
||
|
"expr": "SUM(rate(node_network_transmit_bytes_total{device=\"eth0\"}[60m]) / 1024 / 1024 / 1024 ) * (60 * 60 * 24 * 30) * $percentEgress * $egressCost ",
|
||
|
"format": "time_series",
|
||
|
"intervalFactor": 1,
|
||
|
"legendFormat": "network",
|
||
|
"refId": "D"
|
||
|
}
|
||
|
],
|
||
|
"thresholds": [],
|
||
|
"timeFrom": null,
|
||
|
"timeShift": null,
|
||
|
"title": "Cost by Resource",
|
||
|
"tooltip": {
|
||
|
"shared": true,
|
||
|
"sort": 0,
|
||
|
"value_type": "individual"
|
||
|
},
|
||
|
"type": "graph",
|
||
|
"xaxis": {
|
||
|
"buckets": null,
|
||
|
"mode": "time",
|
||
|
"name": null,
|
||
|
"show": true,
|
||
|
"values": []
|
||
|
},
|
||
|
"yaxes": [
|
||
|
{
|
||
|
"format": "currencyUSD",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": "0",
|
||
|
"show": true
|
||
|
},
|
||
|
{
|
||
|
"format": "short",
|
||
|
"label": null,
|
||
|
"logBase": 1,
|
||
|
"max": null,
|
||
|
"min": null,
|
||
|
"show": true
|
||
|
}
|
||
|
],
|
||
|
"yaxis": {
|
||
|
"align": false,
|
||
|
"alignLevel": null
|
||
|
}
|
||
|
}
|
||
|
],
|
||
|
"refresh": false,
|
||
|
"schemaVersion": 16,
|
||
|
"style": "dark",
|
||
|
"tags": [
|
||
|
"cost",
|
||
|
"utilization",
|
||
|
"metrics"
|
||
|
],
|
||
|
"templating": {
|
||
|
"list": [
|
||
|
{
|
||
|
"auto": true,
|
||
|
"auto_count": 1,
|
||
|
"auto_min": "1m",
|
||
|
"current": {
|
||
|
"text": "auto",
|
||
|
"value": "$__auto_interval_timeRange"
|
||
|
},
|
||
|
"hide": 2,
|
||
|
"label": null,
|
||
|
"name": "timeRange",
|
||
|
"options": [
|
||
|
{
|
||
|
"selected": true,
|
||
|
"text": "auto",
|
||
|
"value": "$__auto_interval_timeRange"
|
||
|
},
|
||
|
{
|
||
|
"selected": false,
|
||
|
"text": "1h",
|
||
|
"value": "1h"
|
||
|
},
|
||
|
{
|
||
|
"selected": false,
|
||
|
"text": "6h",
|
||
|
"value": "6h"
|
||
|
},
|
||
|
{
|
||
|
"selected": false,
|
||
|
"text": "12h",
|
||
|
"value": "12h"
|
||
|
},
|
||
|
{
|
||
|
"selected": false,
|
||
|
"text": "1d",
|
||
|
"value": "1d"
|
||
|
},
|
||
|
{
|
||
|
"selected": false,
|
||
|
"text": "7d",
|
||
|
"value": "7d"
|
||
|
},
|
||
|
{
|
||
|
"selected": false,
|
||
|
"text": "14d",
|
||
|
"value": "14d"
|
||
|
},
|
||
|
{
|
||
|
"selected": false,
|
||
|
"text": "30d",
|
||
|
"value": "30d"
|
||
|
},
|
||
|
{
|
||
|
"selected": false,
|
||
|
"text": "90d",
|
||
|
"value": "90d"
|
||
|
}
|
||
|
],
|
||
|
"query": "1h,6h,12h,1d,7d,14d,30d,90d",
|
||
|
"refresh": 2,
|
||
|
"skipUrlSync": false,
|
||
|
"type": "interval"
|
||
|
},
|
||
|
{
|
||
|
"current": {
|
||
|
"text": ".04",
|
||
|
"value": ".04"
|
||
|
},
|
||
|
"hide": 2,
|
||
|
"label": "Cost per Gb hour for attached disks",
|
||
|
"name": "localStorageGBCost",
|
||
|
"options": [
|
||
|
{
|
||
|
"selected": true,
|
||
|
"text": ".04",
|
||
|
"value": ".04"
|
||
|
}
|
||
|
],
|
||
|
"query": ".04",
|
||
|
"skipUrlSync": false,
|
||
|
"type": "constant"
|
||
|
},
|
||
|
{
|
||
|
"current": {
|
||
|
"tags": [],
|
||
|
"text": "0",
|
||
|
"value": "0"
|
||
|
},
|
||
|
"hide": 0,
|
||
|
"label": "Sustained Use Discount %",
|
||
|
"name": "useDiscount",
|
||
|
"options": [
|
||
|
{
|
||
|
"selected": true,
|
||
|
"text": "0",
|
||
|
"value": "0"
|
||
|
}
|
||
|
],
|
||
|
"query": "0",
|
||
|
"skipUrlSync": false,
|
||
|
"type": "constant"
|
||
|
},
|
||
|
{
|
||
|
"current": {
|
||
|
"text": ".1",
|
||
|
"value": ".1"
|
||
|
},
|
||
|
"hide": 2,
|
||
|
"label": null,
|
||
|
"name": "percentEgress",
|
||
|
"options": [
|
||
|
{
|
||
|
"selected": true,
|
||
|
"text": ".1",
|
||
|
"value": ".1"
|
||
|
}
|
||
|
],
|
||
|
"query": ".1",
|
||
|
"skipUrlSync": false,
|
||
|
"type": "constant"
|
||
|
},
|
||
|
{
|
||
|
"current": {
|
||
|
"text": ".12",
|
||
|
"value": ".12"
|
||
|
},
|
||
|
"hide": 2,
|
||
|
"label": null,
|
||
|
"name": "egressCost",
|
||
|
"options": [
|
||
|
{
|
||
|
"selected": true,
|
||
|
"text": ".12",
|
||
|
"value": ".12"
|
||
|
}
|
||
|
],
|
||
|
"query": ".12",
|
||
|
"skipUrlSync": false,
|
||
|
"type": "constant"
|
||
|
},
|
||
|
{
|
||
|
"current": {
|
||
|
"selected": true,
|
||
|
"text": "default-kubecost",
|
||
|
"value": "default-kubecost"
|
||
|
},
|
||
|
"error": null,
|
||
|
"hide": 0,
|
||
|
"includeAll": false,
|
||
|
"label": null,
|
||
|
"multi": false,
|
||
|
"name": "datasource",
|
||
|
"options": [],
|
||
|
"query": "prometheus",
|
||
|
"refresh": 1,
|
||
|
"regex": "",
|
||
|
"skipUrlSync": false,
|
||
|
"type": "datasource"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
"time": {
|
||
|
"from": "now-7d",
|
||
|
"to": "now"
|
||
|
},
|
||
|
"timepicker": {
|
||
|
"refresh_intervals": [
|
||
|
"5s",
|
||
|
"10s",
|
||
|
"30s",
|
||
|
"1m",
|
||
|
"5m",
|
||
|
"15m",
|
||
|
"30m",
|
||
|
"1h",
|
||
|
"2h",
|
||
|
"1d"
|
||
|
],
|
||
|
"time_options": [
|
||
|
"5m",
|
||
|
"15m",
|
||
|
"1h",
|
||
|
"6h",
|
||
|
"12h",
|
||
|
"24h",
|
||
|
"2d",
|
||
|
"7d",
|
||
|
"30d"
|
||
|
]
|
||
|
},
|
||
|
"timezone": "",
|
||
|
"title": "Kubecost cluster metrics",
|
||
|
"uid": "JOUdHGZZz",
|
||
|
"version": 20
|
||
|
}
|