Récupérer des métriques personnalisées

Documentation officielle :

L’option de cluster GKE “workload-metrics” déploie :

  • un daemonset “workload-metrics”
  • une CRD “pod-monitor”
  • on peut ensuite scrapper les métriques au format prométheus d’un service donné en créant une ressource de type PodMonitor

Exemple pour flux

PodMonitor pour récupérer les métriques de flux :

$ kubectl get podmonitors -n flux-system flux-system -o yaml`
apiVersion: monitoring.gke.io/v1alpha1
kind: PodMonitor
metadata:
  labels:
    app.kubernetes.io/part-of: flux
    kustomize.toolkit.fluxcd.io/name: flux-system
    kustomize.toolkit.fluxcd.io/namespace: flux-system
  name: flux-system
  namespace: flux-system
spec:
  podMetricsEndpoints:
  - port: http-prom
  selector:
    matchExpressions:
    - key: app
      operator: In
      values:
      - helm-controller
      - source-controller
      - kustomize-controller
      - notification-controller
      - image-automation-controller
      - image-reflector-controller

Exemple pour kube-state-metric

PodMonitor pour récupérer les métriques de kube-state-metric :

$ kubectl get podmonitors -n kube-system kube-state-metrics -o yaml
apiVersion: monitoring.gke.io/v1alpha1
kind: PodMonitor
metadata:
  labels:
    kustomize.toolkit.fluxcd.io/name: flux-system
    kustomize.toolkit.fluxcd.io/namespace: flux-system
  name: kube-state-metrics
  namespace: kube-system
spec:
  podMetricsEndpoints:
  - path: /metrics
    port: http-metrics
    scheme: http
  selector:
    matchLabels:
      app.kubernetes.io/name: kube-state-metrics

Attention les métriques sont facturées. Il est possible de filtrer certaines métriques avec le paramètre metricRelabelings dans le PodMonitor. plus de détails :