From 98ee25a8d17162a7f14530a3cb97d86be3d224c8 Mon Sep 17 00:00:00 2001 From: Stefan Reimer Date: Wed, 21 Jul 2021 15:06:40 +0200 Subject: [PATCH] feat: add prometheus pushgateway as optional component --- charts/kubezero-metrics/.gitignore | 1 + charts/kubezero-metrics/Chart.yaml | 10 +- .../charts/prometheus-pushgateway/.helmignore | 24 ++ .../charts/prometheus-pushgateway/Chart.yaml | 16 ++ .../charts/prometheus-pushgateway/README.md | 63 +++++ .../templates/NOTES.txt | 19 ++ .../templates/_helpers.tpl | 65 +++++ .../templates/deployment.yaml | 91 +++++++ .../templates/ingress.yaml | 35 +++ .../templates/networkpolicy.yaml | 26 ++ .../prometheus-pushgateway/templates/pdb.yaml | 14 ++ .../templates/pushgateway-pvc.yaml | 28 +++ .../templates/service.yaml | 34 +++ .../templates/serviceaccount.yaml | 9 + .../templates/servicemonitor.yaml | 37 +++ .../charts/prometheus-pushgateway/values.yaml | 233 ++++++++++++++++++ charts/kubezero-metrics/dashboards/build.sh | 4 +- .../dashboards/jsonnetfile.lock.json | 6 +- .../kube-mixin/k8s-resources-namespace.json | 16 +- .../kube-mixin/k8s-resources-node.json | 16 +- .../kube-mixin/k8s-resources-pod.json | 16 +- .../templates/grafana-dashboards-k8s.yaml | 8 +- charts/kubezero-metrics/update.sh | 8 +- charts/kubezero-metrics/values.yaml | 7 + charts/kubezero-metrics/zdt-pushgateway.patch | 66 +++++ 25 files changed, 817 insertions(+), 35 deletions(-) create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/.helmignore create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/Chart.yaml create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/README.md create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/NOTES.txt create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/_helpers.tpl create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/deployment.yaml create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/ingress.yaml create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/networkpolicy.yaml create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/pdb.yaml create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/pushgateway-pvc.yaml create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/service.yaml create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/serviceaccount.yaml create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/templates/servicemonitor.yaml create mode 100644 charts/kubezero-metrics/charts/prometheus-pushgateway/values.yaml create mode 100644 charts/kubezero-metrics/zdt-pushgateway.patch diff --git a/charts/kubezero-metrics/.gitignore b/charts/kubezero-metrics/.gitignore index 3e33c11..26187bf 100644 --- a/charts/kubezero-metrics/.gitignore +++ b/charts/kubezero-metrics/.gitignore @@ -1 +1,2 @@ dashboards/vendor +dashboards/jb-linux-amd64 diff --git a/charts/kubezero-metrics/Chart.yaml b/charts/kubezero-metrics/Chart.yaml index cb9a2c2..df6d5e4 100644 --- a/charts/kubezero-metrics/Chart.yaml +++ b/charts/kubezero-metrics/Chart.yaml @@ -1,13 +1,14 @@ apiVersion: v2 name: kubezero-metrics -description: KubeZero Umbrella Chart for prometheus-operator +description: KubeZero Umbrella Chart for Prometheus, Grafana and Alertmanager as well as all Kubernetes integrations. type: application -version: 0.4.2 +version: 0.4.3 home: https://kubezero.com icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png keywords: - kubezero - prometheus + - alertmanager - grafana maintainers: - name: Quarky9 @@ -23,4 +24,9 @@ dependencies: version: 2.15.0 repository: https://prometheus-community.github.io/helm-charts condition: prometheus-adapter.enabled + - name: prometheus-pushgateway + version: 1.10.1 + # Switch back to upstream once namespaces are supported + # repository: https://prometheus-community.github.io/helm-charts + condition: prometheus-pushgateway.enabled kubeVersion: ">= 1.18.0" diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/.helmignore b/charts/kubezero-metrics/charts/prometheus-pushgateway/.helmignore new file mode 100644 index 0000000..e90c9f6 --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj + +# OWNERS file for Kubernetes +OWNERS \ No newline at end of file diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/Chart.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/Chart.yaml new file mode 100644 index 0000000..011c791 --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/Chart.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +appVersion: 1.3.0 +description: A Helm chart for prometheus pushgateway +home: https://github.com/prometheus/pushgateway +keywords: +- pushgateway +- prometheus +maintainers: +- email: gianrubio@gmail.com + name: gianrubio +- email: christian.staude@staffbase.com + name: cstaud +name: prometheus-pushgateway +sources: +- https://github.com/prometheus/pushgateway +version: 1.10.1 diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/README.md b/charts/kubezero-metrics/charts/prometheus-pushgateway/README.md new file mode 100644 index 0000000..9f0ac5e --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/README.md @@ -0,0 +1,63 @@ +# Prometheus Pushgateway + +This chart bootstraps a prometheus [pushgateway](http://github.com/prometheus/pushgateway) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +An optional prometheus `ServiceMonitor` can be enabled, should you wish to use this gateway with a [Prometheus Operator](https://github.com/coreos/prometheus-operator). + +## Get Repo Info + +```console +helm repo add prometheus-community https://prometheus-community.github.io/helm-charts +helm repo update +``` + +_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ + +## Install Chart + +```console +# Helm 3 +$ helm install [RELEASE_NAME] prometheus-community/prometheus-pushgateway + +# Helm 2 +$ helm install --name [RELEASE_NAME] prometheus-community/prometheus-pushgateway +``` + +_See [configuration](#configuration) below._ + +_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ + +## Uninstall Chart + +```console +# Helm 3 +$ helm uninstall [RELEASE_NAME] + +# Helm 2 +# helm delete --purge [RELEASE_NAME] +``` + +This removes all the Kubernetes components associated with the chart and deletes the release. + +_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ + +## Upgrading Chart + +```console +# Helm 3 or 2 +$ helm upgrade [RELEASE_NAME] [CHART] --install +``` + +_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ + +## Configuration + +See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands: + +```console +# Helm 2 +$ helm inspect values prometheus-community/prometheus-pushgateway + +# Helm 3 +$ helm show values prometheus-community/prometheus-pushgateway +``` diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/NOTES.txt b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/NOTES.txt new file mode 100644 index 0000000..eca232e --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus-pushgateway.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ template "prometheus-pushgateway.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "prometheus-pushgateway.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "prometheus-pushgateway.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:80 +{{- end }} \ No newline at end of file diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/_helpers.tpl b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/_helpers.tpl new file mode 100644 index 0000000..f6e4690 --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/_helpers.tpl @@ -0,0 +1,65 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "prometheus-pushgateway.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "prometheus-pushgateway.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "prometheus-pushgateway.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + + +{{/* +Create the name of the service account to use +*/}} +{{- define "prometheus-pushgateway.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "prometheus-pushgateway.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create default labels +*/}} +{{- define "prometheus-pushgateway.defaultLabels" -}} +{{- $labelChart := include "prometheus-pushgateway.chart" $ -}} +{{- $labelApp := include "prometheus-pushgateway.name" $ -}} +{{- $labels := dict "app" $labelApp "chart" $labelChart "release" .Release.Name "heritage" .Release.Service -}} +{{ merge .extraLabels $labels | toYaml | indent 4 }} +{{- end -}} + +{{/* +Return the appropriate apiVersion for networkpolicy. +*/}} +{{- define "prometheus-pushgateway.networkPolicy.apiVersion" -}} +{{- if semverCompare ">=1.4-0, <1.7-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "^1.7-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "networking.k8s.io/v1" -}} +{{- end -}} +{{- end -}} diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/deployment.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/deployment.yaml new file mode 100644 index 0000000..0e7b199 --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/deployment.yaml @@ -0,0 +1,91 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "prometheus-pushgateway.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: +{{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.podLabels) . }} +spec: + replicas: {{ .Values.replicaCount }} + {{- if .Values.strategy }} + strategy: +{{ toYaml .Values.strategy | indent 4 }} + {{- end }} + selector: + matchLabels: + app: {{ template "prometheus-pushgateway.name" . }} + release: {{ .Release.Name }} + template: + metadata: + labels: + app: {{ template "prometheus-pushgateway.name" . }} + release: {{ .Release.Name }} + annotations: +{{ toYaml .Values.podAnnotations | indent 8 }} + spec: + serviceAccountName: {{ template "prometheus-pushgateway.serviceAccountName" . }} + {{- if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName | quote }} + {{- end }} + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + containers: + - name: pushgateway + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.extraVars }} + env: +{{ toYaml .Values.extraVars | indent 12 }} + {{- end }} + {{- if .Values.extraArgs }} + args: +{{ toYaml .Values.extraArgs | indent 12 }} + {{- end }} + ports: + - name: metrics + containerPort: 9091 + protocol: TCP + livenessProbe: + httpGet: + path: /-/healthy + port: 9091 + initialDelaySeconds: 10 + timeoutSeconds: 10 + readinessProbe: + httpGet: + path: /-/ready + port: 9091 + initialDelaySeconds: 10 + timeoutSeconds: 10 + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.persistentVolume.enabled }} + volumeMounts: + - name: storage-volume + mountPath: "{{ .Values.persistentVolume.mountPath }}" + subPath: "{{ .Values.persistentVolume.subPath }}" + {{- end }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.tolerations }} + tolerations: +{{ toYaml .Values.tolerations | indent 8 }} + {{- end }} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 8 }} + {{- end }} + {{- if .Values.persistentVolume.enabled }} + {{- if .Values.securityContext }} + securityContext: +{{ toYaml .Values.securityContext | indent 8 }} + {{- end }} + volumes: + - name: storage-volume + persistentVolumeClaim: + claimName: {{ if .Values.persistentVolume.existingClaim }}{{ .Values.persistentVolume.existingClaim }}{{- else }}{{ template "prometheus-pushgateway.fullname" . }}{{- end }} + {{- end -}} diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/ingress.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/ingress.yaml new file mode 100644 index 0000000..c009a05 --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/ingress.yaml @@ -0,0 +1,35 @@ +{{- if .Values.ingress.enabled -}} +{{- $serviceName := include "prometheus-pushgateway.fullname" . }} +{{- $servicePort := .Values.service.port -}} +{{- $ingressPath := .Values.ingress.path -}} +{{- if semverCompare ">=1.14.0-0" .Capabilities.KubeVersion.GitVersion }} +apiVersion: networking.k8s.io/v1beta1 +{{- else }} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: +{{- if .Values.ingress.annotations }} + annotations: +{{ toYaml .Values.ingress.annotations | indent 4}} +{{- end }} + labels: +{{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" dict) . }} + name: {{ template "prometheus-pushgateway.fullname" . }} + namespace: {{ .Release.Namespace }} +spec: + rules: + {{- range $host := .Values.ingress.hosts }} + - host: {{ $host }} + http: + paths: + - path: {{ $ingressPath }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} +{{- if .Values.ingress.tls }} + tls: +{{ toYaml .Values.ingress.tls | indent 4 }} + {{- end -}} +{{- end -}} diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/networkpolicy.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/networkpolicy.yaml new file mode 100644 index 0000000..aa49058 --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/networkpolicy.yaml @@ -0,0 +1,26 @@ +{{ if .Values.networkPolicy }} +apiVersion: {{ template "prometheus-pushgateway.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: +{{- if .Values.networkPolicy.customSelectors }} + name: ingress-allow-customselector-{{ template "prometheus-pushgateway.name" . }} +{{- else if .Values.networkPolicy.allowAll }} + name: ingress-allow-all-{{ template "prometheus-pushgateway.name" . }} +{{- else -}} +{{- fail "One of `allowAll` or `customSelectors` must be specified." }} +{{- end }} + labels: +{{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.podLabels) . }} +spec: + podSelector: + matchLabels: + app: {{ template "prometheus-pushgateway.name" .}} + release: {{ .Release.Name }} + ingress: + - ports: + - port: {{ .Values.service.targetPort }} +{{- if .Values.networkPolicy.customSelectors }} + from: +{{ toYaml .Values.networkPolicy.customSelectors | indent 8 }} +{{- end -}} +{{- end -}} diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/pdb.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/pdb.yaml new file mode 100644 index 0000000..b00bce1 --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/pdb.yaml @@ -0,0 +1,14 @@ +{{- if .Values.podDisruptionBudget -}} +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: {{ template "prometheus-pushgateway.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: +{{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.podLabels) . }} +spec: + selector: + matchLabels: + app: {{ template "prometheus-pushgateway.name" . }} +{{ toYaml .Values.podDisruptionBudget | indent 2 }} +{{- end -}} \ No newline at end of file diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/pushgateway-pvc.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/pushgateway-pvc.yaml new file mode 100644 index 0000000..119b94f --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/pushgateway-pvc.yaml @@ -0,0 +1,28 @@ +{{- if .Values.persistentVolume.enabled -}} +{{- if not .Values.persistentVolume.existingClaim -}} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + {{- if .Values.persistentVolume.annotations }} + annotations: +{{ toYaml .Values.persistentVolume.annotations | indent 4 }} + {{- end }} + labels: +{{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.persistentVolumeLabels) . }} + name: {{ template "prometheus-pushgateway.fullname" . }} + namespace: {{ .Release.Namespace }} +spec: + accessModes: +{{ toYaml .Values.persistentVolume.accessModes | indent 4 }} +{{- if .Values.persistentVolume.storageClass }} +{{- if (eq "-" .Values.persistentVolume.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistentVolume.storageClass }}" +{{- end }} +{{- end }} + resources: + requests: + storage: "{{ .Values.persistentVolume.size }}" +{{- end -}} +{{- end -}} diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/service.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/service.yaml new file mode 100644 index 0000000..73c5a0d --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/service.yaml @@ -0,0 +1,34 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "prometheus-pushgateway.fullname" . }} + namespace: {{ .Release.Namespace }} + annotations: +{{ .Values.serviceAnnotations | toYaml | indent 4 }} + labels: +{{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.serviceLabels) . }} +spec: +{{- if .Values.service.clusterIP }} + clusterIP: {{ .Values.service.clusterIP }} +{{- end }} + type: {{ .Values.service.type }} +{{- if .Values.service.loadBalancerIP }} + loadBalancerIP: {{ .Values.service.loadBalancerIP }} +{{- end }} +{{- if .Values.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- range $cidr := .Values.service.loadBalancerSourceRanges }} + - {{ $cidr }} + {{- end }} +{{- end }} + ports: + - port: {{ .Values.service.port }} + targetPort: {{ .Values.service.targetPort }} + {{- if and (eq .Values.service.type "NodePort") .Values.service.nodePort }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} + protocol: TCP + name: http + selector: + app: {{ template "prometheus-pushgateway.name" . }} + release: {{ .Release.Name }} diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/serviceaccount.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/serviceaccount.yaml new file mode 100644 index 0000000..cef76c6 --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/serviceaccount.yaml @@ -0,0 +1,9 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "prometheus-pushgateway.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: +{{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.serviceAccountLabels) . }} +{{- end -}} diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/servicemonitor.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/servicemonitor.yaml new file mode 100644 index 0000000..9cd1c63 --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/templates/servicemonitor.yaml @@ -0,0 +1,37 @@ +{{- if .Values.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "prometheus-pushgateway.fullname" . }} + {{- if .Values.serviceMonitor.namespace }} + namespace: {{ .Values.serviceMonitor.namespace }} + {{- end }} + labels: +{{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.serviceMonitor.additionalLabels) . }} +spec: + endpoints: + - port: http + {{- if .Values.serviceMonitor.interval }} + interval: {{ .Values.serviceMonitor.interval }} + {{- end }} + {{- if .Values.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }} + {{- end }} + path: /metrics + honorLabels: {{ .Values.serviceMonitor.honorLabels }} + {{- if .Values.serviceMonitor.metricRelabelings }} + metricRelabelings: + {{- tpl (toYaml .Values.serviceMonitor.metricRelabelings | nindent 4) . }} + {{- end }} + {{- if .Values.serviceMonitor.relabelings }} + relabelings: + {{ toYaml .Values.serviceMonitor.relabelings | nindent 4 }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + selector: + matchLabels: + app: {{ template "prometheus-pushgateway.name" . }} + release: {{ .Release.Name }} +{{- end -}} diff --git a/charts/kubezero-metrics/charts/prometheus-pushgateway/values.yaml b/charts/kubezero-metrics/charts/prometheus-pushgateway/values.yaml new file mode 100644 index 0000000..c3f78ea --- /dev/null +++ b/charts/kubezero-metrics/charts/prometheus-pushgateway/values.yaml @@ -0,0 +1,233 @@ +# Default values for prometheus-pushgateway. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +# Provide a name in place of prometheus-pushgateway for `app:` labels +nameOverride: "" + +# Provide a name to substitute for the full names of resources +fullnameOverride: "" + +image: + repository: prom/pushgateway + tag: v1.3.0 + pullPolicy: IfNotPresent + +# Optional pod imagePullSecrets +imagePullSecrets: [] + +service: + type: ClusterIP + port: 9091 + targetPort: 9091 + + # Optional - Can be used for headless if value is "None" + clusterIP: "" + + loadBalancerIP: "" + loadBalancerSourceRanges: [] + +# Optional pod annotations +podAnnotations: {} + +# Optional pod labels +podLabels: {} + +# Optional service annotations +serviceAnnotations: {} + +# Optional service labels +serviceLabels: {} + +# Optional serviceAccount labels +serviceAccountLabels: {} + +# Optional persistentVolume labels +persistentVolumeLabels: {} + +# Optional additional environment variables +extraVars: [] + +## Additional pushgateway container arguments +## +## example: +## extraArgs: +## - --persistence.file=/data/pushgateway.data +## - --persistence.interval=5m +extraArgs: [] + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 200m + # memory: 50Mi + # requests: + # cpu: 100m + # memory: 30Mi + +serviceAccount: + # Specifies whether a ServiceAccount should be created + create: true + # The name of the ServiceAccount to use. + # If not set and create is true, a name is generated using the fullname template + name: + +## Configure ingress resource that allow you to access the +## pushgateway installation. Set up the URL +## ref: http://kubernetes.io/docs/user-guide/ingress/ +## +ingress: + ## Enable Ingress. + ## + enabled: false + # AWS ALB requires path of /* + path: / + + ## Annotations. + ## + # annotations: + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: 'true' + + ## Hostnames. + ## Must be provided if Ingress is enabled. + ## + # hosts: + # - pushgateway.domain.com + + ## TLS configuration. + ## Secrets must be manually created in the namespace. + ## + # tls: + # - secretName: pushgateway-tls + # hosts: + # - pushgateway.domain.com + +tolerations: {} + # - effect: NoSchedule + # operator: Exists + +## Node labels for pushgateway pod assignment +## Ref: https://kubernetes.io/docs/user-guide/node-selection/ +## +nodeSelector: {} + +replicaCount: 1 + +## Security context to be added to push-gateway pods +## +securityContext: + fsGroup: 65534 + runAsUser: 65534 + runAsNonRoot: true + +## Affinity for pod assignment +## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +affinity: {} + +# Enable this if you're using https://github.com/coreos/prometheus-operator +serviceMonitor: + enabled: false + namespace: monitoring + + # Fallback to the prometheus default unless specified + # interval: 10s + + # Fallback to the prometheus default unless specified + # scrapeTimeout: 30s + + ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + additionalLabels: {} + + # Retain the job and instance labels of the metrics pushed to the Pushgateway + # [Scraping Pushgateway](https://github.com/prometheus/pushgateway#configure-the-pushgateway-as-a-target-to-scrape) + honorLabels: true + + ## Metric relabel configs to apply to samples before ingestion. + ## [Metric Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs) + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + ## Relabel configs to apply to samples before ingestion. + ## [Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config) + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + +# The values to set in the PodDisruptionBudget spec (minAvailable/maxUnavailable) +# If not set then a PodDisruptionBudget will not be created +podDisruptionBudget: {} + +priorityClassName: + +# Deployment Strategy type +strategy: + type: Recreate + +persistentVolume: + ## If true, pushgateway will create/use a Persistent Volume Claim + ## If false, use emptyDir + ## + enabled: false + + ## pushgateway data Persistent Volume access modes + ## Must match those of existing PV or dynamic provisioner + ## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + ## + accessModes: + - ReadWriteOnce + + ## pushgateway data Persistent Volume Claim annotations + ## + annotations: {} + + ## pushgateway data Persistent Volume existing claim name + ## Requires pushgateway.persistentVolume.enabled: true + ## If defined, PVC must be created manually before volume will be bound + existingClaim: "" + + ## pushgateway data Persistent Volume mount root path + ## + mountPath: /data + + ## pushgateway data Persistent Volume size + ## + size: 2Gi + + ## pushgateway data Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + + ## Subdirectory of pushgateway data Persistent Volume to mount + ## Useful if the volume's root directory is not empty + ## + subPath: "" + +# Configuration for clusters with restrictive network policies in place: +# - allowAll allows access to the PushGateway from any namespace +# - customSelector is a list of pod/namespaceSelectors to allow access from +# These options are mutually exclusive and the latter will take precedence. +networkPolicy: {} + # allowAll: true + # customSelectors: + # - namespaceSelector: + # matchLabels: + # type: admin + # - podSelector: + # matchLabels: + # app: myapp diff --git a/charts/kubezero-metrics/dashboards/build.sh b/charts/kubezero-metrics/dashboards/build.sh index fa2c81e..73fc256 100755 --- a/charts/kubezero-metrics/dashboards/build.sh +++ b/charts/kubezero-metrics/dashboards/build.sh @@ -1,6 +1,8 @@ #!/bin/bash -jb update +[ -x ./jb-linux-amd64 ] || wget https://github.com/jsonnet-bundler/jsonnet-bundler/releases/download/v0.4.0/jb-linux-amd64 && chmod +x ./jb-linux-amd64 + +./jb-linux-amd64 update mkdir -p kube-mixin jsonnet -J vendor -m kube-mixin -e '(import "mixin.libsonnet").grafanaDashboards' diff --git a/charts/kubezero-metrics/dashboards/jsonnetfile.lock.json b/charts/kubezero-metrics/dashboards/jsonnetfile.lock.json index 7749a90..301e33e 100644 --- a/charts/kubezero-metrics/dashboards/jsonnetfile.lock.json +++ b/charts/kubezero-metrics/dashboards/jsonnetfile.lock.json @@ -18,7 +18,7 @@ "subdir": "grafana-builder" } }, - "version": "e5cc5d604c74e887b4e56ee3fd30334bf6cef19a", + "version": "2a6bdb7df17539b27869bab8b04eab0cc69a7abb", "sum": "GRf2GvwEU4jhXV+JOonXSZ4wdDv8mnHBPCQ6TUVd+g8=" }, { @@ -28,8 +28,8 @@ "subdir": "" } }, - "version": "b710a868a95621aa93e0b661954f63f4db82aaea", - "sum": "W3jM1f3BUCc2mursXapw0OwsU2raoCuRy9897aA9R9k=" + "version": "50dddcc2aecf074c7f7fab92caa87a806e5040fa", + "sum": "H4TcGWDVaNF51ZaGpJwm9rVympjpTtSjl4UCYI8q1LU=" } ], "legacyImports": false diff --git a/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-namespace.json b/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-namespace.json index 94a2d3b..81e752e 100644 --- a/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-namespace.json +++ b/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-namespace.json @@ -606,7 +606,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}) by (pod)", + "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -615,7 +615,7 @@ "step": 10 }, { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}) by (pod)", + "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -624,7 +624,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}) by (pod)", + "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -633,7 +633,7 @@ "step": 10 }, { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}) by (pod)", + "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -1013,7 +1013,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}) by (pod)", + "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -1022,7 +1022,7 @@ "step": 10 }, { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod) / sum(kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}) by (pod)", + "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -1031,7 +1031,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}) by (pod)", + "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -1040,7 +1040,7 @@ "step": 10 }, { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod) / sum(kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}) by (pod)", + "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, diff --git a/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-node.json b/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-node.json index ec28f93..e787844 100644 --- a/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-node.json +++ b/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-node.json @@ -251,7 +251,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\", resource=\"cpu\"}) by (pod)", + "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -260,7 +260,7 @@ "step": 10 }, { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\", resource=\"cpu\"}) by (pod)", + "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -269,7 +269,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\", resource=\"cpu\"}) by (pod)", + "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -278,7 +278,7 @@ "step": 10 }, { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\", resource=\"cpu\"}) by (pod)", + "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -619,7 +619,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\", resource=\"memory\"}) by (pod)", + "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -628,7 +628,7 @@ "step": 10 }, { - "expr": "sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod) / sum(kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\", resource=\"memory\"}) by (pod)", + "expr": "sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -637,7 +637,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\", resource=\"memory\"}) by (pod)", + "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, @@ -646,7 +646,7 @@ "step": 10 }, { - "expr": "sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod) / sum(kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\", resource=\"memory\"}) by (pod)", + "expr": "sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", "format": "table", "instant": true, "intervalFactor": 2, diff --git a/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-pod.json b/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-pod.json index c7587e5..1b29f34 100644 --- a/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-pod.json +++ b/charts/kubezero-metrics/dashboards/kube-mixin/k8s-resources-pod.json @@ -383,7 +383,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"cpu\"}) by (container)", + "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "format": "table", "instant": true, "intervalFactor": 2, @@ -392,7 +392,7 @@ "step": 10 }, { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"cpu\"}) by (container)", + "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "format": "table", "instant": true, "intervalFactor": 2, @@ -401,7 +401,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"cpu\"}) by (container)", + "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "format": "table", "instant": true, "intervalFactor": 2, @@ -410,7 +410,7 @@ "step": 10 }, { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"cpu\"}) by (container)", + "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "format": "table", "instant": true, "intervalFactor": 2, @@ -788,7 +788,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"memory\"}) by (container)", + "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "format": "table", "instant": true, "intervalFactor": 2, @@ -797,7 +797,7 @@ "step": 10 }, { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", image!=\"\"}) by (container) / sum(kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"memory\"}) by (container)", + "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", image!=\"\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "format": "table", "instant": true, "intervalFactor": 2, @@ -806,7 +806,7 @@ "step": 10 }, { - "expr": "sum(kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"memory\"}) by (container)", + "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "format": "table", "instant": true, "intervalFactor": 2, @@ -815,7 +815,7 @@ "step": 10 }, { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\", image!=\"\"}) by (container) / sum(kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"memory\"}) by (container)", + "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\", image!=\"\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "format": "table", "instant": true, "intervalFactor": 2, diff --git a/charts/kubezero-metrics/templates/grafana-dashboards-k8s.yaml b/charts/kubezero-metrics/templates/grafana-dashboards-k8s.yaml index b85c334..9a2e659 100644 --- a/charts/kubezero-metrics/templates/grafana-dashboards-k8s.yaml +++ b/charts/kubezero-metrics/templates/grafana-dashboards-k8s.yaml @@ -24,11 +24,11 @@ binaryData: k8s-resources-cluster.json.gz: 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 k8s-resources-namespace.json.gz: - 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 k8s-resources-node.json.gz: - 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 k8s-resources-pod.json.gz: - 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 k8s-resources-workload.json.gz: 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 k8s-resources-workloads-namespace.json.gz: @@ -40,7 +40,7 @@ binaryData: namespace-by-workload.json.gz: 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 persistentvolumesusage.json.gz: - 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 pod-total.json.gz: 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 proxy.json.gz: diff --git a/charts/kubezero-metrics/update.sh b/charts/kubezero-metrics/update.sh index d0ddfae..d7f5782 100755 --- a/charts/kubezero-metrics/update.sh +++ b/charts/kubezero-metrics/update.sh @@ -1,14 +1,20 @@ #!/bin/bash VERSION=16.13.0 +PG_VER=1.10.1 rm -rf charts/kube-prometheus-stack -curl -L -s -o - https://github.com/prometheus-community/helm-charts/releases/download/kube-prometheus-stack-${VERSION}/kube-prometheus-stack-${VERSION}.tgz | tar xfz - -C charts +helm pull prometheus-community/kube-prometheus-stack --untar --untardir charts --version $VERSION + +rm -rf charts/prometheus-pushgateway +helm pull prometheus-community/prometheus-pushgateway --untar --untardir charts --version $PG_VER # The grpc alerts could be re-enabled with etcd 3.5 # https://github.com/etcd-io/etcd/pull/12196 patch -p0 -i zdt.patch --no-backup-if-mismatch +patch -p0 -i zdt-pushgateway.patch --no-backup-if-mismatch + # Create ZDT dashboard configmap cd dashboards ./build.sh diff --git a/charts/kubezero-metrics/values.yaml b/charts/kubezero-metrics/values.yaml index 18a9d46..89fd951 100644 --- a/charts/kubezero-metrics/values.yaml +++ b/charts/kubezero-metrics/values.yaml @@ -241,6 +241,13 @@ prometheus-adapter: containerLabel: container window: 5m +# Pushgateway +prometheus-pushgateway: + enabled: false + + serviceMonitor: + enabled: true + istio: grafana: enabled: false diff --git a/charts/kubezero-metrics/zdt-pushgateway.patch b/charts/kubezero-metrics/zdt-pushgateway.patch new file mode 100644 index 0000000..14a8690 --- /dev/null +++ b/charts/kubezero-metrics/zdt-pushgateway.patch @@ -0,0 +1,66 @@ +diff -tubr charts/prometheus-pushgateway/templates/deployment.yaml charts/prometheus-pushgateway.zdt/templates/deployment.yaml +--- charts/prometheus-pushgateway/templates/deployment.yaml 2021-07-21 15:04:50.196722434 +0200 ++++ charts/prometheus-pushgateway.zdt/templates/deployment.yaml 2021-07-21 14:51:39.618598904 +0200 +@@ -2,6 +2,7 @@ + kind: Deployment + metadata: + name: {{ template "prometheus-pushgateway.fullname" . }} ++ namespace: {{ .Release.Namespace }} + labels: + {{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.podLabels) . }} + spec: +diff -tubr charts/prometheus-pushgateway/templates/ingress.yaml charts/prometheus-pushgateway.zdt/templates/ingress.yaml +--- charts/prometheus-pushgateway/templates/ingress.yaml 2021-07-21 15:04:50.196722434 +0200 ++++ charts/prometheus-pushgateway.zdt/templates/ingress.yaml 2021-07-21 14:51:49.698702493 +0200 +@@ -16,6 +16,7 @@ + labels: + {{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" dict) . }} + name: {{ template "prometheus-pushgateway.fullname" . }} ++ namespace: {{ .Release.Namespace }} + spec: + rules: + {{- range $host := .Values.ingress.hosts }} +diff -tubr charts/prometheus-pushgateway/templates/pdb.yaml charts/prometheus-pushgateway.zdt/templates/pdb.yaml +--- charts/prometheus-pushgateway/templates/pdb.yaml 2021-07-21 15:04:50.196722434 +0200 ++++ charts/prometheus-pushgateway.zdt/templates/pdb.yaml 2021-07-21 14:52:17.902325652 +0200 +@@ -3,6 +3,7 @@ + kind: PodDisruptionBudget + metadata: + name: {{ template "prometheus-pushgateway.fullname" . }} ++ namespace: {{ .Release.Namespace }} + labels: + {{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.podLabels) . }} + spec: +diff -tubr charts/prometheus-pushgateway/templates/pushgateway-pvc.yaml charts/prometheus-pushgateway.zdt/templates/pushgateway-pvc.yaml +--- charts/prometheus-pushgateway/templates/pushgateway-pvc.yaml 2021-07-21 15:04:50.196722434 +0200 ++++ charts/prometheus-pushgateway.zdt/templates/pushgateway-pvc.yaml 2021-07-21 14:52:31.325796911 +0200 +@@ -10,6 +10,7 @@ + labels: + {{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.persistentVolumeLabels) . }} + name: {{ template "prometheus-pushgateway.fullname" . }} ++ namespace: {{ .Release.Namespace }} + spec: + accessModes: + {{ toYaml .Values.persistentVolume.accessModes | indent 4 }} +diff -tubr charts/prometheus-pushgateway/templates/service.yaml charts/prometheus-pushgateway.zdt/templates/service.yaml +--- charts/prometheus-pushgateway/templates/service.yaml 2021-07-21 15:04:50.196722434 +0200 ++++ charts/prometheus-pushgateway.zdt/templates/service.yaml 2021-07-21 14:52:39.355879424 +0200 +@@ -2,6 +2,7 @@ + kind: Service + metadata: + name: {{ template "prometheus-pushgateway.fullname" . }} ++ namespace: {{ .Release.Namespace }} + annotations: + {{ .Values.serviceAnnotations | toYaml | indent 4 }} + labels: +diff -tubr charts/prometheus-pushgateway/templates/serviceaccount.yaml charts/prometheus-pushgateway.zdt/templates/serviceaccount.yaml +--- charts/prometheus-pushgateway/templates/serviceaccount.yaml 2021-07-21 15:04:50.196722434 +0200 ++++ charts/prometheus-pushgateway.zdt/templates/serviceaccount.yaml 2021-07-21 14:52:44.682600827 +0200 +@@ -3,6 +3,7 @@ + kind: ServiceAccount + metadata: + name: {{ template "prometheus-pushgateway.serviceAccountName" . }} ++ namespace: {{ .Release.Namespace }} + labels: + {{ template "prometheus-pushgateway.defaultLabels" merge (dict "extraLabels" .Values.serviceAccountLabels) . }} + {{- end -}}