Last active
August 14, 2019 17:49
-
-
Save liskl/374f41485bf592442a2f89ae862117b3 to your computer and use it in GitHub Desktop.
kubecost.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/podsecuritypolicy.yaml | |
| apiVersion: extensions/v1beta1 | |
| kind: PodSecurityPolicy | |
| metadata: | |
| name: kubecost-grafana | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| heritage: Tiller | |
| release: kubecost | |
| annotations: | |
| seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default' | |
| apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default' | |
| seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' | |
| apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' | |
| spec: | |
| privileged: false | |
| allowPrivilegeEscalation: false | |
| requiredDropCapabilities: | |
| - ALL | |
| volumes: | |
| - 'configMap' | |
| - 'emptyDir' | |
| - 'projected' | |
| - 'secret' | |
| - 'downwardAPI' | |
| - 'persistentVolumeClaim' | |
| hostNetwork: false | |
| hostIPC: false | |
| hostPID: false | |
| runAsUser: | |
| rule: 'RunAsAny' | |
| seLinux: | |
| rule: 'RunAsAny' | |
| supplementalGroups: | |
| rule: 'RunAsAny' | |
| fsGroup: | |
| rule: 'RunAsAny' | |
| readOnlyRootFilesystem: false | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/secret.yaml | |
| apiVersion: v1 | |
| kind: Secret | |
| metadata: | |
| name: kubecost-grafana | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| release: kubecost | |
| heritage: Tiller | |
| type: Opaque | |
| data: | |
| admin-user: "YWRtaW4=" | |
| admin-password: "MGFhOWU2NGY4OGIxNDMyOWI4MjVkMjY3NjdiNDA4YmE=" | |
| ldap-toml: "" | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/configmap-dashboard-provider.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| release: kubecost | |
| heritage: Tiller | |
| name: kubecost-grafana-config-dashboards | |
| data: | |
| provider.yaml: |- | |
| apiVersion: 1 | |
| providers: | |
| - name: 'default' | |
| orgId: 1 | |
| folder: '' | |
| type: file | |
| disableDeletion: false | |
| options: | |
| path: /tmp/dashboards | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/configmap.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: kubecost-grafana | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| release: kubecost | |
| heritage: Tiller | |
| data: | |
| grafana.ini: | | |
| [analytics] | |
| check_for_updates = true | |
| [auth.anonymous] | |
| enabled = true | |
| org_name = Main Org. | |
| org_role = Admin | |
| [grafana_net] | |
| url = https://grafana.net | |
| [log] | |
| mode = console | |
| [paths] | |
| data = /var/lib/grafana/data | |
| logs = /var/log/grafana | |
| plugins = /var/lib/grafana/plugins | |
| provisioning = /etc/grafana/provisioning | |
| [server] | |
| root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana | |
| - access: proxy | |
| isDefault: true | |
| name: Prometheus | |
| type: prometheus | |
| url: http://kubecost-prometheus-server.kubecost.svc.cluster.local | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/alertmanager-configmap.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| labels: | |
| component: "alertmanager" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-alertmanager | |
| data: | |
| alertmanager.yml: | | |
| global: {} | |
| receivers: | |
| - name: default-receiver | |
| route: | |
| group_interval: 5m | |
| group_wait: 10s | |
| receiver: default-receiver | |
| repeat_interval: 3h | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-configmap.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| labels: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-server | |
| data: | |
| alerts: | | |
| {} | |
| prometheus.yml: | | |
| global: | |
| evaluation_interval: 1m | |
| scrape_interval: 1m | |
| scrape_timeout: 10s | |
| rule_files: | |
| - /etc/config/rules | |
| - /etc/config/alerts | |
| scrape_configs: | |
| - job_name: prometheus | |
| static_configs: | |
| - targets: | |
| - localhost:9090 | |
| - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| job_name: kubernetes-apiservers | |
| kubernetes_sd_configs: | |
| - role: endpoints | |
| relabel_configs: | |
| - action: keep | |
| regex: default;kubernetes;https | |
| source_labels: | |
| - __meta_kubernetes_namespace | |
| - __meta_kubernetes_service_name | |
| - __meta_kubernetes_endpoint_port_name | |
| scheme: https | |
| tls_config: | |
| ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | |
| insecure_skip_verify: true | |
| - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| job_name: kubernetes-nodes | |
| kubernetes_sd_configs: | |
| - role: node | |
| relabel_configs: | |
| - action: labelmap | |
| regex: __meta_kubernetes_node_label_(.+) | |
| - replacement: kubernetes.default.svc:443 | |
| target_label: __address__ | |
| - regex: (.+) | |
| replacement: /api/v1/nodes/$1/proxy/metrics | |
| source_labels: | |
| - __meta_kubernetes_node_name | |
| target_label: __metrics_path__ | |
| scheme: https | |
| tls_config: | |
| ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | |
| insecure_skip_verify: true | |
| - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| job_name: kubernetes-nodes-cadvisor | |
| kubernetes_sd_configs: | |
| - role: node | |
| relabel_configs: | |
| - action: labelmap | |
| regex: __meta_kubernetes_node_label_(.+) | |
| - replacement: kubernetes.default.svc:443 | |
| target_label: __address__ | |
| - regex: (.+) | |
| replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor | |
| source_labels: | |
| - __meta_kubernetes_node_name | |
| target_label: __metrics_path__ | |
| scheme: https | |
| tls_config: | |
| ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | |
| insecure_skip_verify: true | |
| - job_name: kubernetes-service-endpoints | |
| kubernetes_sd_configs: | |
| - role: endpoints | |
| relabel_configs: | |
| - action: keep | |
| regex: true | |
| source_labels: | |
| - __meta_kubernetes_service_annotation_prometheus_io_scrape | |
| - action: replace | |
| regex: (https?) | |
| source_labels: | |
| - __meta_kubernetes_service_annotation_prometheus_io_scheme | |
| target_label: __scheme__ | |
| - action: replace | |
| regex: (.+) | |
| source_labels: | |
| - __meta_kubernetes_service_annotation_prometheus_io_path | |
| target_label: __metrics_path__ | |
| - action: replace | |
| regex: ([^:]+)(?::\d+)?;(\d+) | |
| replacement: $1:$2 | |
| source_labels: | |
| - __address__ | |
| - __meta_kubernetes_service_annotation_prometheus_io_port | |
| target_label: __address__ | |
| - action: labelmap | |
| regex: __meta_kubernetes_service_label_(.+) | |
| - action: replace | |
| source_labels: | |
| - __meta_kubernetes_namespace | |
| target_label: kubernetes_namespace | |
| - action: replace | |
| source_labels: | |
| - __meta_kubernetes_service_name | |
| target_label: kubernetes_name | |
| - action: replace | |
| source_labels: | |
| - __meta_kubernetes_pod_node_name | |
| target_label: kubernetes_node | |
| - honor_labels: true | |
| job_name: prometheus-pushgateway | |
| kubernetes_sd_configs: | |
| - role: service | |
| relabel_configs: | |
| - action: keep | |
| regex: pushgateway | |
| source_labels: | |
| - __meta_kubernetes_service_annotation_prometheus_io_probe | |
| - job_name: kubernetes-services | |
| kubernetes_sd_configs: | |
| - role: service | |
| metrics_path: /probe | |
| params: | |
| module: | |
| - http_2xx | |
| relabel_configs: | |
| - action: keep | |
| regex: true | |
| source_labels: | |
| - __meta_kubernetes_service_annotation_prometheus_io_probe | |
| - source_labels: | |
| - __address__ | |
| target_label: __param_target | |
| - replacement: blackbox | |
| target_label: __address__ | |
| - source_labels: | |
| - __param_target | |
| target_label: instance | |
| - action: labelmap | |
| regex: __meta_kubernetes_service_label_(.+) | |
| - source_labels: | |
| - __meta_kubernetes_namespace | |
| target_label: kubernetes_namespace | |
| - source_labels: | |
| - __meta_kubernetes_service_name | |
| target_label: kubernetes_name | |
| - job_name: kubernetes-pods | |
| kubernetes_sd_configs: | |
| - role: pod | |
| relabel_configs: | |
| - action: keep | |
| regex: true | |
| source_labels: | |
| - __meta_kubernetes_pod_annotation_prometheus_io_scrape | |
| - action: replace | |
| regex: (.+) | |
| source_labels: | |
| - __meta_kubernetes_pod_annotation_prometheus_io_path | |
| target_label: __metrics_path__ | |
| - action: replace | |
| regex: ([^:]+)(?::\d+)?;(\d+) | |
| replacement: $1:$2 | |
| source_labels: | |
| - __address__ | |
| - __meta_kubernetes_pod_annotation_prometheus_io_port | |
| target_label: __address__ | |
| - action: labelmap | |
| regex: __meta_kubernetes_pod_label_(.+) | |
| - action: replace | |
| source_labels: | |
| - __meta_kubernetes_namespace | |
| target_label: kubernetes_namespace | |
| - action: replace | |
| source_labels: | |
| - __meta_kubernetes_pod_name | |
| target_label: kubernetes_pod_name | |
| - job_name: kubecost | |
| honor_labels: true | |
| scrape_interval: 1m | |
| scrape_timeout: 10s | |
| metrics_path: /metrics | |
| scheme: http | |
| dns_sd_configs: | |
| - names: | |
| - kubecost-cost-analyzer | |
| type: 'A' | |
| port: 9003 | |
| alerting: | |
| alertmanagers: | |
| - kubernetes_sd_configs: | |
| - role: pod | |
| tls_config: | |
| ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | |
| bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| relabel_configs: | |
| - source_labels: [__meta_kubernetes_namespace] | |
| regex: kubecost | |
| action: keep | |
| - source_labels: [__meta_kubernetes_pod_label_app] | |
| regex: prometheus | |
| action: keep | |
| - source_labels: [__meta_kubernetes_pod_label_component] | |
| regex: alertmanager | |
| action: keep | |
| - source_labels: [__meta_kubernetes_pod_container_port_number] | |
| regex: | |
| action: drop | |
| rules: | | |
| groups: | |
| - name: CPU | |
| rules: | |
| - expr: sum(rate(container_cpu_usage_seconds_total{container_name!=""}[5m])) | |
| record: cluster:cpu_usage:rate5m | |
| - expr: rate(container_cpu_usage_seconds_total{container_name!=""}[5m]) | |
| record: cluster:cpu_usage_nosum:rate5m | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-config-map-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: kubecost-cost-analyzer | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| data: | |
| prometheus-alertmanager-endpoint: http://kubecost-prometheus-alertmanager.kubecost.svc.cluster.local | |
| prometheus-server-endpoint: http://kubecost-prometheus-server.kubecost.svc.cluster.local | |
| kubecost-token: not-applied | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-frontend-config-map-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: nginx-conf | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| data: | |
| nginx.conf: | | |
| gzip_static on; | |
| upstream api { | |
| server kubecost-cost-analyzer.kubecost:9001; | |
| } | |
| upstream model { | |
| server kubecost-cost-analyzer.kubecost:9003; | |
| } | |
| upstream grafana { | |
| server kubecost-grafana.kubecost; | |
| } | |
| server { | |
| listen 9090; | |
| server_name _; | |
| root /var/www; | |
| index index.html; | |
| add_header Cache-Control "no-cache"; | |
| add_header ETag "1.38.0"; | |
| location /api/ { | |
| proxy_pass http://api/; | |
| proxy_redirect off; | |
| proxy_http_version 1.1; | |
| proxy_set_header Connection ""; | |
| proxy_set_header X-Real-IP $remote_addr; | |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| } | |
| location /model/ { | |
| proxy_connect_timeout 180; | |
| proxy_send_timeout 180; | |
| proxy_read_timeout 180; | |
| proxy_pass http://model/; | |
| proxy_redirect off; | |
| proxy_http_version 1.1; | |
| proxy_set_header Connection ""; | |
| proxy_set_header X-Real-IP $remote_addr; | |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| } | |
| location /grafana/ { | |
| proxy_pass http://grafana/; | |
| proxy_redirect off; | |
| proxy_http_version 1.1; | |
| proxy_set_header Connection ""; | |
| proxy_set_header X-Real-IP $remote_addr; | |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| } | |
| } | |
| --- | |
| # Source: cost-analyzer/templates/grafana-dashboard-cluster-metrics-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: cluster-metrics-dashboard | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| grafana_dashboard: "1" | |
| data: | |
| cluster-metrics.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": "Prometheus", | |
| "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": "label_cloud_google_com_gke_preemptible", | |
| "targets": [ | |
| { | |
| "expr": "sum(\n avg(kube_node_status_capacity_cpu_cores) 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": "Prometheus", | |
| "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": "label_cloud_google_com_gke_preemptible", | |
| "targets": [ | |
| { | |
| "expr": "sum(\n avg(kube_node_status_capacity_memory_bytes) 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": "Prometheus", | |
| "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": "label_cloud_google_com_gke_preemptible", | |
| "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": "Prometheus", | |
| "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": "label_cloud_google_com_gke_preemptible", | |
| "targets": [ | |
| { | |
| "expr": "# Compute\nsum(\n avg(kube_node_status_capacity_cpu_cores) 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_memory_bytes) 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": "Prometheus", | |
| "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_cpu_cores))\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": "Prometheus", | |
| "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_cpu_cores) / SUM(kube_node_status_allocatable_cpu_cores) * 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": "Prometheus", | |
| "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_memory_bytes) * 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": "Prometheus", | |
| "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_memory_bytes{namespace!=\"\"})\n /\n sum(kube_node_status_allocatable_memory_bytes)\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": "Prometheus", | |
| "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, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kubelet_volume_stats_used_bytes) 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, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\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": "Prometheus", | |
| "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_cpu_cores) 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": "Prometheus", | |
| "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_memory_bytes) 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": "Prometheus", | |
| "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": "short", | |
| "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": "Prometheus", | |
| "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_cpu_cores) 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_memory_bytes) 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": "short", | |
| "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": "Prometheus", | |
| "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_cpu_cores) 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_memory_bytes) 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_cpu_cores) 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_memory_bytes) 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": "Prometheus", | |
| "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_cpu_cores) 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_memory_bytes) 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" | |
| } | |
| ] | |
| }, | |
| "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 | |
| } | |
| --- | |
| # Source: cost-analyzer/templates/grafana-dashboard-cluster-utilization-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: cluster-utilization-dashboard | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| grafana_dashboard: "1" | |
| data: | |
| cluster-utilization.json: |- | |
| { | |
| "annotations":{ | |
| "list":[ | |
| { | |
| "builtIn":1, | |
| "datasource":"-- Grafana --", | |
| "enable":true, | |
| "hide":true, | |
| "iconColor":"rgba(0, 211, 255, 1)", | |
| "name":"Annotations & Alerts", | |
| "type":"dashboard" | |
| } | |
| ] | |
| }, | |
| "description":"A dashboard to help manage Kubernetes cluster costs and resources", | |
| "editable":true, | |
| "gnetId":6873, | |
| "graphTooltip":0, | |
| "id":4, | |
| "iteration":1556759633456, | |
| "links":[ | |
| ], | |
| "panels":[ | |
| { | |
| "content":"This dashboard shows monthly cost estimates for the cluster, based on **current** CPU, RAM and storage provisioned.", | |
| "gridPos":{ | |
| "h":2, | |
| "w":24, | |
| "x":0, | |
| "y":0 | |
| }, | |
| "id":86, | |
| "links":[ | |
| ], | |
| "mode":"markdown", | |
| "title":"", | |
| "transparent":true, | |
| "type":"text" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "#299c46", | |
| "rgba(237, 129, 40, 0.89)", | |
| "#d44a3a" | |
| ], | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "format":"currencyUSD", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":6, | |
| "x":0, | |
| "y":2 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":75, | |
| "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":"label_cloud_google_com_gke_preemptible", | |
| "targets":[ | |
| { | |
| "expr":"sum(\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) * $costpcpu\n )\n or\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) * ($costcpu - ($costcpu / 100 * $costDiscount))\n )\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":"Prometheus", | |
| "decimals":2, | |
| "format":"currencyUSD", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":6, | |
| "x":6, | |
| "y":2 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":77, | |
| "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":"label_cloud_google_com_gke_preemptible", | |
| "targets":[ | |
| { | |
| "expr":"sum(\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) /1024/1024/1024 * $costpram\n )\n or\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) /1024/1024/1024 * ($costram - ($costram / 100 * $costDiscount))\n)\n) ", | |
| "format":"time_series", | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":" {{ node }}", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "timeFrom":"15m", | |
| "timeShift":null, | |
| "title":"RAM 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":"Prometheus", | |
| "decimals":2, | |
| "format":"currencyUSD", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":6, | |
| "x":12, | |
| "y":2 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":78, | |
| "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":"label_cloud_google_com_gke_preemptible", | |
| "targets":[ | |
| { | |
| "expr":"sum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageSSD\n\n+\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageStandard\n\n+ \n\nsum(container_fs_limit_bytes{id=\"/\"}) / 1024 / 1024 / 1024 * 1.03 * $costStorageStandard", | |
| "format":"time_series", | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":" {{ node }}", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "timeFrom":"15m", | |
| "timeShift":null, | |
| "title":"Storage Cost (Cluster and PVC)", | |
| "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":"Prometheus", | |
| "decimals":2, | |
| "description":"Represents a near worst-case approximation of network costs.", | |
| "format":"currencyUSD", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":6, | |
| "x":18, | |
| "y":2 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":129, | |
| "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":"label_cloud_google_com_gke_preemptible", | |
| "targets":[ | |
| { | |
| "expr":"SUM(rate(node_network_transmit_bytes_total{device=\"eth0\"}[60m]) / 1024 / 1024 / 1024 ) * (60 * 60 * 24 * 30) * $costEgress", | |
| "format":"time_series", | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":" {{ node }}", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "timeFrom":"15m", | |
| "timeShift":null, | |
| "title":"Network Egress Cost", | |
| "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":"Prometheus", | |
| "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":6 | |
| }, | |
| "height":"180px", | |
| "hideTimeOverride":true, | |
| "id":82, | |
| "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_cpu_cores))\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":"Prometheus", | |
| "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":6 | |
| }, | |
| "height":"180px", | |
| "id":91, | |
| "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_cpu_cores) / SUM(kube_node_status_allocatable_cpu_cores) * 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":"Prometheus", | |
| "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":6 | |
| }, | |
| "height":"180px", | |
| "hideTimeOverride":true, | |
| "id":80, | |
| "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_memory_bytes) * 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":"Prometheus", | |
| "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":6 | |
| }, | |
| "height":"180px", | |
| "id":92, | |
| "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_memory_bytes{namespace!=\"\"})\n /\n sum(kube_node_status_allocatable_memory_bytes)\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":"Prometheus", | |
| "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":3, | |
| "x":12, | |
| "y":6 | |
| }, | |
| "height":"180px", | |
| "hideTimeOverride":true, | |
| "id":95, | |
| "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{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kubelet_volume_stats_used_bytes) 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{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\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" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":true, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#c15c17" | |
| ], | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "description":"This gauge shows the current SSD use vs SSD available", | |
| "editable":true, | |
| "error":false, | |
| "format":"percent", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":true, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":3, | |
| "x":15, | |
| "y":6 | |
| }, | |
| "height":"180px", | |
| "hideTimeOverride":true, | |
| "id":96, | |
| "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{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kubelet_volume_stats_used_bytes) by (persistentvolumeclaim, namespace)\n) /\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace)\n) * 100", | |
| "format":"time_series", | |
| "interval":"", | |
| "intervalFactor":1, | |
| "refId":"A", | |
| "step":10 | |
| } | |
| ], | |
| "thresholds":"30, 80", | |
| "timeFrom":"", | |
| "title":"SSD Utilization", | |
| "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":"Prometheus", | |
| "decimals":2, | |
| "description":"Expected monthly cost given current CPU, memory storage, and network resource consumption", | |
| "format":"currencyUSD", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":6, | |
| "x":18, | |
| "y":6 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":93, | |
| "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":"label_cloud_google_com_gke_preemptible", | |
| "targets":[ | |
| { | |
| "expr":"# CPU\nsum(\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) * $costpcpu\n )\n or\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) * ($costcpu - ($costcpu / 100 * $costDiscount))\n )\n) \n\n+ \n\n# Storage\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageSSD\n\n+\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageStandard\n\n+ \n\nsum(container_fs_limit_bytes{id=\"/\"}) / 1024 / 1024 / 1024 * 1.03 * $costStorageStandard \n\n+\n\n# END STORAGE\n# RAM \nsum(\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) /1024/1024/1024 * $costpram\n )\n or\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) /1024/1024/1024 * ($costram - ($costram / 100 * $costDiscount))\n)\n)\n\n+\n\n#Network \nSUM(rate(node_network_transmit_bytes_total{device=\"eth0\"}[60m]) / 1024 / 1024 / 1024 ) * (60 * 60 * 24 * 30) * $costEgress", | |
| "format":"time_series", | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":" {{ node }}", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "timeFrom":"15m", | |
| "timeShift":null, | |
| "title":"Total Monthly Cost", | |
| "type":"singlestat", | |
| "valueFontSize":"120%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "description":"Expected monthly CPU, memory and storage costs given provisioned resources", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":8, | |
| "w":12, | |
| "x":0, | |
| "y":10 | |
| }, | |
| "id":120, | |
| "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":"# CPU\nsum(\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) * $costpcpu\n )\n or\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) * ($costcpu - ($costcpu / 100 * $costDiscount))\n )\n) \n\n+ \n\n# Storage\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageSSD\n\n+\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageStandard\n\n+ \n\nsum(container_fs_limit_bytes{id=\"/\"}) / 1024 / 1024 / 1024 * 1.03 * $costStorageStandard \n\n+\n\n# END STORAGE\n# RAM \nsum(\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) /1024/1024/1024 * $costpram\n )\n or\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) /1024/1024/1024 * ($costram - ($costram / 100 * $costDiscount))\n)\n) \n\n+\n\n#Network \nSUM(rate(node_network_transmit_bytes_total{device=\"eth0\"}[60m]) / 1024 / 1024 / 1024 ) * (60 * 60 * 24 * 30) * $costEgress", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"cluster cost", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Total monthly 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":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "description":"Resources allocated to namespace based on container requests", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":8, | |
| "w":12, | |
| "x":12, | |
| "y":10 | |
| }, | |
| "hideTimeOverride":false, | |
| "id":73, | |
| "links":[ | |
| ], | |
| "pageSize":10, | |
| "repeat":null, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":7, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"Namespace", | |
| "colorMode":null, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#c15c17" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "link":true, | |
| "linkTooltip":"View namespace cost metrics", | |
| "linkUrl":"d/at-cost-analysis-namespace2/namespace-cost-metrics?&var-namespace=$__cell", | |
| "pattern":"namespace", | |
| "thresholds":[ | |
| "30", | |
| "80" | |
| ], | |
| "type":"string", | |
| "unit":"currencyUSD" | |
| }, | |
| { | |
| "alias":"RAM", | |
| "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, | |
| "pattern":"Value #B", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"currencyUSD" | |
| }, | |
| { | |
| "alias":"CPU", | |
| "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":"", | |
| "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":"PV Storage", | |
| "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":"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 #D", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"currencyUSD" | |
| }, | |
| { | |
| "alias":"CPU Utilization", | |
| "colorMode":"value", | |
| "colors":[ | |
| "#bf1b00", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#ef843c" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #E", | |
| "thresholds":[ | |
| "30", | |
| "80" | |
| ], | |
| "type":"number", | |
| "unit":"percent" | |
| }, | |
| { | |
| "alias":"RAM Utilization", | |
| "colorMode":"value", | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#ef843c" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #F", | |
| "thresholds":[ | |
| "30", | |
| "80" | |
| ], | |
| "type":"number", | |
| "unit":"percent" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"(\n sum(kube_pod_container_resource_requests_cpu_cores{namespace!=\"\",namespace!=\"kube-system\",cloud_google_com_gke_preemptible!=\"true\"}*($costcpu - ($costcpu / 100 * $costDiscount))) by(namespace)\n or\n count(\n count(container_spec_cpu_shares{namespace!=\"\",namespace!=\"kube-system\"}) by(namespace)\n ) by(namespace) -1\n)\n\n+\n\n(\n sum(kube_pod_container_resource_requests_cpu_cores{namespace!=\"\",namespace!=\"kube-system\",cloud_google_com_gke_preemptible=\"true\"}*$costpcpu) by(namespace)\n or\n count(\n count(container_spec_cpu_shares{namespace!=\"\",namespace!=\"kube-system\"}) by(namespace)\n ) by(namespace) -1\n)", | |
| "format":"table", | |
| "hide":false, | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"{{ namespace }}", | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"(\n sum(kube_pod_container_resource_requests_memory_bytes{namespace!=\"\",namespace!=\"kube-system\",cloud_google_com_gke_preemptible!=\"true\"} / 1024 / 1024 / 1024*($costram- ($costram / 100 * $costDiscount))) by (namespace) \n or\n count(\n count(container_spec_memory_limit_bytes{namespace!=\"\",namespace!=\"kube-system\"}) by(namespace)\n ) by(namespace) -1\n)\n\n+\n\n(\n sum(kube_pod_container_resource_requests_memory_bytes{namespace!=\"\",namespace!=\"kube-system\",cloud_google_com_gke_preemptible=\"true\"} / 1024 / 1024 / 1024 * $costpram ) by (namespace) \n or\n count(\n count(container_spec_memory_limit_bytes{namespace!=\"\",namespace!=\"kube-system\"}) by(namespace)\n ) by(namespace) -1\n)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "legendFormat":"{{ namespace }}", | |
| "refId":"B" | |
| }, | |
| { | |
| "expr":"sum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) \n) by (namespace) / 1024 / 1024 /1024 * $costStorageSSD \n\nor\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) \n) by (namespace) / 1024 / 1024 /1024 * $costStorageStandard", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "legendFormat":"{{ namespace }}", | |
| "refId":"C" | |
| }, | |
| { | |
| "expr":"# CPU \n(\n sum(kube_pod_container_resource_requests_cpu_cores{namespace!=\"\",namespace!=\"kube-system\",cloud_google_com_gke_preemptible!=\"true\"}*($costcpu - ($costcpu / 100 * $costDiscount))) by(namespace)\n or\n count(\n count(container_spec_cpu_shares{namespace!=\"\",namespace!=\"kube-system\"}) by(namespace)\n ) by(namespace) -1\n)\n\n+\n\n(\n sum(kube_pod_container_resource_requests_cpu_cores{namespace!=\"\",namespace!=\"kube-system\",cloud_google_com_gke_preemptible=\"true\"}*$costpcpu) by(namespace)\n or\n count(\n count(container_spec_cpu_shares{namespace!=\"\",namespace!=\"kube-system\"}) by(namespace)\n ) by(namespace) -1\n)\n\n+\n\n#END CPU \n# Memory \n\n(\n sum(kube_pod_container_resource_requests_memory_bytes{namespace!=\"\",namespace!=\"kube-system\",cloud_google_com_gke_preemptible!=\"true\"} / 1024 / 1024 / 1024*($costram- ($costram / 100 * $costDiscount))) by (namespace) \n or\n count(\n count(container_spec_memory_limit_bytes{namespace!=\"\",namespace!=\"kube-system\"}) by(namespace)\n ) by(namespace) -1\n)\n\n+\n\n(\n sum(kube_pod_container_resource_requests_memory_bytes{namespace!=\"\",namespace!=\"kube-system\",cloud_google_com_gke_preemptible=\"true\"} / 1024 / 1024 / 1024 * $costpram ) by (namespace) \n or\n count(\n count(container_spec_memory_limit_bytes{namespace!=\"\",namespace!=\"kube-system\"}) by(namespace)\n ) by(namespace) -1\n)\n\n+\n\n# PV storage\n\n(\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) \n) by (namespace) / 1024 / 1024 /1024 * $costStorageSSD \n\nor\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) \n) by (namespace) / 1024 / 1024 /1024 * $costStorageStandard \n)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "legendFormat":"Total", | |
| "refId":"D" | |
| } | |
| ], | |
| "timeFrom":"", | |
| "timeShift":null, | |
| "title":"Namespace cost allocation", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "collapsed":false, | |
| "gridPos":{ | |
| "h":1, | |
| "w":24, | |
| "x":0, | |
| "y":18 | |
| }, | |
| "id":108, | |
| "panels":[ | |
| ], | |
| "title":"CPU Metrics", | |
| "type":"row" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":8, | |
| "w":24, | |
| "x":0, | |
| "y":19 | |
| }, | |
| "id":116, | |
| "legend":{ | |
| "alignAsTable":false, | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "rightSide":false, | |
| "show":true, | |
| "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(kube_node_status_capacity_cpu_cores)", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"capacity", | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"SUM(kube_pod_container_resource_requests_cpu_cores)", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"requests", | |
| "refId":"C" | |
| }, | |
| { | |
| "expr":"SUM(irate(container_cpu_usage_seconds_total{id=\"/\"}[5m]))", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"usage", | |
| "refId":"B" | |
| }, | |
| { | |
| "expr":"SUM(kube_pod_container_resource_limits_cpu_cores) ", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"limits", | |
| "refId":"D" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Cluster CPUs", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "decimals":1, | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "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":"Prometheus", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":8, | |
| "w":24, | |
| "x":0, | |
| "y":27 | |
| }, | |
| "id":130, | |
| "legend":{ | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "show":true, | |
| "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":"avg(irate(node_cpu_seconds_total{mode!=\"idle\"}[5m])) by (mode) * 100", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"{{mode}}", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"CPU Mode", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"percent", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"percent", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "description":"This table shows the comparison of CPU requests and usage by namespace", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":10, | |
| "w":12, | |
| "x":0, | |
| "y":35 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":104, | |
| "links":[ | |
| ], | |
| "pageSize":8, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":1, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"CPU Requests", | |
| "colorMode":null, | |
| "colors":[ | |
| "#fceaca", | |
| "#fce2de", | |
| "rgba(245, 54, 54, 0.9)" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #A", | |
| "thresholds":[ | |
| "" | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"Node", | |
| "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":"node", | |
| "thresholds":[ | |
| ], | |
| "type":"string", | |
| "unit":"short" | |
| }, | |
| { | |
| "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":"CPU Requests", | |
| "colorMode":"value", | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#cffaff" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #B", | |
| "thresholds":[ | |
| "" | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"24h CPU Usage", | |
| "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":[ | |
| "30" | |
| ], | |
| "type":"number", | |
| "unit":"none" | |
| }, | |
| { | |
| "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, | |
| "link":true, | |
| "linkTooltip":"View namespace cost metrics", | |
| "linkUrl":"d/at-cost-analysis-namespace2/namespace-cost-metrics?&var-namespace=$__cell", | |
| "mappingType":1, | |
| "pattern":"namespace", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"sum(kube_pod_container_resource_requests_cpu_cores{namespace!=\"\"}) by (namespace) ", | |
| "format":"table", | |
| "hide":false, | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"", | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"sum (rate (container_cpu_usage_seconds_total{image!=\"\",namespace!=\"\"}[24h])) by (namespace)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "legendFormat":"{{ namespace }}", | |
| "refId":"C" | |
| } | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"CPU request utilization by namespace", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "description":"This table shows the comparison of application CPU usage vs the capacity of the node (measured over last 60 minutes)", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":10, | |
| "w":12, | |
| "x":12, | |
| "y":35 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":90, | |
| "links":[ | |
| ], | |
| "pageSize":8, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":2, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"CPU Request Utilization", | |
| "colorMode":"value", | |
| "colors":[ | |
| "#ef843c", | |
| "rgba(50, 172, 45, 0.97)", | |
| "rgba(245, 54, 54, 0.9)" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #A", | |
| "thresholds":[ | |
| ".30", | |
| " .80" | |
| ], | |
| "type":"number", | |
| "unit":"percentunit" | |
| }, | |
| { | |
| "alias":"Node", | |
| "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":"node", | |
| "thresholds":[ | |
| ], | |
| "type":"string", | |
| "unit":"short" | |
| }, | |
| { | |
| "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":"CPU Utilization", | |
| "colorMode":"value", | |
| "colors":[ | |
| "#ef843c", | |
| "rgba(50, 172, 45, 0.97)", | |
| "rgba(245, 54, 54, 0.9)" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #B", | |
| "thresholds":[ | |
| ".20", | |
| " .80" | |
| ], | |
| "type":"number", | |
| "unit":"percentunit" | |
| }, | |
| { | |
| "alias":"24h Utilization ", | |
| "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":"percentunit" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"SUM(\nSUM(rate(container_cpu_usage_seconds_total[24h])) by (pod_name)\n* on (pod_name) group_left (node) \nlabel_replace(\n avg(kube_pod_info{}),\n \"pod_name\", \n \"$1\", \n \"pod\", \n \"(.+)\"\n)\n) by (node) \n/ \nsum(kube_node_status_capacity_cpu_cores) by (node)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"B" | |
| }, | |
| { | |
| "expr":"sum(kube_pod_container_resource_requests_cpu_cores) by (node) / sum(kube_node_status_capacity_cpu_cores) by (node)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Cluster cost & utilization by node", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "collapsed":false, | |
| "gridPos":{ | |
| "h":1, | |
| "w":24, | |
| "x":0, | |
| "y":45 | |
| }, | |
| "id":113, | |
| "panels":[ | |
| ], | |
| "title":"Memory Metrics", | |
| "type":"row" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":8, | |
| "w":24, | |
| "x":0, | |
| "y":46 | |
| }, | |
| "id":117, | |
| "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(kube_node_status_capacity_memory_bytes / 1024 / 1024 / 1024)", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"capacity", | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"SUM(kube_pod_container_resource_requests_memory_bytes{namespace!=\"\"} / 1024 / 1024 / 1024)", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"requests", | |
| "refId":"C" | |
| }, | |
| { | |
| "expr":"SUM(container_memory_usage_bytes{image!=\"\"} / 1024 / 1024 / 1024)", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"usage", | |
| "refId":"B" | |
| }, | |
| { | |
| "expr":"SUM(kube_pod_container_resource_limits_memory_bytes {namespace!=\"\"} / 1024 / 1024 / 1024)", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"limits", | |
| "refId":"D" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Cluster memory (GB)", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"decgbytes", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "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":"Prometheus", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":8, | |
| "w":24, | |
| "x":0, | |
| "y":54 | |
| }, | |
| "id":131, | |
| "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":"1 - sum(node_memory_MemAvailable_bytes) by (node) / sum(node_memory_MemTotal_bytes) by (node)", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"usage", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Cluster Memory Utilization", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"percentunit", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "description":"Comparison of memory requests and current usage by namespace", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":10, | |
| "w":12, | |
| "x":0, | |
| "y":62 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":109, | |
| "links":[ | |
| ], | |
| "pageSize":7, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":1, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"Mem Requests (GB)", | |
| "colorMode":null, | |
| "colors":[ | |
| "#fceaca", | |
| "#fce2de", | |
| "rgba(245, 54, 54, 0.9)" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #A", | |
| "thresholds":[ | |
| "" | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"Node", | |
| "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":"node", | |
| "thresholds":[ | |
| ], | |
| "type":"string", | |
| "unit":"short" | |
| }, | |
| { | |
| "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":"CPU Requests", | |
| "colorMode":"value", | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#cffaff" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #B", | |
| "thresholds":[ | |
| "" | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"24h Mem Usage", | |
| "colorMode":null, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "#508642", | |
| "#e5ac0e" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #C", | |
| "thresholds":[ | |
| ".30", | |
| ".75" | |
| ], | |
| "type":"number", | |
| "unit":"none" | |
| }, | |
| { | |
| "alias":"Namespace", | |
| "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, | |
| "link":true, | |
| "linkTooltip":"View namespace cost metrics", | |
| "linkUrl":"d/at-cost-analysis-namespace2/namespace-cost-metrics?&var-namespace=$__cell", | |
| "mappingType":1, | |
| "pattern":"namespace", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"sum(kube_pod_container_resource_requests_memory_bytes{namespace!=\"\"} / 1024 / 1024 / 1024) by (namespace) ", | |
| "format":"table", | |
| "hide":false, | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"", | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"SUM(container_memory_usage_bytes{image!=\"\",namespace!=\"\"} / 1024 / 1024 / 1024) by (namespace)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "legendFormat":"", | |
| "refId":"C" | |
| } | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Memory requests & utilization by namespace", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "description":"Container RAM usage vs node capacity", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":10, | |
| "w":12, | |
| "x":12, | |
| "y":62 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":114, | |
| "links":[ | |
| ], | |
| "pageSize":8, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":1, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"RAM Requests", | |
| "colorMode":"value", | |
| "colors":[ | |
| "#ef843c", | |
| "rgba(50, 172, 45, 0.97)", | |
| "rgba(245, 54, 54, 0.9)" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #A", | |
| "thresholds":[ | |
| "30", | |
| " 80" | |
| ], | |
| "type":"number", | |
| "unit":"percentunit" | |
| }, | |
| { | |
| "alias":"Node", | |
| "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":"node", | |
| "thresholds":[ | |
| ], | |
| "type":"string", | |
| "unit":"short" | |
| }, | |
| { | |
| "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":"RAM Usage", | |
| "colorMode":"value", | |
| "colors":[ | |
| "#ef843c", | |
| "rgba(50, 172, 45, 0.97)", | |
| "rgba(245, 54, 54, 0.9)" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #B", | |
| "thresholds":[ | |
| "25", | |
| " 80" | |
| ], | |
| "type":"number", | |
| "unit":"percent" | |
| }, | |
| { | |
| "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":"", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"SUM(label_replace(container_memory_usage_bytes{namespace!=\"\"}, \"node\", \"$1\", \"instance\",\"(.+)\")) by (node) * 100\n/\nSUM(kube_node_status_capacity_memory_bytes) by (node)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"B" | |
| }, | |
| { | |
| "expr":"sum(kube_pod_container_resource_requests_memory_bytes{namespace!=\"\"}) by (node) / SUM(kube_node_status_capacity_memory_bytes) by (node)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Node utilization of allocatable RAM", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "collapsed":false, | |
| "gridPos":{ | |
| "h":1, | |
| "w":24, | |
| "x":0, | |
| "y":72 | |
| }, | |
| "id":101, | |
| "panels":[ | |
| ], | |
| "title":"Storage Metrics", | |
| "type":"row" | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":9, | |
| "w":12, | |
| "x":0, | |
| "y":73 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":97, | |
| "links":[ | |
| ], | |
| "pageSize":8, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":4, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"Node", | |
| "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":"string", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"PVC Name", | |
| "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":"persistentvolumeclaim", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"Storage Class", | |
| "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":"storageclass", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"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":"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":"Time", | |
| "thresholds":[ | |
| ], | |
| "type":"hidden", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"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":"Size (GB)", | |
| "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":"short" | |
| }, | |
| { | |
| "alias":"Usage", | |
| "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":"percentunit" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"SUM(container_fs_limit_bytes{id=\"/\"}) by (instance) / 1024 / 1024 / 1024 * 1.03", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"B" | |
| }, | |
| { | |
| "expr":"SUM(container_fs_limit_bytes{id=\"/\"}) by (instance) / 1024 / 1024 / 1024 * 1.03 * $costStorageStandard\n", | |
| "format":"table", | |
| "hide":false, | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"{{ persistentvolumeclaim }}", | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"sum(container_fs_usage_bytes{device=~\"^/dev/[sv]d[a-z][1-9]$\",id=\"/\"} / container_fs_limit_bytes{device=~\"^/dev/[sv]d[a-z][1-9]$\",id=\"/\"}) by (instance) \n", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"C" | |
| } | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Local Storage", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":9, | |
| "w":12, | |
| "x":12, | |
| "y":73 | |
| }, | |
| "id":128, | |
| "legend":{ | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "show":true, | |
| "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(container_fs_usage_bytes{id=\"/\"}) / SUM(container_fs_limit_bytes{id=\"/\"})", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"reads", | |
| "refId":"D" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Local storage utilization", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"percent", | |
| "label":"IOPS", | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":10, | |
| "w":12, | |
| "x":0, | |
| "y":82 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":94, | |
| "links":[ | |
| ], | |
| "pageSize":10, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":2, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"Namespace", | |
| "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, | |
| "link":true, | |
| "linkTooltip":"View namespace cost metrics", | |
| "linkUrl":"d/at-cost-analysis-namespace2/namespace-cost-metrics?&var-namespace=$__cell", | |
| "mappingType":1, | |
| "pattern":"namespace", | |
| "thresholds":[ | |
| ], | |
| "type":"string", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"PVC Name", | |
| "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":"persistentvolumeclaim", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"Storage Class", | |
| "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":"storageclass", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"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":"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":"Time", | |
| "thresholds":[ | |
| ], | |
| "type":"hidden", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"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":"Usage", | |
| "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":"percentunit" | |
| }, | |
| { | |
| "alias":"Size (GB)", | |
| "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":"short" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"sum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n * on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace)\n) by (namespace,persistentvolumeclaim,storageclass) / 1024 / 1024 /1024\n\nor\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n * on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace)\n) by (namespace,persistentvolumeclaim,storageclass) / 1024 / 1024 /1024\n\n\n", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"C" | |
| }, | |
| { | |
| "expr":"sum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n * on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace)\n) by (namespace,persistentvolumeclaim,storageclass) / 1024 / 1024 /1024 * $costStorageSSD\n\nor\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n * on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace)\n) by (namespace,persistentvolumeclaim,storageclass) / 1024 / 1024 /1024 * $costStorageStandard\n", | |
| "format":"table", | |
| "hide":false, | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"{{ persistentvolumeclaim }}", | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"sum(kubelet_volume_stats_used_bytes) by (persistentvolumeclaim, namespace) \n/\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n * on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace)\n) by (namespace,persistentvolumeclaim)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"B" | |
| } | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Persistent Volume Claims", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":10, | |
| "w":12, | |
| "x":12, | |
| "y":82 | |
| }, | |
| "id":132, | |
| "legend":{ | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "show":true, | |
| "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(rate(node_disk_reads_completed_total[10m])) or SUM(rate(node_disk_reads_completed[10m]))\n", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"reads", | |
| "refId":"D" | |
| }, | |
| { | |
| "expr":"SUM(rate(node_disk_writes_completed_total[10m])) or SUM(rate(node_disk_writes_completed[10m]))", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"writes", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Disk IOPS", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"none", | |
| "label":"IOPS", | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "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":"Prometheus", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":9, | |
| "w":24, | |
| "x":0, | |
| "y":92 | |
| }, | |
| "id":122, | |
| "legend":{ | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "show":true, | |
| "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( kubelet_volume_stats_inodes_used / kubelet_volume_stats_inodes) by (persistentvolumeclaim) * 100", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"", | |
| "refId":"D" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Inode usage", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"percent", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "collapsed":false, | |
| "gridPos":{ | |
| "h":1, | |
| "w":24, | |
| "x":0, | |
| "y":101 | |
| }, | |
| "id":127, | |
| "panels":[ | |
| ], | |
| "title":"Network", | |
| "type":"row" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":9, | |
| "w":24, | |
| "x":0, | |
| "y":102 | |
| }, | |
| "id":123, | |
| "legend":{ | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "show":true, | |
| "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 (rate (node_network_transmit_bytes_total{}[60m]))\n", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"node_out", | |
| "refId":"B" | |
| }, | |
| { | |
| "expr":"SUM ( rate(node_network_transmit_bytes_total{device=\"eth0\"}[60m]))", | |
| "format":"time_series", | |
| "instant":false, | |
| "intervalFactor":1, | |
| "legendFormat":"eth0 out", | |
| "refId":"C" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Node network transmit", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"decbytes", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| } | |
| ], | |
| "refresh":"15m", | |
| "schemaVersion":16, | |
| "style":"dark", | |
| "tags":[ | |
| "cost", | |
| "utilization", | |
| "metrics" | |
| ], | |
| "templating":{ | |
| "list":[ | |
| { | |
| "current":{ | |
| "text":"23.076", | |
| "value":"23.076" | |
| }, | |
| "hide":0, | |
| "label":"CPU", | |
| "name":"costcpu", | |
| "options":[ | |
| { | |
| "text":"23.076", | |
| "value":"23.076" | |
| } | |
| ], | |
| "query":"23.076", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"5.10", | |
| "value":"5.10" | |
| }, | |
| "hide":0, | |
| "label":"PE CPU", | |
| "name":"costpcpu", | |
| "options":[ | |
| { | |
| "text":"5.10", | |
| "value":"5.10" | |
| } | |
| ], | |
| "query":"5.10", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"3.25", | |
| "value":"3.25" | |
| }, | |
| "hide":0, | |
| "label":"RAM", | |
| "name":"costram", | |
| "options":[ | |
| { | |
| "text":"3.25", | |
| "value":"3.25" | |
| } | |
| ], | |
| "query":"3.25", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"0.6862", | |
| "value":"0.6862" | |
| }, | |
| "hide":0, | |
| "label":"PE RAM", | |
| "name":"costpram", | |
| "options":[ | |
| { | |
| "text":"0.6862", | |
| "value":"0.6862" | |
| } | |
| ], | |
| "query":"0.6862", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"0.040", | |
| "value":"0.040" | |
| }, | |
| "hide":0, | |
| "label":"Storage", | |
| "name":"costStorageStandard", | |
| "options":[ | |
| { | |
| "text":"0.040", | |
| "value":"0.040" | |
| } | |
| ], | |
| "query":"0.040", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":".17", | |
| "value":".17" | |
| }, | |
| "hide":0, | |
| "label":"SSD", | |
| "name":"costStorageSSD", | |
| "options":[ | |
| { | |
| "text":".17", | |
| "value":".17" | |
| } | |
| ], | |
| "query":".17", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":".12", | |
| "value":".12" | |
| }, | |
| "hide":0, | |
| "label":"Egress", | |
| "name":"costEgress", | |
| "options":[ | |
| { | |
| "selected":true, | |
| "text":".12", | |
| "value":".12" | |
| } | |
| ], | |
| "query":".12", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"30", | |
| "value":"30" | |
| }, | |
| "hide":0, | |
| "label":"Discount", | |
| "name":"costDiscount", | |
| "options":[ | |
| { | |
| "text":"30", | |
| "value":"30" | |
| } | |
| ], | |
| "query":"30", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| } | |
| ] | |
| }, | |
| "time":{ | |
| "from":"now-24h", | |
| "to":"now" | |
| }, | |
| "timepicker":{ | |
| "hidden":false, | |
| "refresh_intervals":[ | |
| "5s", | |
| "10s", | |
| "30s", | |
| "1m", | |
| "5m", | |
| "15m", | |
| "30m", | |
| "1h", | |
| "2h", | |
| "1d" | |
| ], | |
| "time_options":[ | |
| "5m", | |
| "15m", | |
| "1h", | |
| "6h", | |
| "12h", | |
| "24h", | |
| "2d", | |
| "7d", | |
| "30d" | |
| ] | |
| }, | |
| "timezone":"browser", | |
| "title":"Cluster cost & utilization metrics", | |
| "uid":"cluster-costs", | |
| "version":1 | |
| } | |
| --- | |
| # Source: cost-analyzer/templates/grafana-dashboard-deployment-utilization-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: deployment-utilization-dashboard | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| grafana_dashboard: "1" | |
| data: | |
| deployment-utilization.json: |- | |
| { | |
| "annotations":{ | |
| "list":[ | |
| { | |
| "builtIn":1, | |
| "datasource":"-- Grafana --", | |
| "enable":true, | |
| "hide":true, | |
| "iconColor":"rgba(0, 211, 255, 1)", | |
| "name":"Annotations & Alerts", | |
| "type":"dashboard" | |
| } | |
| ] | |
| }, | |
| "description":"Monitors Kubernetes deployments in cluster using Prometheus and kube-state-metrics. Shows resource utilization of deployments, daemonsets, and statefulsets.", | |
| "editable":true, | |
| "gnetId":8588, | |
| "graphTooltip":0, | |
| "id":9, | |
| "iteration":1550606633321, | |
| "links":[ | |
| ], | |
| "panels":[ | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":true, | |
| "colors":[ | |
| "rgba(50, 172, 45, 0.97)", | |
| "rgba(237, 129, 40, 0.89)", | |
| "rgba(245, 54, 54, 0.9)" | |
| ], | |
| "datasource":"Prometheus", | |
| "editable":true, | |
| "error":false, | |
| "format":"percent", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":true, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":5, | |
| "w":8, | |
| "x":0, | |
| "y":0 | |
| }, | |
| "height":"180px", | |
| "id":1, | |
| "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 (container_memory_working_set_bytes{pod_name=~\"^$Deployment$Statefulset$Daemonset.*$\", kubernetes_io_hostname=~\"^$Node$\", pod_name!=\"\"}) / sum (kube_node_status_allocatable_memory_bytes{node=~\"^$Node.*$\"}) * 100", | |
| "format":"time_series", | |
| "interval":"10s", | |
| "intervalFactor":1, | |
| "refId":"A", | |
| "step":900 | |
| } | |
| ], | |
| "thresholds":"65, 90", | |
| "title":"Deployment memory usage", | |
| "transparent":false, | |
| "type":"singlestat", | |
| "valueFontSize":"80%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":true, | |
| "colors":[ | |
| "rgba(50, 172, 45, 0.97)", | |
| "rgba(237, 129, 40, 0.89)", | |
| "rgba(245, 54, 54, 0.9)" | |
| ], | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "editable":true, | |
| "error":false, | |
| "format":"percent", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":true, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":5, | |
| "w":8, | |
| "x":8, | |
| "y":0 | |
| }, | |
| "height":"180px", | |
| "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":false, | |
| "lineColor":"rgb(31, 120, 193)", | |
| "show":false | |
| }, | |
| "tableColumn":"", | |
| "targets":[ | |
| { | |
| "expr":"sum (rate (container_cpu_usage_seconds_total{pod_name=~\"^$Deployment$Statefulset$Daemonset.*$\", kubernetes_io_hostname=~\"^$Node$\"}[2m])) / sum (machine_cpu_cores{kubernetes_io_hostname=~\"^$Node$\"}) * 100", | |
| "format":"time_series", | |
| "interval":"10s", | |
| "intervalFactor":1, | |
| "refId":"A", | |
| "step":900 | |
| } | |
| ], | |
| "thresholds":"65, 90", | |
| "title":"Deployment CPU usage", | |
| "type":"singlestat", | |
| "valueFontSize":"80%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":true, | |
| "colors":[ | |
| "rgba(50, 172, 45, 0.97)", | |
| "rgba(237, 129, 40, 0.89)", | |
| "rgba(245, 54, 54, 0.9)" | |
| ], | |
| "datasource":"Prometheus", | |
| "editable":true, | |
| "error":false, | |
| "format":"percent", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":true, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":5, | |
| "w":8, | |
| "x":16, | |
| "y":0 | |
| }, | |
| "height":"180px", | |
| "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(kube_deployment_status_replicas{deployment=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_statefulset_replicas{statefulset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_daemonset_status_desired_number_scheduled{daemonset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0))) - ((sum(kube_deployment_status_replicas_available{deployment=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_statefulset_status_replicas{statefulset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_daemonset_status_number_ready{daemonset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)))) / ((sum(kube_deployment_status_replicas{deployment=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_statefulset_replicas{statefulset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_daemonset_status_desired_number_scheduled{daemonset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0))) * 100", | |
| "format":"time_series", | |
| "intervalFactor":2, | |
| "refId":"A", | |
| "step":1800 | |
| } | |
| ], | |
| "thresholds":"1,30", | |
| "title":"Unavailable Replicas", | |
| "type":"singlestat", | |
| "valueFontSize":"80%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(237, 129, 40, 0.89)", | |
| "rgba(50, 172, 45, 0.97)" | |
| ], | |
| "datasource":"Prometheus", | |
| "editable":true, | |
| "error":false, | |
| "format":"bytes", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":3, | |
| "w":4, | |
| "x":0, | |
| "y":5 | |
| }, | |
| "height":"100px", | |
| "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 (container_memory_working_set_bytes{pod_name=~\"^$Deployment$Statefulset$Daemonset.*$\", kubernetes_io_hostname=~\"^$Node$\", pod_name!=\"\"})", | |
| "format":"time_series", | |
| "intervalFactor":2, | |
| "refId":"A", | |
| "step":1800 | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Used", | |
| "type":"singlestat", | |
| "valueFontSize":"50%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(237, 129, 40, 0.89)", | |
| "rgba(50, 172, 45, 0.97)" | |
| ], | |
| "datasource":"Prometheus", | |
| "editable":true, | |
| "error":false, | |
| "format":"bytes", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":3, | |
| "w":4, | |
| "x":4, | |
| "y":5 | |
| }, | |
| "height":"100px", | |
| "id":5, | |
| "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 (kube_node_status_allocatable_memory_bytes{node=~\"^$Node.*$\"})", | |
| "format":"time_series", | |
| "intervalFactor":2, | |
| "refId":"A", | |
| "step":1800 | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Total", | |
| "type":"singlestat", | |
| "valueFontSize":"50%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(237, 129, 40, 0.89)", | |
| "rgba(50, 172, 45, 0.97)" | |
| ], | |
| "datasource":"Prometheus", | |
| "editable":true, | |
| "error":false, | |
| "format":"none", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":3, | |
| "w":4, | |
| "x":8, | |
| "y":5 | |
| }, | |
| "height":"100px", | |
| "id":6, | |
| "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":" cores", | |
| "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 (rate (container_cpu_usage_seconds_total{pod_name=~\"^$Deployment$Statefulset$Daemonset.*$\", kubernetes_io_hostname=~\"^$Node$\"}[1m]))", | |
| "format":"time_series", | |
| "intervalFactor":2, | |
| "refId":"A", | |
| "step":1800 | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Used", | |
| "type":"singlestat", | |
| "valueFontSize":"50%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(237, 129, 40, 0.89)", | |
| "rgba(50, 172, 45, 0.97)" | |
| ], | |
| "datasource":"Prometheus", | |
| "editable":true, | |
| "error":false, | |
| "format":"none", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":3, | |
| "w":4, | |
| "x":12, | |
| "y":5 | |
| }, | |
| "height":"100px", | |
| "id":7, | |
| "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":" cores", | |
| "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 (machine_cpu_cores{kubernetes_io_hostname=~\"^$Node$\"})", | |
| "intervalFactor":2, | |
| "refId":"A", | |
| "step":1800 | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Total", | |
| "type":"singlestat", | |
| "valueFontSize":"50%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"avg" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(237, 129, 40, 0.89)", | |
| "rgba(50, 172, 45, 0.97)" | |
| ], | |
| "datasource":"Prometheus", | |
| "editable":true, | |
| "error":false, | |
| "format":"none", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":3, | |
| "w":4, | |
| "x":16, | |
| "y":5 | |
| }, | |
| "height":"100px", | |
| "id":8, | |
| "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(kube_deployment_status_replicas_available{deployment=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_statefulset_status_replicas{statefulset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_daemonset_status_number_ready{daemonset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0))", | |
| "format":"time_series", | |
| "intervalFactor":2, | |
| "refId":"A", | |
| "step":1800 | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Available (cluster)", | |
| "type":"singlestat", | |
| "valueFontSize":"50%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(237, 129, 40, 0.89)", | |
| "rgba(50, 172, 45, 0.97)" | |
| ], | |
| "datasource":"Prometheus", | |
| "editable":true, | |
| "error":false, | |
| "format":"none", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":3, | |
| "w":4, | |
| "x":20, | |
| "y":5 | |
| }, | |
| "height":"100px", | |
| "id":9, | |
| "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(kube_deployment_status_replicas{deployment=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_statefulset_replicas{statefulset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0)) + (sum(kube_daemonset_status_desired_number_scheduled{daemonset=~\".*$Deployment$Statefulset$Daemonset\"}) or vector(0))", | |
| "format":"time_series", | |
| "intervalFactor":2, | |
| "legendFormat":"{{ $Daemonset }}", | |
| "refId":"A", | |
| "step":1800 | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Total (cluster)", | |
| "type":"singlestat", | |
| "valueFontSize":"50%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "decimals":3, | |
| "editable":true, | |
| "error":false, | |
| "fill":0, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":11, | |
| "w":24, | |
| "x":0, | |
| "y":8 | |
| }, | |
| "height":"", | |
| "id":10, | |
| "legend":{ | |
| "alignAsTable":true, | |
| "avg":false, | |
| "current":true, | |
| "hideEmpty":false, | |
| "hideZero":false, | |
| "max":true, | |
| "min":false, | |
| "rightSide":true, | |
| "show":true, | |
| "sideWidth":null, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| { | |
| "alias":"/avlbl.*/", | |
| "yaxis":2 | |
| } | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":false, | |
| "targets":[ | |
| { | |
| "expr":"sum (rate (container_cpu_usage_seconds_total{image!=\"\",name=~\"^k8s_.*\",io_kubernetes_container_name!=\"POD\",pod_name=~\"^$Deployment$Statefulset$Daemonset.*$\",kubernetes_io_hostname=~\"^$Node$\"}[1m])) by (pod_name,kubernetes_io_hostname)", | |
| "format":"time_series", | |
| "hide":false, | |
| "interval":"10s", | |
| "intervalFactor":1, | |
| "legendFormat":"usage: {{ kubernetes_io_hostname }} | {{ pod_name }} ", | |
| "metric":"container_cpu", | |
| "refId":"A", | |
| "step":60 | |
| }, | |
| { | |
| "expr":"sum (kube_pod_container_resource_requests_cpu_cores{pod=~\"^$Deployment$Statefulset$Daemonset.*$\",node=~\"^$Node$\"}) by (pod,node)", | |
| "format":"time_series", | |
| "hide":false, | |
| "intervalFactor":2, | |
| "legendFormat":"rqst: {{ node }} | {{ pod }}", | |
| "refId":"B", | |
| "step":120 | |
| }, | |
| { | |
| "expr":"sum ((kube_node_status_allocatable_cpu_cores{node=~\"^$Node$\"})) by (node)", | |
| "format":"time_series", | |
| "hide":true, | |
| "intervalFactor":2, | |
| "legendFormat":"avlbl: {{ node }}", | |
| "refId":"C", | |
| "step":30 | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"CPU usage & requests", | |
| "tooltip":{ | |
| "msResolution":true, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"none", | |
| "label":"cores", | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "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":"Prometheus", | |
| "decimals":2, | |
| "editable":true, | |
| "error":false, | |
| "fill":0, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":13, | |
| "w":24, | |
| "x":0, | |
| "y":19 | |
| }, | |
| "id":11, | |
| "legend":{ | |
| "alignAsTable":true, | |
| "avg":false, | |
| "current":true, | |
| "max":true, | |
| "min":false, | |
| "rightSide":true, | |
| "show":true, | |
| "sideWidth":null, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| { | |
| "alias":"/^avlbl.*$/", | |
| "yaxis":2 | |
| } | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":false, | |
| "targets":[ | |
| { | |
| "expr":"sum (container_memory_working_set_bytes{id!=\"/\",pod_name=~\"^$Deployment$Statefulset$Daemonset.*$\",kubernetes_io_hostname=~\"^$Node$\"}) by (pod_name,kubernetes_io_hostname)", | |
| "format":"time_series", | |
| "hide":false, | |
| "interval":"10s", | |
| "intervalFactor":1, | |
| "legendFormat":"usage: {{kubernetes_io_hostname }} | {{ pod_name }}", | |
| "metric":"container_memory_usage:sort_desc", | |
| "refId":"A", | |
| "step":60 | |
| }, | |
| { | |
| "expr":"sum ((kube_pod_container_resource_requests_memory_bytes{pod=~\"^$Deployment$Statefulset$Daemonset.*$\",node=~\"^$Node$\"})) by (pod,node)", | |
| "format":"time_series", | |
| "intervalFactor":2, | |
| "legendFormat":"rqst: {{ node }} | {{ pod }}", | |
| "refId":"B", | |
| "step":120 | |
| }, | |
| { | |
| "expr":"sum ((kube_node_status_allocatable_memory_bytes{node=~\"^$Node$\"})) by (node)", | |
| "format":"time_series", | |
| "hide":true, | |
| "intervalFactor":2, | |
| "legendFormat":"avlbl: {{ node }}", | |
| "refId":"C", | |
| "step":30 | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Memory usage & requests", | |
| "tooltip":{ | |
| "msResolution":false, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"bytes", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"bytes", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":9, | |
| "w":24, | |
| "x":0, | |
| "y":32 | |
| }, | |
| "id":12, | |
| "legend":{ | |
| "alignAsTable":true, | |
| "avg":false, | |
| "current":true, | |
| "max":false, | |
| "min":false, | |
| "rightSide":true, | |
| "show":true, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":1, | |
| "links":[ | |
| ], | |
| "nullPointMode":"null", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":false, | |
| "targets":[ | |
| { | |
| "expr":"100 * (kubelet_volume_stats_used_bytes{kubernetes_io_hostname=~\"^$Node$\", persistentvolumeclaim=~\".*$Deployment$Statefulset$Daemonset.*$\"} / kubelet_volume_stats_capacity_bytes{kubernetes_io_hostname=~\"^$Node$\", persistentvolumeclaim=~\".*$Deployment$Statefulset$Daemonset.*$\"})", | |
| "format":"time_series", | |
| "intervalFactor":2, | |
| "legendFormat":"{{ persistentvolumeclaim }} | {{ kubernetes_io_hostname }}", | |
| "refId":"A", | |
| "step":120 | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Disk Usage", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"percent", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "editable":true, | |
| "error":false, | |
| "fill":1, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":13, | |
| "w":24, | |
| "x":0, | |
| "y":41 | |
| }, | |
| "id":13, | |
| "legend":{ | |
| "alignAsTable":true, | |
| "avg":true, | |
| "current":true, | |
| "max":true, | |
| "min":false, | |
| "rightSide":true, | |
| "show":true, | |
| "sideWidth":null, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":false, | |
| "targets":[ | |
| { | |
| "expr":"sum (rate (container_network_receive_bytes_total{id!=\"/\",pod_name=~\"^$Deployment$Statefulset$Daemonset.*$\",kubernetes_io_hostname=~\"^$Node$\"}[2m])) by (pod_name, kubernetes_io_hostname)", | |
| "format":"time_series", | |
| "interval":"10s", | |
| "intervalFactor":1, | |
| "legendFormat":"-> {{ kubernetes_io_hostname }} | {{ pod_name }}", | |
| "metric":"network", | |
| "refId":"A", | |
| "step":60 | |
| }, | |
| { | |
| "expr":"- sum( rate (container_network_transmit_bytes_total{id!=\"/\",pod_name=~\"^$Deployment$Statefulset$Daemonset.*$\",kubernetes_io_hostname=~\"^$Node$\"}[2m])) by (pod_name, kubernetes_io_hostname)", | |
| "format":"time_series", | |
| "interval":"10s", | |
| "intervalFactor":1, | |
| "legendFormat":"<- {{ kubernetes_io_hostname }} | {{ pod_name }}", | |
| "metric":"network", | |
| "refId":"B", | |
| "step":60 | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"All processes network I/O", | |
| "tooltip":{ | |
| "msResolution":false, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"Bps", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| } | |
| ], | |
| "refresh":false, | |
| "schemaVersion":16, | |
| "style":"dark", | |
| "tags":[ | |
| "kubernetes", | |
| "deployment" | |
| ], | |
| "templating":{ | |
| "list":[ | |
| { | |
| "allValue":"()", | |
| "current":{ | |
| "tags":[ | |
| ], | |
| "text":"All", | |
| "value":"$__all" | |
| }, | |
| "datasource":"Prometheus", | |
| "hide":0, | |
| "includeAll":true, | |
| "label":null, | |
| "multi":false, | |
| "name":"Deployment", | |
| "options":[ | |
| ], | |
| "query":"label_values(deployment)", | |
| "refresh":1, | |
| "regex":"", | |
| "skipUrlSync":false, | |
| "sort":0, | |
| "tagValuesQuery":"", | |
| "tags":[ | |
| ], | |
| "tagsQuery":"", | |
| "type":"query", | |
| "useTags":false | |
| }, | |
| { | |
| "allValue":"()", | |
| "current":{ | |
| "text":"All", | |
| "value":"$__all" | |
| }, | |
| "datasource":"Prometheus", | |
| "hide":0, | |
| "includeAll":true, | |
| "label":null, | |
| "multi":false, | |
| "name":"Statefulset", | |
| "options":[ | |
| ], | |
| "query":"label_values(statefulset)", | |
| "refresh":1, | |
| "regex":"", | |
| "skipUrlSync":false, | |
| "sort":0, | |
| "tagValuesQuery":"", | |
| "tags":[ | |
| ], | |
| "tagsQuery":"", | |
| "type":"query", | |
| "useTags":false | |
| }, | |
| { | |
| "allValue":"()", | |
| "current":{ | |
| "tags":[ | |
| ], | |
| "text":"aws-node", | |
| "value":"aws-node" | |
| }, | |
| "datasource":"Prometheus", | |
| "hide":0, | |
| "includeAll":true, | |
| "label":null, | |
| "multi":false, | |
| "name":"Daemonset", | |
| "options":[ | |
| ], | |
| "query":"label_values(daemonset)", | |
| "refresh":1, | |
| "regex":"", | |
| "skipUrlSync":false, | |
| "sort":0, | |
| "tagValuesQuery":"", | |
| "tags":[ | |
| ], | |
| "tagsQuery":"", | |
| "type":"query", | |
| "useTags":false | |
| }, | |
| { | |
| "allValue":".*", | |
| "current":{ | |
| "text":"All", | |
| "value":"$__all" | |
| }, | |
| "datasource":"Prometheus", | |
| "hide":0, | |
| "includeAll":true, | |
| "label":null, | |
| "multi":false, | |
| "name":"Node", | |
| "options":[ | |
| ], | |
| "query":"label_values(kubernetes_io_hostname)", | |
| "refresh":1, | |
| "regex":"", | |
| "skipUrlSync":false, | |
| "sort":0, | |
| "tagValuesQuery":"", | |
| "tags":[ | |
| ], | |
| "tagsQuery":"", | |
| "type":"query", | |
| "useTags":false | |
| } | |
| ] | |
| }, | |
| "time":{ | |
| "from":"2019-02-05T22:22:45.431Z", | |
| "to":"2019-02-19T22:22:45.431Z" | |
| }, | |
| "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":"browser", | |
| "title":"Deployment/Statefulset/Daemonset utilization metrics", | |
| "uid":"deployment-metrics", | |
| "version":1 | |
| } | |
| --- | |
| # Source: cost-analyzer/templates/grafana-dashboard-label-cost-utilization-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: label-cost-dashboard | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| grafana_dashboard: "1" | |
| data: | |
| label-cost-utilization.json: |- | |
| { | |
| "annotations":{ | |
| "list":[ | |
| { | |
| "builtIn":1, | |
| "datasource":"-- Grafana --", | |
| "enable":true, | |
| "hide":true, | |
| "iconColor":"rgba(0, 211, 255, 1)", | |
| "name":"Annotations & Alerts", | |
| "type":"dashboard" | |
| } | |
| ] | |
| }, | |
| "editable":true, | |
| "gnetId":null, | |
| "graphTooltip":0, | |
| "id":5, | |
| "iteration":1542347581633, | |
| "links":[ | |
| ], | |
| "panels":[ | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "#299c46", | |
| "rgba(237, 129, 40, 0.89)", | |
| "#d44a3a" | |
| ], | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "description":"Based on CPU usage over last 24 hours", | |
| "format":"currencyUSD", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":5, | |
| "w":6, | |
| "x":0, | |
| "y":0 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":15, | |
| "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":"label_cloud_google_com_gke_preemptible", | |
| "targets":[ | |
| { | |
| "expr":"sum(\n label_replace(\n sum(rate(container_cpu_usage_seconds_total{image!=\"\",container_name!=\"POD\"}[24h])) by (kubernetes_io_hostname,pod_name),\n \"node\",\n \"$1\", \n \"kubernetes_io_hostname\", \n \"(.+)\"\n ) * on (node) group_left (label_cloud_google_com_gke_preemptible)\n kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"} \n * on (pod_name) group_left()\n label_replace(\n sum(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\"\n ) or up * 0\n) * 23.076\n\n+ \n\nsum(\n label_replace(\n sum(rate(container_cpu_usage_seconds_total{image!=\"\",container_name!=\"POD\"}[24h])) by (kubernetes_io_hostname,pod_name),\n \"node\",\n \"$1\", \n \"kubernetes_io_hostname\", \n \"(.+)\"\n ) * on (node) group_left (label_cloud_google_com_gke_preemptible)\n kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"} \n * on (pod_name) group_left()\n label_replace(\n sum(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\"\n ) or up * 0\n) * 5.1", | |
| "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":"Prometheus", | |
| "decimals":2, | |
| "description":"Based on CPU usage over last 24 hours", | |
| "format":"currencyUSD", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":5, | |
| "w":6, | |
| "x":6, | |
| "y":0 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":16, | |
| "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":"label_cloud_google_com_gke_preemptible", | |
| "targets":[ | |
| { | |
| "expr":"sum(\n label_replace(\n sum(container_memory_working_set_bytes{image!=\"\",container_name!=\"POD\"}) by (kubernetes_io_hostname,pod_name),\n \"node\",\n \"$1\", \n \"kubernetes_io_hostname\", \n \"(.+)\"\n ) * on (node) group_left (label_cloud_google_com_gke_preemptible)\n kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"} \n * on (pod_name) group_left()\n label_replace(\n sum(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\"\n ) or up * 0\n) * 4 / 1024 / 1024 / 1024\n\n+ \n\nsum(\n label_replace(\n sum(container_memory_working_set_bytes{image!=\"\",container_name!=\"POD\"}) by (kubernetes_io_hostname,pod_name),\n \"node\",\n \"$1\", \n \"kubernetes_io_hostname\", \n \"(.+)\"\n ) * on (node) group_left (label_cloud_google_com_gke_preemptible)\n kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"} \n * on (pod_name) group_left()\n label_replace(\n sum(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\"\n ) or up * 0\n) * 11 / 1024 / 1024 / 1024", | |
| "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":"Prometheus", | |
| "decimals":2, | |
| "description":"", | |
| "format":"currencyUSD", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":5, | |
| "w":6, | |
| "x":12, | |
| "y":0 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":21, | |
| "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":"label_cloud_google_com_gke_preemptible", | |
| "targets":[ | |
| { | |
| "expr":"sum(\n sum(kube_persistentvolumeclaim_info{storageclass!=\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"} or up * 0\n) / 1024 / 1024 /1024 * .04 \n\n+\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"} or up * 0\n) / 1024 / 1024 /1024 * .17 \n", | |
| "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":"Prometheus", | |
| "decimals":2, | |
| "description":"Cost of memory + CPU usage", | |
| "format":"currencyUSD", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":5, | |
| "w":6, | |
| "x":18, | |
| "y":0 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":20, | |
| "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":"label_cloud_google_com_gke_preemptible", | |
| "targets":[ | |
| { | |
| "expr":"# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CPU ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nsum(\n label_replace(\n sum(rate(container_cpu_usage_seconds_total{image!=\"\",container_name!=\"POD\"}[24h])) by (kubernetes_io_hostname,pod_name),\n \"node\",\n \"$1\", \n \"kubernetes_io_hostname\", \n \"(.+)\"\n ) * on (node) group_left (label_cloud_google_com_gke_preemptible)\n kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"} \n * on (pod_name) group_left()\n label_replace(\n sum(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\"\n ) or up * 0\n) * 23.076\n\n+ \n\nsum(\n label_replace(\n sum(rate(container_cpu_usage_seconds_total{image!=\"\",container_name!=\"POD\"}[24h])) by (kubernetes_io_hostname,pod_name),\n \"node\",\n \"$1\", \n \"kubernetes_io_hostname\", \n \"(.+)\"\n ) * on (node) group_left (label_cloud_google_com_gke_preemptible)\n kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"} \n * on (pod_name) group_left()\n label_replace(\n sum(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\"\n ) or up * 0\n) * 5.1\n\n#END CPU\n+\n\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Memory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nsum(\n label_replace(\n sum(container_memory_working_set_bytes{image!=\"\",container_name!=\"POD\"}) by (kubernetes_io_hostname,pod_name),\n \"node\",\n \"$1\", \n \"kubernetes_io_hostname\", \n \"(.+)\"\n ) * on (node) group_left (label_cloud_google_com_gke_preemptible)\n kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"} \n * on (pod_name) group_left()\n label_replace(\n sum(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\"\n ) or up * 0\n) * 4 / 1024 / 1024 / 1024\n\n+ \n\nsum(\n label_replace(\n sum(container_memory_working_set_bytes{image!=\"\",container_name!=\"POD\"}) by (kubernetes_io_hostname,pod_name),\n \"node\",\n \"$1\", \n \"kubernetes_io_hostname\", \n \"(.+)\"\n ) * on (node) group_left (label_cloud_google_com_gke_preemptible)\n kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"} \n * on (pod_name) group_left()\n label_replace(\n sum(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\"\n ) or up * 0\n) * 11 / 1024 / 1024 / 1024\n\n# END MEMORY\n\n+\n\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~ STORAGE ~~~~~~~~~~~~~~~~~~~~~~~~~\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass!=\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"} or up * 0\n) / 1024 / 1024 /1024 * .04 \n\n+\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"} or up * 0\n) / 1024 / 1024 /1024 * .17 \n\n\n# END STORAGE\n", | |
| "format":"time_series", | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":" {{ node }}", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "timeFrom":"15m", | |
| "timeShift":null, | |
| "title":"Total Cost", | |
| "type":"singlestat", | |
| "valueFontSize":"110%", | |
| "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":"Prometheus", | |
| "format":"none", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":3, | |
| "x":0, | |
| "y":5 | |
| }, | |
| "id":10, | |
| "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":" cores", | |
| "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_pod_container_resource_requests_cpu_cores) by (pod)\n * on (pod) group_left()\n kube_pod_labels{label_$label=~\"$label_value\"}\n or up * 0\n) ", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"CPU Request", | |
| "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":"Prometheus", | |
| "decimals":2, | |
| "format":"none", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":3, | |
| "x":3, | |
| "y":5 | |
| }, | |
| "id":17, | |
| "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":" cores", | |
| "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 label_replace(\n sum(rate(container_cpu_usage_seconds_total{image!=\"\",container_name!=\"POD\"}[1h])) by (kubernetes_io_hostname,pod_name),\n \"node\",\n \"$1\", \n \"kubernetes_io_hostname\", \n \"(.+)\"\n ) \n * on (pod_name) group_left()\n label_replace(\n sum(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\"\n ) or up * 0\n) ", | |
| "format":"time_series", | |
| "intervalFactor":2, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"CPU Used", | |
| "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":"Prometheus", | |
| "decimals":0, | |
| "format":"bytes", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":3, | |
| "x":6, | |
| "y":5 | |
| }, | |
| "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":true, | |
| "lineColor":"rgb(31, 120, 193)", | |
| "show":false | |
| }, | |
| "tableColumn":"", | |
| "targets":[ | |
| { | |
| "expr":"sum(\n sum (kube_pod_container_resource_requests_memory_bytes) by (pod)\n * on (pod) group_left()\n kube_pod_labels{label_$label=~\"$label_value\"}\n or up * 0\n) ", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Memory Request", | |
| "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":"Prometheus", | |
| "format":"bytes", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":3, | |
| "x":9, | |
| "y":5 | |
| }, | |
| "id":18, | |
| "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 label_replace(\n sum (container_memory_working_set_bytes{pod_name!=\"\"}) by (pod_name),\n \"pod\",\n \"$1\", \n \"pod_name\", \n \"(.+)\")\n * on (pod) group_left()\n kube_pod_labels{label_$label=~\"$label_value\"} \n or up * 0\n)", | |
| "format":"time_series", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Memory Usage", | |
| "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":"Prometheus", | |
| "decimals":0, | |
| "format":"bytes", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":3, | |
| "x":12, | |
| "y":5 | |
| }, | |
| "id":22, | |
| "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 sum(kube_persistentvolumeclaim_info{storageclass!=\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"} or up * 0\n) \n\n+\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"} or up * 0\n) \n", | |
| "format":"time_series", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Storage Request", | |
| "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":"Prometheus", | |
| "decimals":0, | |
| "format":"bytes", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":3, | |
| "x":15, | |
| "y":5 | |
| }, | |
| "id":23, | |
| "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 sum(kube_persistentvolumeclaim_info{storageclass!=\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kubelet_volume_stats_used_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"} or up * 0\n) \n\n+\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kubelet_volume_stats_used_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"} or up * 0\n) \n", | |
| "format":"time_series", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Storage Used", | |
| "type":"singlestat", | |
| "valueFontSize":"80%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":null, | |
| "fill":1, | |
| "gridPos":{ | |
| "h":8, | |
| "w":12, | |
| "x":0, | |
| "y":9 | |
| }, | |
| "id":8, | |
| "legend":{ | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "show":true, | |
| "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 label_replace(\n sum (kube_pod_container_resource_limits_cpu_cores) by (pod, container)\n * on (pod) group_left()\n kube_pod_labels{label_$label=~\"$label_value\"},\n \"container_name\",\n \"$1\", \n \"container\", \n \"(.+)\"\n )\n) \n", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"limit", | |
| "refId":"C" | |
| }, | |
| { | |
| "expr":"sum(\n label_replace(\n sum (kube_pod_container_resource_requests_cpu_cores) by (pod, container)\n * on (pod) group_left()\n kube_pod_labels{label_$label=~\"$label_value\"},\n \"container_name\",\n \"$1\", \n \"container\", \n \"(.+)\"\n )\n) \n", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"request", | |
| "refId":"B" | |
| }, | |
| { | |
| "expr":"sum(\n label_replace(\n sum (rate (container_cpu_usage_seconds_total{image!=\"\",container_name!=\"POD\"}[10m])) by (container_name,pod_name),\n \"pod\", \n \"$1\", \n \"pod_name\", \n \"(.+)\"\n )\n * on (pod) group_left (label_app)\n kube_pod_labels{label_$label=~\"$label_value\"}\n)\n", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "legendFormat":"usage", | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"CPU Usage vs Requests vs Limits", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"short", | |
| "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":null, | |
| "fill":1, | |
| "gridPos":{ | |
| "h":8, | |
| "w":12, | |
| "x":12, | |
| "y":9 | |
| }, | |
| "id":12, | |
| "legend":{ | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "show":true, | |
| "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(\nlabel_replace(\nsum (rate (container_cpu_usage_seconds_total{image!=\"\",container_name!=\"POD\"}[10m])) by (container_name,pod_name),\n\"pod\", \n \"$1\", \n \"pod_name\", \n \"(.+)\"\n)\n* on (pod) group_left (label_app)\n kube_pod_labels{label_app=~\"$label_value\"}\n ) by (container_name,pod)\n", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Container CPU Utilization", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"percentunit", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "description":"This table shows the comparison of CPU requests and usage by namespace", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":8, | |
| "w":12, | |
| "x":0, | |
| "y":17 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":4, | |
| "links":[ | |
| ], | |
| "pageSize":8, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":3, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"Node", | |
| "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":"node", | |
| "thresholds":[ | |
| ], | |
| "type":"string", | |
| "unit":"short" | |
| }, | |
| { | |
| "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":"CPU Requests", | |
| "colorMode":null, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#cffaff" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #B", | |
| "thresholds":[ | |
| "" | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"Request Utilization", | |
| "colorMode":"value", | |
| "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":[ | |
| "30" | |
| ], | |
| "type":"number", | |
| "unit":"percentunit" | |
| }, | |
| { | |
| "alias":"Utilization", | |
| "colorMode":null, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "#3f6833", | |
| "#cca300" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #A", | |
| "thresholds":[ | |
| "20", | |
| "90" | |
| ], | |
| "type":"number", | |
| "unit":"percentunit" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"sum(\nsum (rate (container_cpu_usage_seconds_total{image!=\"\",container_name!=\"POD\",pod_name!=\"\"}[10m])) by (container_name,pod_name)\n* on (pod_name) group_left (label_$label)\nlabel_replace(\n kube_pod_labels{label_$label=~\"$label_value\"},\n \"pod_name\", \n \"$1\", \n \"pod\", \n \"(.+)\"\n)) by (container_name,pod_name)", | |
| "format":"table", | |
| "hide":false, | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"", | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"sum(\n label_replace(\n label_replace(\n sum (kube_pod_container_resource_requests_cpu_cores) by (pod, container),\n \"container_name\",\n \"$1\", \n \"container\", \n \"(.+)\"),\n \"pod_name\",\n \"$1\", \n \"pod\", \n \"(.+)\")\n * on (pod) group_left()\n kube_pod_labels{label_$label=~\"$label_value\"}\n) by (pod_name,container_name)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"B" | |
| } | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Average CPU usage by container", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| } | |
| ], | |
| "refresh":false, | |
| "schemaVersion":16, | |
| "style":"dark", | |
| "tags":[ | |
| "cost", | |
| "utilization", | |
| "metrics" | |
| ], | |
| "templating":{ | |
| "list":[ | |
| { | |
| "datasource":"Prometheus", | |
| "filters":[ | |
| ], | |
| "hide":0, | |
| "label":"", | |
| "name":"Filters", | |
| "skipUrlSync":false, | |
| "type":"adhoc" | |
| }, | |
| { | |
| "allValue":null, | |
| "current":{ | |
| "tags":[ | |
| ], | |
| "text":"app", | |
| "value":"app" | |
| }, | |
| "hide":0, | |
| "includeAll":false, | |
| "label":"Label", | |
| "multi":false, | |
| "name":"label", | |
| "options":[ | |
| { | |
| "selected":false, | |
| "text":"app", | |
| "value":"app" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"tier", | |
| "value":"tier" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"component", | |
| "value":"component" | |
| }, | |
| { | |
| "selected":true, | |
| "text":"release", | |
| "value":"release" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"name", | |
| "value":"name" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"team", | |
| "value":"team" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"department", | |
| "value":"department" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"owner", | |
| "value":"owner" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"contact", | |
| "value":"contact" | |
| } | |
| ], | |
| "query":"app, tier, component, release, name, team, department, owner, contact", | |
| "skipUrlSync":false, | |
| "type":"custom" | |
| }, | |
| { | |
| "allValue":".*", | |
| "current":{ | |
| "text":"redis", | |
| "value":"redis" | |
| }, | |
| "datasource":"Prometheus", | |
| "hide":0, | |
| "includeAll":true, | |
| "label":"Value", | |
| "multi":false, | |
| "name":"label_value", | |
| "options":[ | |
| ], | |
| "query":"query_result(SUM(kube_pod_labels{label_$label!=\"\",namespace!=\"kube-system\"}) by (label_$label))", | |
| "refresh":1, | |
| "regex":"/label_$label=\\\"(.*?)(\\\")/", | |
| "skipUrlSync":false, | |
| "sort":0, | |
| "tagValuesQuery":"", | |
| "tags":[ | |
| ], | |
| "tagsQuery":"", | |
| "type":"query", | |
| "useTags":false | |
| }, | |
| { | |
| "allValue":"()", | |
| "current":{ | |
| "text":"cost-analyzer-grafana", | |
| "value":"cost-analyzer-grafana" | |
| }, | |
| "datasource":"Prometheus", | |
| "hide":0, | |
| "includeAll":true, | |
| "label":"", | |
| "multi":false, | |
| "name":"Deployments", | |
| "options":[ | |
| ], | |
| "query":"label_values(deployment)", | |
| "refresh":1, | |
| "regex":"", | |
| "skipUrlSync":false, | |
| "sort":1, | |
| "tagValuesQuery":"", | |
| "tags":[ | |
| ], | |
| "tagsQuery":"", | |
| "type":"query", | |
| "useTags":false | |
| }, | |
| { | |
| "allValue":null, | |
| "current":{ | |
| "tags":[ | |
| ], | |
| "text":"All", | |
| "value":"$__all" | |
| }, | |
| "datasource":"Prometheus", | |
| "hide":0, | |
| "includeAll":true, | |
| "label":null, | |
| "multi":false, | |
| "name":"Secondary", | |
| "options":[ | |
| { | |
| "selected":true, | |
| "text":"All", | |
| "value":"$__all" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"app", | |
| "value":"app" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"component", | |
| "value":"component" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"controller_revision_hash", | |
| "value":"controller_revision_hash" | |
| }, | |
| { | |
| "selected":false, | |
| "text":"k8s_app", | |
| "value":"k8s_app" | |
| } | |
| ], | |
| "query":"query_result(kube_pod_labels)", | |
| "refresh":0, | |
| "regex":"/.+?label_([^=]*).*/", | |
| "skipUrlSync":false, | |
| "sort":1, | |
| "tagValuesQuery":"", | |
| "tags":[ | |
| ], | |
| "tagsQuery":"", | |
| "type":"query", | |
| "useTags":false | |
| } | |
| ] | |
| }, | |
| "time":{ | |
| "from":"now-6h", | |
| "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":"Label costs & utilization", | |
| "uid":"lWMhIA-ik", | |
| "version":28 | |
| } | |
| --- | |
| # Source: cost-analyzer/templates/grafana-dashboard-namespace-utilization-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: namespace-utilization-dashboard | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| grafana_dashboard: "1" | |
| data: | |
| namespace-utilization.json: |- | |
| { | |
| "annotations":{ | |
| "list":[ | |
| { | |
| "builtIn":1, | |
| "datasource":"-- Grafana --", | |
| "enable":true, | |
| "hide":true, | |
| "iconColor":"rgba(0, 211, 255, 1)", | |
| "name":"Annotations & Alerts", | |
| "type":"dashboard" | |
| } | |
| ] | |
| }, | |
| "description":"A dashboard to help with utilization and resource allocation", | |
| "editable":true, | |
| "gnetId":8673, | |
| "graphTooltip":0, | |
| "id":9, | |
| "iteration":1553150922105, | |
| "links":[ | |
| ], | |
| "panels":[ | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":9, | |
| "w":16, | |
| "x":0, | |
| "y":0 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":73, | |
| "links":[ | |
| ], | |
| "pageSize":8, | |
| "repeat":null, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":2, | |
| "desc":false | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"Pod", | |
| "colorMode":null, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#c15c17" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "link":false, | |
| "linkTooltip":"", | |
| "linkUrl":"", | |
| "pattern":"pod_name", | |
| "thresholds":[ | |
| "30", | |
| "80" | |
| ], | |
| "type":"string", | |
| "unit":"currencyUSD" | |
| }, | |
| { | |
| "alias":"RAM", | |
| "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, | |
| "pattern":"Value #B", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"decbytes" | |
| }, | |
| { | |
| "alias":"CPU %", | |
| "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":"percent" | |
| }, | |
| { | |
| "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":"Storage", | |
| "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":"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 #D", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"currencyUSD" | |
| }, | |
| { | |
| "alias":"CPU Utilization", | |
| "colorMode":"value", | |
| "colors":[ | |
| "#bf1b00", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#ef843c" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #E", | |
| "thresholds":[ | |
| "30", | |
| "80" | |
| ], | |
| "type":"number", | |
| "unit":"percent" | |
| }, | |
| { | |
| "alias":"RAM Utilization", | |
| "colorMode":"value", | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#ef843c" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "mappingType":1, | |
| "pattern":"Value #F", | |
| "thresholds":[ | |
| "30", | |
| "80" | |
| ], | |
| "type":"number", | |
| "unit":"percent" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"sum (rate (container_cpu_usage_seconds_total{namespace=\"$namespace\"}[10m])) by (pod_name) * 100", | |
| "format":"table", | |
| "hide":false, | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"{{ pod_name }}", | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"sum (avg_over_time (container_memory_working_set_bytes{namespace=\"$namespace\", container_name!=\"POD\"}[10m])) by (pod_name)", | |
| "format":"table", | |
| "hide":false, | |
| "instant":true, | |
| "intervalFactor":1, | |
| "legendFormat":"{{ pod_name }}", | |
| "refId":"B" | |
| } | |
| ], | |
| "timeFrom":"1M", | |
| "timeShift":null, | |
| "title":"Pod utilization analysis", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":9, | |
| "w":8, | |
| "x":16, | |
| "y":0 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":90, | |
| "links":[ | |
| ], | |
| "pageSize":8, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":4, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"Namespace", | |
| "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":"namespace", | |
| "thresholds":[ | |
| ], | |
| "type":"hidden", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"PVC Name", | |
| "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":"persistentvolumeclaim", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"Storage Class", | |
| "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":"storageclass", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"Size", | |
| "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":1, | |
| "mappingType":1, | |
| "pattern":"Value", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"gbytes" | |
| }, | |
| { | |
| "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" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"sum (\n sum(kube_persistentvolumeclaim_info) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right (storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes{namespace=~\"$namespace\"}) by (persistentvolumeclaim, namespace)\n) by (namespace,persistentvolumeclaim,storageclass) / 1024 / 1024 /1024 ", | |
| "format":"table", | |
| "hide":false, | |
| "instant":true, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"{{ persistentvolumeclaim }}", | |
| "refId":"A" | |
| } | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Persistent Volume Claims", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "description":"CPU requests by pod divided by the rate of CPU usage over the last hour", | |
| "fill":1, | |
| "gridPos":{ | |
| "h":9, | |
| "w":24, | |
| "x":0, | |
| "y":9 | |
| }, | |
| "id":100, | |
| "legend":{ | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "show":true, | |
| "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":"topk(10,\n label_replace(\n sum(kube_pod_container_resource_requests_cpu_cores{namespace=\"$namespace\"}) by (pod),\n \"pod_name\", \n \"$1\", \n \"pod\", \n \"(.+)\"\n ) \n/ on (pod_name) sum(rate(container_cpu_usage_seconds_total{namespace=\"$namespace\",pod_name=~\".+\"}[1h])) by (pod_name))", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":null, | |
| "timeShift":null, | |
| "title":"Ratio of CPU requests to usage (Top 10 pods)", | |
| "tooltip":{ | |
| "shared":true, | |
| "sort":0, | |
| "value_type":"individual" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "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":"Prometheus", | |
| "decimals":3, | |
| "description":"This panel shows historical utilization as an average across all pods in this namespace. It only accounts for currently deployed pods", | |
| "editable":true, | |
| "error":false, | |
| "fill":0, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":6, | |
| "w":12, | |
| "x":0, | |
| "y":18 | |
| }, | |
| "height":"", | |
| "id":94, | |
| "isNew":true, | |
| "legend":{ | |
| "alignAsTable":false, | |
| "avg":false, | |
| "current":false, | |
| "hideEmpty":false, | |
| "hideZero":false, | |
| "max":false, | |
| "min":false, | |
| "rightSide":false, | |
| "show":false, | |
| "sideWidth":null, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":true, | |
| "targets":[ | |
| { | |
| "expr":"sum (rate (container_cpu_usage_seconds_total{namespace=\"$namespace\"}[10m])) by (namespace) * 100\n", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"10s", | |
| "intervalFactor":1, | |
| "legendFormat":"cpu utilization", | |
| "metric":"container_cpu", | |
| "refId":"A", | |
| "step":10 | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":"", | |
| "timeShift":null, | |
| "title":"Overall CPU Utilization", | |
| "tooltip":{ | |
| "msResolution":true, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "decimals":null, | |
| "format":"percent", | |
| "label":"", | |
| "logBase":1, | |
| "max":"110", | |
| "min":"0", | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "description":"This panel shows historical utilization as an average across all pods in this namespace. It only accounts for currently deployed pods", | |
| "editable":true, | |
| "error":false, | |
| "fill":0, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":6, | |
| "w":12, | |
| "x":12, | |
| "y":18 | |
| }, | |
| "id":92, | |
| "isNew":true, | |
| "legend":{ | |
| "alignAsTable":false, | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "rightSide":false, | |
| "show":false, | |
| "sideWidth":200, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":true, | |
| "targets":[ | |
| { | |
| "expr":"sum (container_memory_working_set_bytes{namespace=\"$namespace\"})\n/\nsum(node_memory_MemTotal_bytes) * 100", | |
| "format":"time_series", | |
| "instant":false, | |
| "intervalFactor":1, | |
| "legendFormat":"mem utilization", | |
| "refId":"B" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":"", | |
| "timeShift":null, | |
| "title":"Overall RAM Utilization", | |
| "tooltip":{ | |
| "msResolution":false, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "decimals":null, | |
| "format":"percent", | |
| "label":null, | |
| "logBase":1, | |
| "max":"110", | |
| "min":"0", | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "description":"Traffic in and out of this namespace, as a sum of the pods within it", | |
| "editable":true, | |
| "error":false, | |
| "fill":1, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":6, | |
| "w":12, | |
| "x":0, | |
| "y":24 | |
| }, | |
| "height":"", | |
| "id":96, | |
| "isNew":true, | |
| "legend":{ | |
| "alignAsTable":false, | |
| "avg":true, | |
| "current":true, | |
| "hideEmpty":false, | |
| "hideZero":false, | |
| "max":false, | |
| "min":false, | |
| "rightSide":false, | |
| "show":true, | |
| "sideWidth":null, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":false, | |
| "targets":[ | |
| { | |
| "expr":"sum (rate (container_network_receive_bytes_total{namespace=\"$namespace\"}[10m])) by (namespace)", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"<- in", | |
| "metric":"container_cpu", | |
| "refId":"A", | |
| "step":10 | |
| }, | |
| { | |
| "expr":"- sum (rate (container_network_transmit_bytes_total{namespace=\"$namespace\"}[10m])) by (namespace)", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"-> out", | |
| "refId":"B" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":"", | |
| "timeShift":null, | |
| "title":"Network IO", | |
| "tooltip":{ | |
| "msResolution":true, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"Bps", | |
| "label":"", | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "description":"Disk reads and writes for the namespace, as a sum of the pods within it", | |
| "editable":true, | |
| "error":false, | |
| "fill":1, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":6, | |
| "w":12, | |
| "x":12, | |
| "y":24 | |
| }, | |
| "height":"", | |
| "id":98, | |
| "isNew":true, | |
| "legend":{ | |
| "alignAsTable":false, | |
| "avg":true, | |
| "current":true, | |
| "hideEmpty":false, | |
| "hideZero":false, | |
| "max":false, | |
| "min":false, | |
| "rightSide":false, | |
| "show":true, | |
| "sideWidth":null, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":false, | |
| "targets":[ | |
| { | |
| "expr":"sum (rate (container_fs_writes_bytes_total{namespace=\"$namespace\"}[10m])) by (namespace)", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"<- write", | |
| "metric":"container_cpu", | |
| "refId":"A", | |
| "step":10 | |
| }, | |
| { | |
| "expr":"- sum (rate (container_fs_reads_bytes_total{namespace=\"$namespace\"}[10m])) by (namespace)", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"-> read", | |
| "refId":"B" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":"", | |
| "timeShift":null, | |
| "title":"Disk IO", | |
| "tooltip":{ | |
| "msResolution":true, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"Bps", | |
| "label":"", | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| } | |
| ], | |
| "refresh":"10s", | |
| "schemaVersion":16, | |
| "style":"dark", | |
| "tags":[ | |
| "cost", | |
| "utilization", | |
| "metrics" | |
| ], | |
| "templating":{ | |
| "list":[ | |
| { | |
| "current":{ | |
| "text":"23.06", | |
| "value":"23.06" | |
| }, | |
| "hide":0, | |
| "label":"CPU", | |
| "name":"costcpu", | |
| "options":[ | |
| { | |
| "text":"23.06", | |
| "value":"23.06" | |
| } | |
| ], | |
| "query":"23.06", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"7.28", | |
| "value":"7.28" | |
| }, | |
| "hide":0, | |
| "label":"PE CPU", | |
| "name":"costpcpu", | |
| "options":[ | |
| { | |
| "text":"7.28", | |
| "value":"7.28" | |
| } | |
| ], | |
| "query":"7.28", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"3.25", | |
| "value":"3.25" | |
| }, | |
| "hide":0, | |
| "label":"RAM", | |
| "name":"costram", | |
| "options":[ | |
| { | |
| "text":"3.25", | |
| "value":"3.25" | |
| } | |
| ], | |
| "query":"3.25", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"0.6862", | |
| "value":"0.6862" | |
| }, | |
| "hide":0, | |
| "label":"PE RAM", | |
| "name":"costpram", | |
| "options":[ | |
| { | |
| "text":"0.6862", | |
| "value":"0.6862" | |
| } | |
| ], | |
| "query":"0.6862", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"0.04", | |
| "value":"0.04" | |
| }, | |
| "hide":0, | |
| "label":"Storage", | |
| "name":"costStorageStandard", | |
| "options":[ | |
| { | |
| "text":"0.04", | |
| "value":"0.04" | |
| } | |
| ], | |
| "query":"0.04", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":".17", | |
| "value":".17" | |
| }, | |
| "hide":0, | |
| "label":"SSD", | |
| "name":"costStorageSSD", | |
| "options":[ | |
| { | |
| "text":".17", | |
| "value":".17" | |
| } | |
| ], | |
| "query":".17", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "current":{ | |
| "text":"30", | |
| "value":"30" | |
| }, | |
| "hide":0, | |
| "label":"Disc.", | |
| "name":"costDiscount", | |
| "options":[ | |
| { | |
| "text":"30", | |
| "value":"30" | |
| } | |
| ], | |
| "query":"30", | |
| "skipUrlSync":false, | |
| "type":"constant" | |
| }, | |
| { | |
| "allValue":null, | |
| "current":{ | |
| "text":"kube-system", | |
| "value":"kube-system" | |
| }, | |
| "datasource":"Prometheus", | |
| "hide":0, | |
| "includeAll":false, | |
| "label":"NS", | |
| "multi":false, | |
| "name":"namespace", | |
| "options":[ | |
| ], | |
| "query":"query_result(sum(kube_namespace_created{namespace!=\"\"}) by (namespace))", | |
| "refresh":1, | |
| "regex":"/namespace=\\\"(.*?)(\\\")/", | |
| "skipUrlSync":false, | |
| "sort":0, | |
| "tagValuesQuery":"", | |
| "tags":[ | |
| ], | |
| "tagsQuery":"", | |
| "type":"query", | |
| "useTags":false | |
| }, | |
| { | |
| "datasource":"Prometheus", | |
| "filters":[ | |
| ], | |
| "hide":0, | |
| "label":"", | |
| "name":"Filters", | |
| "skipUrlSync":false, | |
| "type":"adhoc" | |
| } | |
| ] | |
| }, | |
| "time":{ | |
| "from":"now-15m", | |
| "to":"now" | |
| }, | |
| "timepicker":{ | |
| "hidden":false, | |
| "refresh_intervals":[ | |
| "5s", | |
| "10s", | |
| "30s", | |
| "1m", | |
| "5m", | |
| "15m", | |
| "30m", | |
| "1h", | |
| "2h", | |
| "1d" | |
| ], | |
| "time_options":[ | |
| "5m", | |
| "15m", | |
| "1h", | |
| "6h", | |
| "12h", | |
| "24h", | |
| "2d", | |
| "7d", | |
| "30d" | |
| ] | |
| }, | |
| "timezone":"browser", | |
| "title":"Namespace utilization metrics", | |
| "uid":"at-cost-analysis-namespace2", | |
| "version":1 | |
| } | |
| --- | |
| # Source: cost-analyzer/templates/grafana-dashboard-node-utilization-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: node-utilization-dashboard | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| grafana_dashboard: "1" | |
| data: | |
| node-utilization.json: |- | |
| { | |
| "annotations":{ | |
| "list":[ | |
| { | |
| "builtIn":1, | |
| "datasource":"-- Grafana --", | |
| "enable":true, | |
| "hide":true, | |
| "iconColor":"rgba(0, 211, 255, 1)", | |
| "name":"Annotations & Alerts", | |
| "type":"dashboard" | |
| } | |
| ] | |
| }, | |
| "editable":true, | |
| "gnetId":null, | |
| "graphTooltip":0, | |
| "id":6, | |
| "iteration":1557245882378, | |
| "links":[ | |
| ], | |
| "panels":[ | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "#299c46", | |
| "rgba(237, 129, 40, 0.89)", | |
| "#d44a3a" | |
| ], | |
| "datasource":null, | |
| "format":"percentunit", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":true, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":7, | |
| "w":8, | |
| "x":0, | |
| "y":0 | |
| }, | |
| "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":false, | |
| "lineColor":"rgb(31, 120, 193)", | |
| "show":false | |
| }, | |
| "tableColumn":"", | |
| "targets":[ | |
| { | |
| "expr":"sum(irate(container_cpu_usage_seconds_total{id=\"/\",instance=\"$node\"}[10m]))", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"CPU Usage", | |
| "type":"singlestat", | |
| "valueFontSize":"80%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"avg" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "#299c46", | |
| "rgba(237, 129, 40, 0.89)", | |
| "#d44a3a" | |
| ], | |
| "datasource":null, | |
| "format":"percentunit", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":true, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":7, | |
| "w":8, | |
| "x":8, | |
| "y":0 | |
| }, | |
| "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(container_memory_usage_bytes{namespace!=\"\",instance=\"$node\"}) / SUM(kube_node_status_capacity_memory_bytes{node=\"$node\"})", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Memory Usage", | |
| "type":"singlestat", | |
| "valueFontSize":"80%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"avg" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "#299c46", | |
| "rgba(237, 129, 40, 0.89)", | |
| "#d44a3a" | |
| ], | |
| "datasource":null, | |
| "format":"percentunit", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":true, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":7, | |
| "w":8, | |
| "x":16, | |
| "y":0 | |
| }, | |
| "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(container_fs_usage_bytes{device=~\"^/dev/[sv]d[a-z][1-9]$\",id=\"/\",instance=\"$node\"}) /\nsum(container_fs_limit_bytes{device=~\"^/dev/[sv]d[a-z][1-9]$\",id=\"/\",instance=\"$node\"})", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Storage Usage", | |
| "type":"singlestat", | |
| "valueFontSize":"80%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"avg" | |
| }, | |
| { | |
| "columns":[ | |
| { | |
| "text":"Avg", | |
| "value":"avg" | |
| } | |
| ], | |
| "datasource":"Prometheus", | |
| "fontSize":"100%", | |
| "gridPos":{ | |
| "h":8, | |
| "w":16, | |
| "x":0, | |
| "y":7 | |
| }, | |
| "hideTimeOverride":true, | |
| "id":21, | |
| "links":[ | |
| ], | |
| "pageSize":8, | |
| "repeat":null, | |
| "repeatDirection":"v", | |
| "scroll":true, | |
| "showHeader":true, | |
| "sort":{ | |
| "col":4, | |
| "desc":true | |
| }, | |
| "styles":[ | |
| { | |
| "alias":"Pod", | |
| "colorMode":null, | |
| "colors":[ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#c15c17" | |
| ], | |
| "dateFormat":"YYYY-MM-DD HH:mm:ss", | |
| "decimals":2, | |
| "link":false, | |
| "linkTooltip":"", | |
| "linkUrl":"", | |
| "pattern":"pod_name", | |
| "thresholds":[ | |
| "30", | |
| "80" | |
| ], | |
| "type":"string", | |
| "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":"Time", | |
| "thresholds":[ | |
| ], | |
| "type":"hidden", | |
| "unit":"short" | |
| }, | |
| { | |
| "alias":"CPU Usage", | |
| "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":"short" | |
| }, | |
| { | |
| "alias":"CPU Request", | |
| "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":"short" | |
| }, | |
| { | |
| "alias":"CPU Limit", | |
| "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":"short" | |
| }, | |
| { | |
| "alias":"Mem Usage", | |
| "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":"bytes" | |
| }, | |
| { | |
| "alias":"Mem Request", | |
| "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 #E", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"bytes" | |
| }, | |
| { | |
| "alias":"Mem Limit", | |
| "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 #F", | |
| "thresholds":[ | |
| ], | |
| "type":"number", | |
| "unit":"bytes" | |
| } | |
| ], | |
| "targets":[ | |
| { | |
| "expr":"sum(rate(container_cpu_usage_seconds_total{container_name!=\"\",container_name!=\"POD\",pod_name!=\"\",instance=\"$node\"}[24h])) by (pod_name)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"C" | |
| }, | |
| { | |
| "expr":"sum(label_replace(\nsum(avg_over_time(kube_pod_container_resource_requests_cpu_cores{container!=\"\",container!=\"POD\",node=\"$node\"}[24h])) by (pod), \n\"pod_name\",\"$1\",\"pod\",\"(.+)\")\nor up * 0\n) by (pod_name)", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"A" | |
| }, | |
| { | |
| "expr":"sum(avg_over_time(container_memory_usage_bytes{container_name!=\"\",container_name!=\"POD\",pod_name!=\"\",instance=\"$node\"}[24h])) by (pod_name)\n", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"D" | |
| }, | |
| { | |
| "expr":"sum(label_replace(label_replace(\nsum(avg_over_time(kube_pod_container_resource_requests_memory_bytes{container!=\"\",container!=\"POD\",node=\"$node\"}[24h])) by (pod),\n\"container_name\",\"$1\",\"container\",\"(.+)\"), \"pod_name\",\"$1\",\"pod\",\"(.+)\")\nor up * 0\n) by (pod_name)\n", | |
| "format":"table", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"E" | |
| } | |
| ], | |
| "timeFrom":"1M", | |
| "timeShift":null, | |
| "title":"Current pods", | |
| "transform":"table", | |
| "transparent":false, | |
| "type":"table" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "#299c46", | |
| "rgba(237, 129, 40, 0.89)", | |
| "#d44a3a" | |
| ], | |
| "datasource":null, | |
| "decimals":0, | |
| "format":"none", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":4, | |
| "x":16, | |
| "y":7 | |
| }, | |
| "id":8, | |
| "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 count(avg_over_time(kube_pod_container_resource_requests_cpu_cores{container!=\"\",container!=\"POD\",node=\"$node\"}[24h])) by (pod)\n * on (pod) group_right()\n sum(kube_pod_container_status_running) by (pod)\n)", | |
| "format":"time_series", | |
| "instant":true, | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Pods Running", | |
| "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":null, | |
| "format":"bytes", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":4, | |
| "x":20, | |
| "y":7 | |
| }, | |
| "id":18, | |
| "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(container_fs_limit_bytes{device=~\"^/dev/[sv]d[a-z][1-9]$\",id=\"/\",instance=\"$node\"})", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"Storage Capacity", | |
| "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":null, | |
| "format":"none", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":4, | |
| "x":16, | |
| "y":11 | |
| }, | |
| "id":9, | |
| "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":"kube_node_status_capacity_cpu_cores{node=\"$node\"}", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"CPU Capacity", | |
| "type":"singlestat", | |
| "valueFontSize":"80%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"avg" | |
| }, | |
| { | |
| "cacheTimeout":null, | |
| "colorBackground":false, | |
| "colorValue":false, | |
| "colors":[ | |
| "#299c46", | |
| "rgba(237, 129, 40, 0.89)", | |
| "#d44a3a" | |
| ], | |
| "datasource":null, | |
| "format":"bytes", | |
| "gauge":{ | |
| "maxValue":100, | |
| "minValue":0, | |
| "show":false, | |
| "thresholdLabels":false, | |
| "thresholdMarkers":true | |
| }, | |
| "gridPos":{ | |
| "h":4, | |
| "w":4, | |
| "x":20, | |
| "y":11 | |
| }, | |
| "id":19, | |
| "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":"kube_node_status_capacity_memory_bytes{node=\"$node\"}", | |
| "format":"time_series", | |
| "intervalFactor":1, | |
| "refId":"A" | |
| } | |
| ], | |
| "thresholds":"", | |
| "title":"RAM Capacity", | |
| "type":"singlestat", | |
| "valueFontSize":"80%", | |
| "valueMaps":[ | |
| { | |
| "op":"=", | |
| "text":"N/A", | |
| "value":"null" | |
| } | |
| ], | |
| "valueName":"current" | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "decimals":3, | |
| "description":"This panel shows historical utilization for the node.", | |
| "editable":true, | |
| "error":false, | |
| "fill":0, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":6, | |
| "w":12, | |
| "x":0, | |
| "y":15 | |
| }, | |
| "height":"", | |
| "id":11, | |
| "isNew":true, | |
| "legend":{ | |
| "alignAsTable":false, | |
| "avg":false, | |
| "current":false, | |
| "hideEmpty":false, | |
| "hideZero":false, | |
| "max":false, | |
| "min":false, | |
| "rightSide":false, | |
| "show":false, | |
| "sideWidth":null, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":true, | |
| "targets":[ | |
| { | |
| "expr":"sum(irate(container_cpu_usage_seconds_total{id=\"/\",instance=\"$node\"}[10m]))", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"10s", | |
| "intervalFactor":1, | |
| "legendFormat":"cpu utilization", | |
| "metric":"container_cpu", | |
| "refId":"A", | |
| "step":10 | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":"", | |
| "timeShift":null, | |
| "title":"CPU Utilization", | |
| "tooltip":{ | |
| "msResolution":true, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "decimals":null, | |
| "format":"percentunit", | |
| "label":"", | |
| "logBase":1, | |
| "max":"1.1", | |
| "min":"0", | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "description":"This panel shows historical utilization for the node.", | |
| "editable":true, | |
| "error":false, | |
| "fill":0, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":6, | |
| "w":12, | |
| "x":12, | |
| "y":15 | |
| }, | |
| "id":13, | |
| "isNew":true, | |
| "legend":{ | |
| "alignAsTable":false, | |
| "avg":false, | |
| "current":false, | |
| "max":false, | |
| "min":false, | |
| "rightSide":false, | |
| "show":false, | |
| "sideWidth":200, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":true, | |
| "targets":[ | |
| { | |
| "expr":"SUM(container_memory_usage_bytes{namespace!=\"\",instance=\"$node\"}) / SUM(kube_node_status_capacity_memory_bytes{node=\"$node\"})", | |
| "format":"time_series", | |
| "instant":false, | |
| "interval":"10s", | |
| "intervalFactor":1, | |
| "legendFormat":"ram utilization", | |
| "metric":"container_memory_usage:sort_desc", | |
| "refId":"A", | |
| "step":10 | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":"", | |
| "timeShift":null, | |
| "title":"RAM Utilization", | |
| "tooltip":{ | |
| "msResolution":false, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "decimals":null, | |
| "format":"percentunit", | |
| "label":null, | |
| "logBase":1, | |
| "max":"1.1", | |
| "min":"0", | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "description":"Traffic in and out of this namespace, as a sum of the pods within it", | |
| "editable":true, | |
| "error":false, | |
| "fill":1, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":6, | |
| "w":12, | |
| "x":0, | |
| "y":21 | |
| }, | |
| "height":"", | |
| "id":15, | |
| "isNew":true, | |
| "legend":{ | |
| "alignAsTable":false, | |
| "avg":true, | |
| "current":true, | |
| "hideEmpty":false, | |
| "hideZero":false, | |
| "max":false, | |
| "min":false, | |
| "rightSide":false, | |
| "show":true, | |
| "sideWidth":null, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":false, | |
| "targets":[ | |
| { | |
| "expr":"sum (rate (container_network_receive_bytes_total{instance=\"$node\"}[10m]))", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"<- in", | |
| "metric":"container_cpu", | |
| "refId":"A", | |
| "step":10 | |
| }, | |
| { | |
| "expr":"- sum (rate (container_network_transmit_bytes_total{instance=\"$node\"}[10m]))", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"-> out", | |
| "refId":"B" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":"", | |
| "timeShift":null, | |
| "title":"Network IO", | |
| "tooltip":{ | |
| "msResolution":true, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"Bps", | |
| "label":"", | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| }, | |
| { | |
| "aliasColors":{ | |
| }, | |
| "bars":false, | |
| "dashLength":10, | |
| "dashes":false, | |
| "datasource":"Prometheus", | |
| "decimals":2, | |
| "description":"Disk reads and writes for the namespace, as a sum of the pods within it", | |
| "editable":true, | |
| "error":false, | |
| "fill":1, | |
| "grid":{ | |
| }, | |
| "gridPos":{ | |
| "h":6, | |
| "w":12, | |
| "x":12, | |
| "y":21 | |
| }, | |
| "height":"", | |
| "id":17, | |
| "isNew":true, | |
| "legend":{ | |
| "alignAsTable":false, | |
| "avg":true, | |
| "current":true, | |
| "hideEmpty":false, | |
| "hideZero":false, | |
| "max":false, | |
| "min":false, | |
| "rightSide":false, | |
| "show":true, | |
| "sideWidth":null, | |
| "sort":"current", | |
| "sortDesc":true, | |
| "total":false, | |
| "values":true | |
| }, | |
| "lines":true, | |
| "linewidth":2, | |
| "links":[ | |
| ], | |
| "nullPointMode":"connected", | |
| "percentage":false, | |
| "pointradius":5, | |
| "points":false, | |
| "renderer":"flot", | |
| "seriesOverrides":[ | |
| ], | |
| "spaceLength":10, | |
| "stack":false, | |
| "steppedLine":false, | |
| "targets":[ | |
| { | |
| "expr":"sum (rate (container_fs_writes_bytes_total{instance=\"$node\"}[10m]))", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"<- write", | |
| "metric":"container_cpu", | |
| "refId":"A", | |
| "step":10 | |
| }, | |
| { | |
| "expr":"- sum (rate (container_fs_reads_bytes_total{instance=\"$node\"}[10m]))", | |
| "format":"time_series", | |
| "hide":false, | |
| "instant":false, | |
| "interval":"", | |
| "intervalFactor":1, | |
| "legendFormat":"-> read", | |
| "refId":"B" | |
| } | |
| ], | |
| "thresholds":[ | |
| ], | |
| "timeFrom":"", | |
| "timeShift":null, | |
| "title":"Disk IO", | |
| "tooltip":{ | |
| "msResolution":true, | |
| "shared":true, | |
| "sort":2, | |
| "value_type":"cumulative" | |
| }, | |
| "type":"graph", | |
| "xaxis":{ | |
| "buckets":null, | |
| "mode":"time", | |
| "name":null, | |
| "show":true, | |
| "values":[ | |
| ] | |
| }, | |
| "yaxes":[ | |
| { | |
| "format":"Bps", | |
| "label":"", | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":true | |
| }, | |
| { | |
| "format":"short", | |
| "label":null, | |
| "logBase":1, | |
| "max":null, | |
| "min":null, | |
| "show":false | |
| } | |
| ], | |
| "yaxis":{ | |
| "align":false, | |
| "alignLevel":null | |
| } | |
| } | |
| ], | |
| "schemaVersion":16, | |
| "style":"dark", | |
| "tags":[ | |
| "cost", | |
| "utilization", | |
| "metrics" | |
| ], | |
| "templating":{ | |
| "list":[ | |
| { | |
| "allValue":null, | |
| "current":{ | |
| "text":"ip-172-20-44-170.us-east-2.compute.internal", | |
| "value":"ip-172-20-44-170.us-east-2.compute.internal" | |
| }, | |
| "datasource":"Prometheus", | |
| "hide":0, | |
| "includeAll":false, | |
| "label":null, | |
| "multi":false, | |
| "name":"node", | |
| "options":[ | |
| ], | |
| "query":"query_result(kube_node_labels)", | |
| "refresh":1, | |
| "regex":"/node=\\\"(.*?)(\\\")/", | |
| "skipUrlSync":false, | |
| "sort":0, | |
| "tagValuesQuery":"", | |
| "tags":[ | |
| ], | |
| "tagsQuery":"", | |
| "type":"query", | |
| "useTags":false | |
| } | |
| ] | |
| }, | |
| "time":{ | |
| "from":"now-6h", | |
| "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":"Node utilization metrics", | |
| "uid":"NUQW37Lmk", | |
| "version":1 | |
| } | |
| --- | |
| # Source: cost-analyzer/templates/grafana-dashboard-pod-utilization-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: pod-utilization-dashboard | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| grafana_dashboard: "1" | |
| data: | |
| pod-utilization.json: |- | |
| { | |
| "annotations": { | |
| "list": [ | |
| { | |
| "builtIn": 1, | |
| "datasource": "-- Grafana --", | |
| "enable": true, | |
| "hide": true, | |
| "iconColor": "rgba(0, 211, 255, 1)", | |
| "name": "Annotations & Alerts", | |
| "type": "dashboard" | |
| } | |
| ] | |
| }, | |
| "description": "Visualize your kubernetes costs at the pod level.", | |
| "editable": true, | |
| "gnetId": 9063, | |
| "graphTooltip": 0, | |
| "id": 4, | |
| "iteration": 1560100821196, | |
| "links": [], | |
| "panels": [ | |
| { | |
| "columns": [ | |
| { | |
| "text": "Avg", | |
| "value": "avg" | |
| } | |
| ], | |
| "datasource": "Prometheus", | |
| "fontSize": "100%", | |
| "gridPos": { | |
| "h": 5, | |
| "w": 24, | |
| "x": 0, | |
| "y": 0 | |
| }, | |
| "hideTimeOverride": true, | |
| "id": 98, | |
| "links": [], | |
| "pageSize": 5, | |
| "repeatDirection": "v", | |
| "scroll": true, | |
| "showHeader": true, | |
| "sort": { | |
| "col": 6, | |
| "desc": true | |
| }, | |
| "styles": [ | |
| { | |
| "alias": "Container", | |
| "colorMode": null, | |
| "colors": [ | |
| "rgba(245, 54, 54, 0.9)", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#c15c17" | |
| ], | |
| "dateFormat": "YYYY-MM-DD HH:mm:ss", | |
| "decimals": 2, | |
| "link": false, | |
| "pattern": "container_name", | |
| "thresholds": [ | |
| "30", | |
| "80" | |
| ], | |
| "type": "string", | |
| "unit": "currencyUSD" | |
| }, | |
| { | |
| "alias": "Memory Allocation", | |
| "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, | |
| "pattern": "Value #B", | |
| "thresholds": [], | |
| "type": "number", | |
| "unit": "bytes" | |
| }, | |
| { | |
| "alias": "CPU Allocation", | |
| "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": "none" | |
| }, | |
| { | |
| "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": "Memory ($/hour)", | |
| "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": "Spot/PE RAM", | |
| "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": "currencyUSD" | |
| }, | |
| { | |
| "alias": "Total", | |
| "colorMode": null, | |
| "colors": [ | |
| "#bf1b00", | |
| "rgba(50, 172, 45, 0.97)", | |
| "#ef843c" | |
| ], | |
| "dateFormat": "YYYY-MM-DD HH:mm:ss", | |
| "decimals": 2, | |
| "mappingType": 1, | |
| "pattern": "Value #E", | |
| "thresholds": [ | |
| "" | |
| ], | |
| "type": "number", | |
| "unit": "currencyUSD" | |
| } | |
| ], | |
| "targets": [ | |
| { | |
| "expr": "sum(\n avg_over_time(container_memory_allocation_bytes{namespace=\"$namespace\", pod=\"$pod\", container!=\"POD\"}[$__range])\n) by (container,node)", | |
| "format": "table", | |
| "instant": true, | |
| "intervalFactor": 1, | |
| "refId": "B" | |
| }, | |
| { | |
| "expr": "sum(\n avg_over_time(container_cpu_allocation{namespace=\"$namespace\", pod=\"$pod\", container!=\"POD\"}[$__range])\n or up * 0 \n) by (container,node)", | |
| "format": "table", | |
| "hide": false, | |
| "instant": true, | |
| "interval": "", | |
| "intervalFactor": 1, | |
| "legendFormat": "", | |
| "refId": "A" | |
| } | |
| ], | |
| "timeFrom": "1M", | |
| "timeShift": null, | |
| "title": "Container cost & allocation analysis", | |
| "transform": "table", | |
| "transparent": false, | |
| "type": "table" | |
| }, | |
| { | |
| "aliasColors": {}, | |
| "bars": false, | |
| "dashLength": 10, | |
| "dashes": false, | |
| "datasource": "Prometheus", | |
| "decimals": 3, | |
| "description": "This graph attempts to show you CPU use of your application vs its requests", | |
| "editable": true, | |
| "error": false, | |
| "fill": 0, | |
| "grid": {}, | |
| "gridPos": { | |
| "h": 7, | |
| "w": 12, | |
| "x": 0, | |
| "y": 5 | |
| }, | |
| "height": "", | |
| "id": 94, | |
| "isNew": true, | |
| "legend": { | |
| "alignAsTable": false, | |
| "avg": false, | |
| "current": false, | |
| "hideEmpty": false, | |
| "hideZero": false, | |
| "max": false, | |
| "min": false, | |
| "rightSide": false, | |
| "show": true, | |
| "sideWidth": null, | |
| "sort": "current", | |
| "sortDesc": true, | |
| "total": false, | |
| "values": true | |
| }, | |
| "lines": true, | |
| "linewidth": 2, | |
| "links": [], | |
| "nullPointMode": "connected", | |
| "percentage": false, | |
| "pointradius": 5, | |
| "points": false, | |
| "renderer": "flot", | |
| "seriesOverrides": [], | |
| "spaceLength": 10, | |
| "stack": false, | |
| "steppedLine": true, | |
| "targets": [ | |
| { | |
| "expr": "avg (rate (container_cpu_usage_seconds_total{namespace=~\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\",container_name!=\"\"}[10m])) by (container_name)", | |
| "format": "time_series", | |
| "hide": false, | |
| "instant": false, | |
| "interval": "", | |
| "intervalFactor": 1, | |
| "legendFormat": "{{ container_name }} (usage)", | |
| "metric": "container_cpu", | |
| "refId": "A", | |
| "step": 10 | |
| }, | |
| { | |
| "expr": "avg(kube_pod_container_resource_requests_cpu_cores{namespace=~\"$namespace\", pod=\"$pod\", container!=\"POD\"}) by (container)", | |
| "format": "time_series", | |
| "instant": false, | |
| "intervalFactor": 1, | |
| "legendFormat": "{{ container}} (request)", | |
| "refId": "B" | |
| } | |
| ], | |
| "thresholds": [], | |
| "timeFrom": "", | |
| "timeShift": null, | |
| "title": "CPU Usage vs Requested", | |
| "tooltip": { | |
| "msResolution": true, | |
| "shared": true, | |
| "sort": 2, | |
| "value_type": "cumulative" | |
| }, | |
| "type": "graph", | |
| "xaxis": { | |
| "buckets": null, | |
| "mode": "time", | |
| "name": null, | |
| "show": true, | |
| "values": [] | |
| }, | |
| "yaxes": [ | |
| { | |
| "format": "none", | |
| "label": "", | |
| "logBase": 1, | |
| "max": null, | |
| "min": "0", | |
| "show": true | |
| }, | |
| { | |
| "format": "short", | |
| "label": null, | |
| "logBase": 1, | |
| "max": null, | |
| "min": null, | |
| "show": false | |
| } | |
| ], | |
| "yaxis": { | |
| "align": false, | |
| "alignLevel": null | |
| } | |
| }, | |
| { | |
| "aliasColors": {}, | |
| "bars": false, | |
| "dashLength": 10, | |
| "dashes": false, | |
| "datasource": "Prometheus", | |
| "decimals": 3, | |
| "description": "This graph attempts to show you RAM use of your application vs its requests", | |
| "editable": true, | |
| "error": false, | |
| "fill": 0, | |
| "grid": {}, | |
| "gridPos": { | |
| "h": 7, | |
| "w": 12, | |
| "x": 12, | |
| "y": 5 | |
| }, | |
| "height": "", | |
| "id": 96, | |
| "isNew": true, | |
| "legend": { | |
| "alignAsTable": false, | |
| "avg": false, | |
| "current": false, | |
| "hideEmpty": false, | |
| "hideZero": false, | |
| "max": false, | |
| "min": false, | |
| "rightSide": false, | |
| "show": true, | |
| "sideWidth": null, | |
| "sort": "current", | |
| "sortDesc": true, | |
| "total": false, | |
| "values": true | |
| }, | |
| "lines": true, | |
| "linewidth": 2, | |
| "links": [], | |
| "nullPointMode": "connected", | |
| "percentage": false, | |
| "pointradius": 5, | |
| "points": false, | |
| "renderer": "flot", | |
| "seriesOverrides": [], | |
| "spaceLength": 10, | |
| "stack": false, | |
| "steppedLine": true, | |
| "targets": [ | |
| { | |
| "expr": "avg (avg_over_time (container_memory_working_set_bytes{namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\",container_name!=\"\"}[1m])) by (container_name)", | |
| "format": "time_series", | |
| "hide": false, | |
| "instant": false, | |
| "interval": "", | |
| "intervalFactor": 1, | |
| "legendFormat": "{{ container_name }} (usage)", | |
| "metric": "container_cpu", | |
| "refId": "A", | |
| "step": 10 | |
| }, | |
| { | |
| "expr": "avg(kube_pod_container_resource_requests_memory_bytes{namespace=~\"$namespace\", pod=\"$pod\", container!=\"POD\"}) by (container)", | |
| "format": "time_series", | |
| "hide": false, | |
| "instant": false, | |
| "intervalFactor": 1, | |
| "legendFormat": "{{ container }} (requested)", | |
| "refId": "B" | |
| } | |
| ], | |
| "thresholds": [], | |
| "timeFrom": "", | |
| "timeShift": null, | |
| "title": "RAM Usage vs Requested", | |
| "tooltip": { | |
| "msResolution": true, | |
| "shared": true, | |
| "sort": 2, | |
| "value_type": "cumulative" | |
| }, | |
| "type": "graph", | |
| "xaxis": { | |
| "buckets": null, | |
| "mode": "time", | |
| "name": null, | |
| "show": true, | |
| "values": [] | |
| }, | |
| "yaxes": [ | |
| { | |
| "format": "bytes", | |
| "label": "", | |
| "logBase": 1, | |
| "max": null, | |
| "min": "0", | |
| "show": true | |
| }, | |
| { | |
| "format": "short", | |
| "label": null, | |
| "logBase": 1, | |
| "max": null, | |
| "min": null, | |
| "show": false | |
| } | |
| ], | |
| "yaxis": { | |
| "align": false, | |
| "alignLevel": null | |
| } | |
| }, | |
| { | |
| "aliasColors": {}, | |
| "bars": false, | |
| "dashLength": 10, | |
| "dashes": false, | |
| "datasource": "Prometheus", | |
| "decimals": 2, | |
| "description": "Traffic in and out of this pod, as a sum of its containers", | |
| "editable": true, | |
| "error": false, | |
| "fill": 1, | |
| "grid": {}, | |
| "gridPos": { | |
| "h": 7, | |
| "w": 12, | |
| "x": 0, | |
| "y": 12 | |
| }, | |
| "height": "", | |
| "id": 95, | |
| "isNew": true, | |
| "legend": { | |
| "alignAsTable": false, | |
| "avg": true, | |
| "current": true, | |
| "hideEmpty": false, | |
| "hideZero": false, | |
| "max": false, | |
| "min": false, | |
| "rightSide": false, | |
| "show": true, | |
| "sideWidth": null, | |
| "sort": "current", | |
| "sortDesc": true, | |
| "total": false, | |
| "values": true | |
| }, | |
| "lines": true, | |
| "linewidth": 2, | |
| "links": [], | |
| "nullPointMode": "connected", | |
| "percentage": false, | |
| "pointradius": 5, | |
| "points": false, | |
| "renderer": "flot", | |
| "seriesOverrides": [], | |
| "spaceLength": 10, | |
| "stack": false, | |
| "steppedLine": false, | |
| "targets": [ | |
| { | |
| "expr": "avg (rate (container_network_receive_bytes_total{namespace=\"$namespace\",pod_name=\"$pod\"}[10m])) by (pod_name)", | |
| "format": "time_series", | |
| "hide": false, | |
| "instant": false, | |
| "interval": "", | |
| "intervalFactor": 1, | |
| "legendFormat": "<- in", | |
| "metric": "container_cpu", | |
| "refId": "A", | |
| "step": 10 | |
| }, | |
| { | |
| "expr": "- avg (rate (container_network_transmit_bytes_total{namespace=\"$namespace\",pod_name=\"$pod\"}[10m])) by (pod_name)", | |
| "format": "time_series", | |
| "hide": false, | |
| "instant": false, | |
| "interval": "", | |
| "intervalFactor": 1, | |
| "legendFormat": "-> out", | |
| "refId": "B" | |
| } | |
| ], | |
| "thresholds": [], | |
| "timeFrom": "", | |
| "timeShift": null, | |
| "title": "Network IO", | |
| "tooltip": { | |
| "msResolution": true, | |
| "shared": true, | |
| "sort": 2, | |
| "value_type": "cumulative" | |
| }, | |
| "type": "graph", | |
| "xaxis": { | |
| "buckets": null, | |
| "mode": "time", | |
| "name": null, | |
| "show": true, | |
| "values": [] | |
| }, | |
| "yaxes": [ | |
| { | |
| "format": "Bps", | |
| "label": "", | |
| "logBase": 1, | |
| "max": null, | |
| "min": null, | |
| "show": true | |
| }, | |
| { | |
| "format": "short", | |
| "label": null, | |
| "logBase": 1, | |
| "max": null, | |
| "min": null, | |
| "show": false | |
| } | |
| ], | |
| "yaxis": { | |
| "align": false, | |
| "alignLevel": null | |
| } | |
| }, | |
| { | |
| "aliasColors": {}, | |
| "bars": false, | |
| "dashLength": 10, | |
| "dashes": false, | |
| "datasource": "Prometheus", | |
| "decimals": 2, | |
| "description": "Disk read writes", | |
| "editable": true, | |
| "error": false, | |
| "fill": 1, | |
| "grid": {}, | |
| "gridPos": { | |
| "h": 7, | |
| "w": 12, | |
| "x": 12, | |
| "y": 12 | |
| }, | |
| "height": "", | |
| "id": 97, | |
| "isNew": true, | |
| "legend": { | |
| "alignAsTable": false, | |
| "avg": true, | |
| "current": true, | |
| "hideEmpty": false, | |
| "hideZero": false, | |
| "max": false, | |
| "min": false, | |
| "rightSide": false, | |
| "show": true, | |
| "sideWidth": null, | |
| "sort": "current", | |
| "sortDesc": true, | |
| "total": false, | |
| "values": true | |
| }, | |
| "lines": true, | |
| "linewidth": 2, | |
| "links": [], | |
| "nullPointMode": "connected", | |
| "percentage": false, | |
| "pointradius": 5, | |
| "points": false, | |
| "renderer": "flot", | |
| "seriesOverrides": [], | |
| "spaceLength": 10, | |
| "stack": false, | |
| "steppedLine": false, | |
| "targets": [ | |
| { | |
| "expr": "avg (rate (container_fs_writes_bytes_total{namespace=\"$namespace\",pod_name=\"$pod\"}[10m])) by (pod_name)", | |
| "format": "time_series", | |
| "hide": false, | |
| "instant": false, | |
| "interval": "", | |
| "intervalFactor": 1, | |
| "legendFormat": "<- write", | |
| "metric": "container_cpu", | |
| "refId": "A", | |
| "step": 10 | |
| }, | |
| { | |
| "expr": "- avg (rate (container_fs_reads_bytes_total{namespace=\"$namespace\",pod_name=\"$pod\"}[10m])) by (pod_name)", | |
| "format": "time_series", | |
| "hide": false, | |
| "instant": false, | |
| "interval": "", | |
| "intervalFactor": 1, | |
| "legendFormat": "-> read", | |
| "refId": "B" | |
| } | |
| ], | |
| "thresholds": [], | |
| "timeFrom": "", | |
| "timeShift": null, | |
| "title": "Disk IO", | |
| "tooltip": { | |
| "msResolution": true, | |
| "shared": true, | |
| "sort": 2, | |
| "value_type": "cumulative" | |
| }, | |
| "type": "graph", | |
| "xaxis": { | |
| "buckets": null, | |
| "mode": "time", | |
| "name": null, | |
| "show": true, | |
| "values": [] | |
| }, | |
| "yaxes": [ | |
| { | |
| "format": "Bps", | |
| "label": "", | |
| "logBase": 1, | |
| "max": null, | |
| "min": null, | |
| "show": true | |
| }, | |
| { | |
| "format": "short", | |
| "label": null, | |
| "logBase": 1, | |
| "max": null, | |
| "min": null, | |
| "show": false | |
| } | |
| ], | |
| "yaxis": { | |
| "align": false, | |
| "alignLevel": null | |
| } | |
| } | |
| ], | |
| "refresh": false, | |
| "schemaVersion": 16, | |
| "style": "dark", | |
| "tags": [ | |
| "cost", | |
| "utilization", | |
| "metrics" | |
| ], | |
| "templating": { | |
| "list": [ | |
| { | |
| "current": { | |
| "text": "0.044", | |
| "value": "0.044" | |
| }, | |
| "hide": 0, | |
| "label": "Storage", | |
| "name": "costStorageStandard", | |
| "options": [ | |
| { | |
| "text": "0.044", | |
| "value": "0.044" | |
| } | |
| ], | |
| "query": "0.044", | |
| "skipUrlSync": false, | |
| "type": "constant" | |
| }, | |
| { | |
| "current": { | |
| "text": "0.187", | |
| "value": "0.187" | |
| }, | |
| "hide": 0, | |
| "label": "SSD", | |
| "name": "costStorageSSD", | |
| "options": [ | |
| { | |
| "text": "0.187", | |
| "value": "0.187" | |
| } | |
| ], | |
| "query": "0.187", | |
| "skipUrlSync": false, | |
| "type": "constant" | |
| }, | |
| { | |
| "current": { | |
| "text": "30", | |
| "value": "30" | |
| }, | |
| "hide": 0, | |
| "label": "Disc.", | |
| "name": "costDiscount", | |
| "options": [ | |
| { | |
| "text": "30", | |
| "value": "30" | |
| } | |
| ], | |
| "query": "30", | |
| "skipUrlSync": false, | |
| "type": "constant" | |
| }, | |
| { | |
| "allValue": null, | |
| "current": { | |
| "selected": false, | |
| "text": "kubecost", | |
| "value": "kubecost" | |
| }, | |
| "datasource": "Prometheus", | |
| "hide": 0, | |
| "includeAll": false, | |
| "label": "NS", | |
| "multi": false, | |
| "name": "namespace", | |
| "options": [], | |
| "query": "query_result(sum(container_memory_working_set_bytes{namespace!=\"\"}) by (namespace))", | |
| "refresh": 1, | |
| "regex": "/namespace=\\\"(.*?)(\\\")/", | |
| "skipUrlSync": false, | |
| "sort": 0, | |
| "tagValuesQuery": "", | |
| "tags": [], | |
| "tagsQuery": "", | |
| "type": "query", | |
| "useTags": false | |
| }, | |
| { | |
| "allValue": null, | |
| "current": { | |
| "selected": false, | |
| "tags": [], | |
| "text": "kubecost-grafana-5cc9f5bf6-7kmgl", | |
| "value": "kubecost-grafana-5cc9f5bf6-7kmgl" | |
| }, | |
| "datasource": "Prometheus", | |
| "hide": 0, | |
| "includeAll": false, | |
| "label": "Pod", | |
| "multi": false, | |
| "name": "pod", | |
| "options": [], | |
| "query": "query_result(sum(container_memory_working_set_bytes{namespace=\"$namespace\"}) by (pod_name))", | |
| "refresh": 1, | |
| "regex": "/pod_name=\\\"(.*?)(\\\")/", | |
| "skipUrlSync": false, | |
| "sort": 0, | |
| "tagValuesQuery": "", | |
| "tags": [], | |
| "tagsQuery": "", | |
| "type": "query", | |
| "useTags": false | |
| } | |
| ] | |
| }, | |
| "time": { | |
| "from": "now-24h", | |
| "to": "now" | |
| }, | |
| "timepicker": { | |
| "hidden": false, | |
| "refresh_intervals": [ | |
| "5s", | |
| "10s", | |
| "30s", | |
| "1m", | |
| "5m", | |
| "15m", | |
| "30m", | |
| "1h", | |
| "2h", | |
| "1d" | |
| ], | |
| "time_options": [ | |
| "5m", | |
| "15m", | |
| "1h", | |
| "6h", | |
| "12h", | |
| "24h", | |
| "2d", | |
| "7d", | |
| "30d" | |
| ] | |
| }, | |
| "timezone": "browser", | |
| "title": "Pod cost & utilization metrics", | |
| "uid": "at-cost-analysis-pod", | |
| "version": 1 | |
| } | |
| --- | |
| # Source: cost-analyzer/templates/grafana-datasource-template.yaml | |
| apiVersion: v1 | |
| kind: ConfigMap | |
| metadata: | |
| name: grafana-datasource | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| grafana_datasource: "1" | |
| data: | |
| datasource.yaml: |- | |
| # config file version | |
| apiVersion: 1 | |
| datasources: | |
| - access: proxy | |
| isDefault: true | |
| name: Prometheus | |
| type: prometheus | |
| url: http://kubecost-prometheus-server.kubecost.svc.cluster.local | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/alertmanager-pvc.yaml | |
| apiVersion: v1 | |
| kind: PersistentVolumeClaim | |
| metadata: | |
| labels: | |
| component: "alertmanager" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-alertmanager | |
| spec: | |
| accessModes: | |
| - ReadWriteOnce | |
| resources: | |
| requests: | |
| storage: "2Gi" | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/pushgateway-pvc.yaml | |
| apiVersion: v1 | |
| kind: PersistentVolumeClaim | |
| metadata: | |
| labels: | |
| component: "pushgateway" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-pushgateway | |
| spec: | |
| accessModes: | |
| - ReadWriteOnce | |
| resources: | |
| requests: | |
| storage: "2Gi" | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-pvc.yaml | |
| apiVersion: v1 | |
| kind: PersistentVolumeClaim | |
| metadata: | |
| labels: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-server | |
| spec: | |
| accessModes: | |
| - ReadWriteOnce | |
| resources: | |
| requests: | |
| storage: "32Gi" | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-pvc-template.yaml | |
| kind: PersistentVolumeClaim | |
| apiVersion: v1 | |
| metadata: | |
| name: kubecost-cost-analyzer | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| spec: | |
| accessModes: | |
| - ReadWriteOnce | |
| resources: | |
| requests: | |
| storage: 0.2Gi | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/serviceaccount.yaml | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| heritage: Tiller | |
| release: kubecost | |
| name: kubecost-grafana | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/alertmanager-serviceaccount.yaml | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| labels: | |
| component: "alertmanager" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-alertmanager | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/kube-state-metrics-serviceaccount.yaml | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| labels: | |
| component: "kube-state-metrics" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-kube-state-metrics | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/node-exporter-serviceaccount.yaml | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| labels: | |
| component: "node-exporter" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-node-exporter | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/pushgateway-serviceaccount.yaml | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| labels: | |
| component: "pushgateway" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-pushgateway | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-serviceaccount.yaml | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| labels: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-server | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-service-account-template.yaml | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| name: kubecost-cost-analyzer | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/clusterrole.yaml | |
| kind: ClusterRole | |
| apiVersion: rbac.authorization.k8s.io/v1 | |
| metadata: | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| release: kubecost | |
| heritage: Tiller | |
| name: kubecost-grafana-clusterrole | |
| rules: | |
| - apiGroups: [""] # "" indicates the core API group | |
| resources: ["configmaps"] | |
| verbs: ["get", "watch", "list"] | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/kube-state-metrics-clusterrole.yaml | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRole | |
| metadata: | |
| labels: | |
| component: "kube-state-metrics" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-kube-state-metrics | |
| rules: | |
| - apiGroups: | |
| - "" | |
| resources: | |
| - namespaces | |
| - nodes | |
| - persistentvolumeclaims | |
| - pods | |
| - services | |
| - resourcequotas | |
| - replicationcontrollers | |
| - limitranges | |
| - persistentvolumeclaims | |
| - persistentvolumes | |
| - endpoints | |
| - secrets | |
| - configmaps | |
| verbs: | |
| - list | |
| - watch | |
| - apiGroups: | |
| - extensions | |
| resources: | |
| - daemonsets | |
| - deployments | |
| - ingresses | |
| - replicasets | |
| verbs: | |
| - list | |
| - watch | |
| - apiGroups: | |
| - apps | |
| resources: | |
| - daemonsets | |
| - deployments | |
| - statefulsets | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - apiGroups: | |
| - batch | |
| resources: | |
| - cronjobs | |
| - jobs | |
| verbs: | |
| - list | |
| - watch | |
| - apiGroups: | |
| - autoscaling | |
| resources: | |
| - horizontalpodautoscalers | |
| verbs: | |
| - list | |
| - watch | |
| - apiGroups: | |
| - policy | |
| resources: | |
| - poddisruptionbudgets | |
| verbs: | |
| - list | |
| - watch | |
| - apiGroups: | |
| - certificates.k8s.io | |
| resources: | |
| - certificatesigningrequests | |
| verbs: | |
| - list | |
| - watch | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-clusterrole.yaml | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRole | |
| metadata: | |
| labels: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-server | |
| rules: | |
| - apiGroups: | |
| - "" | |
| resources: | |
| - nodes | |
| - nodes/proxy | |
| - services | |
| - endpoints | |
| - pods | |
| - ingresses | |
| - configmaps | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - apiGroups: | |
| - "extensions" | |
| resources: | |
| - ingresses/status | |
| - ingresses | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - nonResourceURLs: | |
| - "/metrics" | |
| verbs: | |
| - get | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-cluser-role-template.yaml | |
| apiVersion: rbac.authorization.k8s.io/v1 | |
| kind: ClusterRole | |
| metadata: | |
| name: kubecost-cost-analyzer | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| rules: | |
| - apiGroups: | |
| - '' | |
| resources: | |
| - configmaps | |
| - deployments | |
| - nodes | |
| - pods | |
| - events | |
| - services | |
| - resourcequotas | |
| - replicationcontrollers | |
| - limitranges | |
| - persistentvolumeclaims | |
| - persistentvolumes | |
| - namespaces | |
| - endpoints | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - apiGroups: | |
| - extensions | |
| resources: | |
| - daemonsets | |
| - deployments | |
| - replicasets | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - apiGroups: | |
| - apps | |
| resources: | |
| - statefulsets | |
| - deployments | |
| - daemonsets | |
| - replicasets | |
| verbs: | |
| - list | |
| - watch | |
| - apiGroups: | |
| - batch | |
| resources: | |
| - cronjobs | |
| - jobs | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - apiGroups: | |
| - autoscaling | |
| resources: | |
| - horizontalpodautoscalers | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - apiGroups: | |
| - policy | |
| resources: | |
| - poddisruptionbudgets | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - apiGroups: | |
| - storage.k8s.io | |
| resources: | |
| - storageclasses | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - apiGroups: | |
| - events.k8s.io | |
| resources: | |
| - events | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/clusterrolebinding.yaml | |
| kind: ClusterRoleBinding | |
| apiVersion: rbac.authorization.k8s.io/v1 | |
| metadata: | |
| name: kubecost-grafana-clusterrolebinding | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| release: kubecost | |
| heritage: Tiller | |
| subjects: | |
| - kind: ServiceAccount | |
| name: kubecost-grafana | |
| namespace: kubecost | |
| roleRef: | |
| kind: ClusterRole | |
| name: kubecost-grafana-clusterrole | |
| apiGroup: rbac.authorization.k8s.io | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/kube-state-metrics-clusterrolebinding.yaml | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRoleBinding | |
| metadata: | |
| labels: | |
| component: "kube-state-metrics" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-kube-state-metrics | |
| subjects: | |
| - kind: ServiceAccount | |
| name: kubecost-prometheus-kube-state-metrics | |
| namespace: kubecost | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: ClusterRole | |
| name: kubecost-prometheus-kube-state-metrics | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-clusterrolebinding.yaml | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRoleBinding | |
| metadata: | |
| labels: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-server | |
| subjects: | |
| - kind: ServiceAccount | |
| name: kubecost-prometheus-server | |
| namespace: kubecost | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: ClusterRole | |
| name: kubecost-prometheus-server | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-cluster-role-binding-template.yaml | |
| apiVersion: rbac.authorization.k8s.io/v1 | |
| kind: ClusterRoleBinding | |
| metadata: | |
| name: kubecost-cost-analyzer | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: ClusterRole | |
| name: kubecost-cost-analyzer | |
| subjects: | |
| - kind: ServiceAccount | |
| name: kubecost-cost-analyzer | |
| namespace: kubecost | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/role.yaml | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: Role | |
| metadata: | |
| name: kubecost-grafana | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| heritage: Tiller | |
| release: kubecost | |
| rules: | |
| - apiGroups: ['extensions'] | |
| resources: ['podsecuritypolicies'] | |
| verbs: ['use'] | |
| resourceNames: [kubecost-grafana] | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/rolebinding.yaml | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: RoleBinding | |
| metadata: | |
| name: kubecost-grafana | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| heritage: Tiller | |
| release: kubecost | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: Role | |
| name: kubecost-grafana | |
| subjects: | |
| - kind: ServiceAccount | |
| name: kubecost-grafana | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/service.yaml | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| name: kubecost-grafana | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| release: kubecost | |
| heritage: Tiller | |
| spec: | |
| type: ClusterIP | |
| ports: | |
| - name: service | |
| port: 80 | |
| protocol: TCP | |
| targetPort: 3000 | |
| selector: | |
| app: grafana | |
| release: kubecost | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/alertmanager-service.yaml | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| labels: | |
| component: "alertmanager" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-alertmanager | |
| spec: | |
| ports: | |
| - name: http | |
| port: 80 | |
| protocol: TCP | |
| targetPort: 9093 | |
| selector: | |
| component: "alertmanager" | |
| app: prometheus | |
| release: kubecost | |
| type: "ClusterIP" | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/kube-state-metrics-svc.yaml | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| annotations: | |
| prometheus.io/scrape: "true" | |
| labels: | |
| component: "kube-state-metrics" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-kube-state-metrics | |
| spec: | |
| clusterIP: None | |
| ports: | |
| - name: http | |
| port: 80 | |
| protocol: TCP | |
| targetPort: 8080 | |
| selector: | |
| component: "kube-state-metrics" | |
| app: prometheus | |
| release: kubecost | |
| type: "ClusterIP" | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/node-exporter-service.yaml | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| annotations: | |
| prometheus.io/scrape: "true" | |
| labels: | |
| component: "node-exporter" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-node-exporter | |
| spec: | |
| clusterIP: None | |
| ports: | |
| - name: metrics | |
| port: 9100 | |
| protocol: TCP | |
| targetPort: 9100 | |
| selector: | |
| component: "node-exporter" | |
| app: prometheus | |
| release: kubecost | |
| type: "ClusterIP" | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/pushgateway-service.yaml | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| annotations: | |
| prometheus.io/probe: pushgateway | |
| labels: | |
| component: "pushgateway" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-pushgateway | |
| spec: | |
| ports: | |
| - name: http | |
| port: 9091 | |
| protocol: TCP | |
| targetPort: 9091 | |
| selector: | |
| component: "pushgateway" | |
| app: prometheus | |
| release: kubecost | |
| type: "ClusterIP" | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-service.yaml | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| labels: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-server | |
| spec: | |
| ports: | |
| - name: http | |
| port: 80 | |
| protocol: TCP | |
| targetPort: 9090 | |
| selector: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| type: "ClusterIP" | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-service-template.yaml | |
| kind: Service | |
| apiVersion: v1 | |
| metadata: | |
| name: kubecost-cost-analyzer | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| spec: | |
| selector: | |
| app.kubernetes.io/name: cost-analyzer | |
| app.kubernetes.io/instance: kubecost | |
| app: cost-analyzer | |
| type: "ClusterIP" | |
| ports: | |
| - name: server | |
| port: 9001 | |
| targetPort: 9001 | |
| - name: model | |
| port: 9003 | |
| targetPort: 9003 | |
| - name: frontend | |
| port: 9090 | |
| targetPort: 9090 | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/node-exporter-daemonset.yaml | |
| apiVersion: extensions/v1beta1 | |
| kind: DaemonSet | |
| metadata: | |
| labels: | |
| component: "node-exporter" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-node-exporter | |
| spec: | |
| selector: | |
| matchLabels: | |
| component: "node-exporter" | |
| app: prometheus | |
| release: kubecost | |
| updateStrategy: | |
| type: RollingUpdate | |
| template: | |
| metadata: | |
| labels: | |
| component: "node-exporter" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| spec: | |
| serviceAccountName: kubecost-prometheus-node-exporter | |
| containers: | |
| - name: prometheus-node-exporter | |
| image: "prom/node-exporter:v0.18.0" | |
| imagePullPolicy: "IfNotPresent" | |
| args: | |
| - --path.procfs=/host/proc | |
| - --path.sysfs=/host/sys | |
| ports: | |
| - name: metrics | |
| containerPort: 9100 | |
| hostPort: 9100 | |
| resources: | |
| {} | |
| volumeMounts: | |
| - name: proc | |
| mountPath: /host/proc | |
| readOnly: true | |
| - name: sys | |
| mountPath: /host/sys | |
| readOnly: true | |
| hostNetwork: true | |
| hostPID: true | |
| volumes: | |
| - name: proc | |
| hostPath: | |
| path: /proc | |
| - name: sys | |
| hostPath: | |
| path: /sys | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/deployment.yaml | |
| apiVersion: apps/v1beta2 | |
| kind: Deployment | |
| metadata: | |
| name: kubecost-grafana | |
| labels: | |
| app: grafana | |
| chart: grafana-1.17.2 | |
| release: kubecost | |
| heritage: Tiller | |
| spec: | |
| replicas: 1 | |
| selector: | |
| matchLabels: | |
| app: grafana | |
| release: kubecost | |
| strategy: | |
| type: RollingUpdate | |
| template: | |
| metadata: | |
| labels: | |
| app: grafana | |
| release: kubecost | |
| spec: | |
| serviceAccountName: kubecost-grafana | |
| securityContext: | |
| fsGroup: 472 | |
| runAsUser: 472 | |
| containers: | |
| - name: grafana-sc-dashboard | |
| image: "kiwigrid/k8s-sidecar:0.0.3" | |
| imagePullPolicy: IfNotPresent | |
| env: | |
| - name: LABEL | |
| value: "grafana_dashboard" | |
| - name: FOLDER | |
| value: "/tmp/dashboards" | |
| resources: | |
| null | |
| volumeMounts: | |
| - name: sc-dashboard-volume | |
| mountPath: "/tmp/dashboards" | |
| - name: grafana-sc-datasources | |
| image: "kiwigrid/k8s-sidecar:0.0.3" | |
| imagePullPolicy: IfNotPresent | |
| env: | |
| - name: LABEL | |
| value: "grafana_datasource" | |
| - name: FOLDER | |
| value: "/etc/grafana/provisioning/datasources" | |
| resources: | |
| null | |
| volumeMounts: | |
| - name: sc-datasources-volume | |
| mountPath: "/etc/grafana/provisioning/datasources" | |
| - name: grafana | |
| image: "grafana/grafana:5.3.1" | |
| imagePullPolicy: IfNotPresent | |
| volumeMounts: | |
| - name: config | |
| mountPath: "/etc/grafana/grafana.ini" | |
| subPath: grafana.ini | |
| - name: ldap | |
| mountPath: "/etc/grafana/ldap.toml" | |
| subPath: ldap.toml | |
| - name: sc-dashboard-volume | |
| mountPath: "/tmp/dashboards" | |
| - name: sc-dashboard-provider | |
| mountPath: "/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml" | |
| subPath: provider.yaml | |
| - name: sc-datasources-volume | |
| mountPath: "/etc/grafana/provisioning/datasources" | |
| - name: storage | |
| mountPath: "/var/lib/grafana" | |
| subPath: | |
| ports: | |
| - name: service | |
| containerPort: 80 | |
| protocol: TCP | |
| - name: grafana | |
| containerPort: 3000 | |
| protocol: TCP | |
| env: | |
| - name: GF_SECURITY_ADMIN_USER | |
| valueFrom: | |
| secretKeyRef: | |
| name: kubecost-grafana | |
| key: admin-user | |
| - name: GF_SECURITY_ADMIN_PASSWORD | |
| valueFrom: | |
| secretKeyRef: | |
| name: kubecost-grafana | |
| key: admin-password | |
| livenessProbe: | |
| failureThreshold: 10 | |
| httpGet: | |
| path: /api/health | |
| port: 3000 | |
| initialDelaySeconds: 60 | |
| timeoutSeconds: 30 | |
| readinessProbe: | |
| httpGet: | |
| path: /api/health | |
| port: 3000 | |
| resources: | |
| {} | |
| volumes: | |
| - name: config | |
| configMap: | |
| name: kubecost-grafana | |
| - name: ldap | |
| secret: | |
| secretName: kubecost-grafana | |
| items: | |
| - key: ldap-toml | |
| path: ldap.toml | |
| - name: storage | |
| emptyDir: {} | |
| - name: sc-dashboard-volume | |
| emptyDir: {} | |
| - name: sc-dashboard-provider | |
| configMap: | |
| name: kubecost-grafana-config-dashboards | |
| - name: sc-datasources-volume | |
| emptyDir: {} | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/alertmanager-deployment.yaml | |
| apiVersion: extensions/v1beta1 | |
| kind: Deployment | |
| metadata: | |
| labels: | |
| component: "alertmanager" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-alertmanager | |
| spec: | |
| selector: | |
| matchLabels: | |
| component: "alertmanager" | |
| app: prometheus | |
| release: kubecost | |
| replicas: 1 | |
| template: | |
| metadata: | |
| labels: | |
| component: "alertmanager" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| spec: | |
| serviceAccountName: kubecost-prometheus-alertmanager | |
| containers: | |
| - name: prometheus-alertmanager | |
| image: "prom/alertmanager:v0.18.0" | |
| imagePullPolicy: "IfNotPresent" | |
| env: | |
| - name: POD_IP | |
| valueFrom: | |
| fieldRef: | |
| apiVersion: v1 | |
| fieldPath: status.podIP | |
| args: | |
| - --config.file=/etc/config/alertmanager.yml | |
| - --storage.path=/data | |
| - --cluster.advertise-address=$(POD_IP):6783 | |
| - --web.external-url=/ | |
| ports: | |
| - containerPort: 9093 | |
| readinessProbe: | |
| httpGet: | |
| path: /#/status | |
| port: 9093 | |
| initialDelaySeconds: 30 | |
| timeoutSeconds: 30 | |
| resources: | |
| {} | |
| volumeMounts: | |
| - name: config-volume | |
| mountPath: /etc/config | |
| - name: storage-volume | |
| mountPath: "/data" | |
| subPath: "" | |
| - name: prometheus-alertmanager-configmap-reload | |
| image: "jimmidyson/configmap-reload:v0.2.2" | |
| imagePullPolicy: "IfNotPresent" | |
| args: | |
| - --volume-dir=/etc/config | |
| - --webhook-url=http://127.0.0.1:9093/-/reload | |
| resources: | |
| {} | |
| volumeMounts: | |
| - name: config-volume | |
| mountPath: /etc/config | |
| readOnly: true | |
| securityContext: | |
| fsGroup: 65534 | |
| runAsGroup: 65534 | |
| runAsNonRoot: true | |
| runAsUser: 65534 | |
| volumes: | |
| - name: config-volume | |
| configMap: | |
| name: kubecost-prometheus-alertmanager | |
| - name: storage-volume | |
| persistentVolumeClaim: | |
| claimName: kubecost-prometheus-alertmanager | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/kube-state-metrics-deployment.yaml | |
| apiVersion: extensions/v1beta1 | |
| kind: Deployment | |
| metadata: | |
| labels: | |
| component: "kube-state-metrics" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-kube-state-metrics | |
| spec: | |
| selector: | |
| matchLabels: | |
| component: "kube-state-metrics" | |
| app: prometheus | |
| release: kubecost | |
| replicas: 1 | |
| template: | |
| metadata: | |
| labels: | |
| component: "kube-state-metrics" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| spec: | |
| serviceAccountName: kubecost-prometheus-kube-state-metrics | |
| containers: | |
| - name: prometheus-kube-state-metrics | |
| image: "quay.io/coreos/kube-state-metrics:v1.6.0" | |
| imagePullPolicy: "IfNotPresent" | |
| ports: | |
| - name: metrics | |
| containerPort: 8080 | |
| resources: | |
| {} | |
| securityContext: | |
| runAsNonRoot: true | |
| runAsUser: 65534 | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/pushgateway-deployment.yaml | |
| apiVersion: extensions/v1beta1 | |
| kind: Deployment | |
| metadata: | |
| labels: | |
| component: "pushgateway" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-pushgateway | |
| spec: | |
| selector: | |
| matchLabels: | |
| component: "pushgateway" | |
| app: prometheus | |
| release: kubecost | |
| replicas: 1 | |
| template: | |
| metadata: | |
| labels: | |
| component: "pushgateway" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| spec: | |
| serviceAccountName: kubecost-prometheus-pushgateway | |
| containers: | |
| - name: prometheus-pushgateway | |
| image: "prom/pushgateway:v0.8.0" | |
| imagePullPolicy: "IfNotPresent" | |
| args: | |
| ports: | |
| - containerPort: 9091 | |
| readinessProbe: | |
| httpGet: | |
| path: /#/status | |
| port: 9091 | |
| initialDelaySeconds: 10 | |
| timeoutSeconds: 10 | |
| resources: | |
| {} | |
| volumeMounts: | |
| - name: storage-volume | |
| mountPath: "/data" | |
| subPath: "" | |
| securityContext: | |
| runAsNonRoot: true | |
| runAsUser: 65534 | |
| volumes: | |
| - name: storage-volume | |
| persistentVolumeClaim: | |
| claimName: kubecost-prometheus-pushgateway | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-deployment.yaml | |
| apiVersion: extensions/v1beta1 | |
| kind: Deployment | |
| metadata: | |
| labels: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| name: kubecost-prometheus-server | |
| spec: | |
| selector: | |
| matchLabels: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| replicas: 1 | |
| template: | |
| metadata: | |
| labels: | |
| component: "server" | |
| app: prometheus | |
| release: kubecost | |
| chart: prometheus-8.15.0 | |
| heritage: Tiller | |
| spec: | |
| serviceAccountName: kubecost-prometheus-server | |
| containers: | |
| - name: prometheus-server-configmap-reload | |
| image: "jimmidyson/configmap-reload:v0.2.2" | |
| imagePullPolicy: "IfNotPresent" | |
| args: | |
| - --volume-dir=/etc/config | |
| - --webhook-url=http://127.0.0.1:9090/-/reload | |
| resources: | |
| {} | |
| volumeMounts: | |
| - name: config-volume | |
| mountPath: /etc/config | |
| readOnly: true | |
| - name: prometheus-server | |
| image: "prom/prometheus:v2.11.1" | |
| imagePullPolicy: "IfNotPresent" | |
| args: | |
| - --storage.tsdb.retention.time=15d | |
| - --config.file=/etc/config/prometheus.yml | |
| - --storage.tsdb.path=/data | |
| - --web.console.libraries=/etc/prometheus/console_libraries | |
| - --web.console.templates=/etc/prometheus/consoles | |
| - --web.enable-lifecycle | |
| ports: | |
| - containerPort: 9090 | |
| readinessProbe: | |
| httpGet: | |
| path: /-/ready | |
| port: 9090 | |
| initialDelaySeconds: 30 | |
| timeoutSeconds: 30 | |
| livenessProbe: | |
| httpGet: | |
| path: /-/healthy | |
| port: 9090 | |
| initialDelaySeconds: 30 | |
| timeoutSeconds: 30 | |
| resources: | |
| {} | |
| volumeMounts: | |
| - name: config-volume | |
| mountPath: /etc/config | |
| - name: storage-volume | |
| mountPath: /data | |
| subPath: "" | |
| securityContext: | |
| fsGroup: 65534 | |
| runAsGroup: 65534 | |
| runAsNonRoot: true | |
| runAsUser: 65534 | |
| terminationGracePeriodSeconds: 300 | |
| volumes: | |
| - name: config-volume | |
| configMap: | |
| name: kubecost-prometheus-server | |
| - name: storage-volume | |
| persistentVolumeClaim: | |
| claimName: kubecost-prometheus-server | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-deployment-template.yaml | |
| apiVersion: extensions/v1beta1 | |
| kind: Deployment | |
| metadata: | |
| name: kubecost-cost-analyzer | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| spec: | |
| strategy: | |
| rollingUpdate: | |
| maxSurge: 1 | |
| maxUnavailable: 1 | |
| type: RollingUpdate | |
| template: | |
| metadata: | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| app.kubernetes.io/instance: kubecost | |
| app: cost-analyzer | |
| spec: | |
| securityContext: | |
| runAsUser: 1001 | |
| runAsGroup: 1001 | |
| fsGroup: 1001 | |
| restartPolicy: Always | |
| serviceAccountName: kubecost-cost-analyzer | |
| volumes: | |
| - name: nginx-conf | |
| configMap: | |
| name: nginx-conf | |
| items: | |
| - key: nginx.conf | |
| path: default.conf | |
| - name: persistent-configs | |
| persistentVolumeClaim: | |
| claimName: kubecost-cost-analyzer | |
| initContainers: | |
| - name: config-perms-fix | |
| image: busybox | |
| command: ["/bin/chmod", "-R", "777", "/var/configs"] | |
| volumeMounts: | |
| - name: persistent-configs | |
| mountPath: /var/configs | |
| securityContext: | |
| runAsUser: 0 | |
| - image: ajaytripathy/kubecost-init:prod-1.38.0 | |
| name: cost-analyzer-init | |
| imagePullPolicy: Always | |
| env: | |
| - name: PROMETHEUS_SERVER_ENDPOINT | |
| valueFrom: | |
| configMapKeyRef: | |
| name: kubecost-cost-analyzer | |
| key: prometheus-server-endpoint | |
| containers: | |
| - image: ajaytripathy/kubecost-frontend:prod-1.38.0 | |
| env: | |
| - name: GET_HOSTS_FROM | |
| value: dns | |
| name: cost-analyzer-frontend | |
| volumeMounts: | |
| - name: nginx-conf | |
| mountPath: /etc/nginx/conf.d/ | |
| resources: | |
| requests: | |
| cpu: "10m" | |
| memory: "55Mi" | |
| imagePullPolicy: Always | |
| readinessProbe: | |
| httpGet: | |
| path: /healthz | |
| port: 9003 | |
| initialDelaySeconds: 30 | |
| periodSeconds: 10 | |
| failureThreshold: 200 | |
| - image: ajaytripathy/kubecost:prod-1.38.0 | |
| resources: | |
| requests: | |
| cpu: "100m" | |
| memory: "55Mi" | |
| name: cost-analyzer-server | |
| readinessProbe: | |
| httpGet: | |
| path: /healthz | |
| port: 9003 | |
| initialDelaySeconds: 30 | |
| periodSeconds: 10 | |
| failureThreshold: 200 | |
| volumeMounts: | |
| - name: persistent-configs | |
| mountPath: /var/configs | |
| env: | |
| - name: PROMETHEUS_SERVER_ENDPOINT | |
| valueFrom: | |
| configMapKeyRef: | |
| name: kubecost-cost-analyzer | |
| key: prometheus-server-endpoint | |
| - name: GOOGLE_APPLICATION_CREDENTIALS | |
| value: /var/configs/key.json | |
| - name: KUBECOST_TOKEN | |
| valueFrom: | |
| configMapKeyRef: | |
| name: kubecost-cost-analyzer | |
| key: kubecost-token | |
| - image: ajaytripathy/kubecost-cost-model:prod-1.38.0 | |
| name: cost-model | |
| imagePullPolicy: Always | |
| resources: | |
| requests: | |
| cpu: "200m" | |
| memory: "55Mi" | |
| readinessProbe: | |
| httpGet: | |
| path: /healthz | |
| port: 9003 | |
| initialDelaySeconds: 30 | |
| periodSeconds: 10 | |
| failureThreshold: 200 | |
| volumeMounts: | |
| - name: persistent-configs | |
| mountPath: /var/configs | |
| env: | |
| - name: PROMETHEUS_SERVER_ENDPOINT | |
| valueFrom: | |
| configMapKeyRef: | |
| name: kubecost-cost-analyzer | |
| key: prometheus-server-endpoint | |
| - name: CLOUD_PROVIDER_API_KEY | |
| value: "AIzaSyDXQPG_MHUEy9neR7stolq6l0ujXmjJlvk" # The GCP Pricing API requires a key. | |
| - name: GOOGLE_APPLICATION_CREDENTIALS | |
| value: /var/configs/key.json | |
| - name: CONFIG_PATH | |
| value: /var/configs/ | |
| - name: KUBECOST_TOKEN | |
| valueFrom: | |
| configMapKeyRef: | |
| name: kubecost-cost-analyzer | |
| key: kubecost-token | |
| imagePullPolicy: Always | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-checks-template.yaml | |
| apiVersion: batch/v1beta1 | |
| kind: CronJob | |
| metadata: | |
| name: cost-analyzer-checks | |
| labels: | |
| app.kubernetes.io/name: cost-analyzer | |
| helm.sh/chart: cost-analyzer-1.38.0 | |
| app.kubernetes.io/instance: kubecost | |
| app.kubernetes.io/managed-by: Tiller | |
| app: cost-analyzer | |
| spec: | |
| schedule: "*/10 * * * *" | |
| jobTemplate: | |
| spec: | |
| template: | |
| spec: | |
| containers: | |
| - name: cost-analyzer-checks | |
| image: ajaytripathy/kubecost-checks:prod-1.38.0 | |
| args: | |
| - node | |
| - ./node/cron.js | |
| resources: | |
| requests: | |
| cpu: "20m" | |
| memory: "100Mi" | |
| limits: | |
| cpu: "100m" | |
| memory: "200Mi" | |
| env: | |
| - name: COST_ANALYZER_SERVER_ENDPOINT | |
| value: kubecost-cost-analyzer.kubecost.svc.cluster.local:9001 | |
| - name: COST_ANALYZER_MODEL_ENDPOINT | |
| value: kubecost-cost-analyzer.kubecost.svc.cluster.local:9003 | |
| - name: PROMETHEUS_ALERTMANAGER_ENDPOINT | |
| valueFrom: | |
| configMapKeyRef: | |
| name: kubecost-cost-analyzer | |
| key: prometheus-alertmanager-endpoint | |
| restartPolicy: OnFailure | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/dashboards-json-configmap.yaml | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/ingress.yaml | |
| --- | |
| # Source: cost-analyzer/charts/grafana/templates/pvc.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/alertmanager-ingress.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/alertmanager-networkpolicy.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/alertmanager-service-headless.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/alertmanager-statefulset.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/kube-state-metrics-networkpolicy.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/node-exporter-podsecuritypolicy.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/node-exporter-role.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/node-exporter-rolebinding.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/pushgateway-ingress.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/pushgateway-networkpolicy.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-ingress.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-networkpolicy.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-service-headless.yaml | |
| --- | |
| # Source: cost-analyzer/charts/prometheus/templates/server-statefulset.yaml | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-ingress-template.yaml | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-network-policy.yaml | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-prometheusrule-template.yaml | |
| --- | |
| # Source: cost-analyzer/templates/cost-analyzer-servicemonitor-template.yaml | |
| --- | |
| # Source: cost-analyzer/templates/external-grafana-config-map-template.yaml |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment