Skip to content

Prometheus

Standalone Prometheus monitoring with Gateway API HTTPRoute.

Deployment

---
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: flux-apps
  namespace: flux-system
spec:
  interval: 1m0s
  ref:
    tag: v1.0.0
  url: https://github.com/stuttgart-things/flux.git
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: prometheus
  namespace: flux-system
spec:
  interval: 1h
  retryInterval: 1m
  timeout: 5m
  sourceRef:
    kind: GitRepository
    name: flux-apps
  path: ./infra/prometheus
  prune: true
  wait: true
  postBuild:
    substitute:
      PROMETHEUS_NAMESPACE: monitoring
      PROMETHEUS_VERSION: "28.13.0"
      PROMETHEUS_STORAGE_CLASS: nfs4-csi
      PROMETHEUS_STORAGE_SIZE: 10Gi
      PROMETHEUS_RETENTION: 15d
      GATEWAY_NAME: cilium-gateway
      GATEWAY_NAMESPACE: default
      HOSTNAME: prometheus
      DOMAIN: example.sthings-vsphere.labul.sva.de

Variables

Variable Default Description
PROMETHEUS_NAMESPACE monitoring Target namespace
PROMETHEUS_VERSION 28.13.0 Helm chart version
PROMETHEUS_STORAGE_CLASS nfs4-csi StorageClass for persistent volume
PROMETHEUS_STORAGE_SIZE 10Gi PVC size
PROMETHEUS_RETENTION 15d Data retention period
GATEWAY_NAME (required) Gateway resource name for HTTPRoute
GATEWAY_NAMESPACE default Namespace of the Gateway resource
HOSTNAME (required) HTTPRoute hostname prefix
DOMAIN (required) HTTPRoute domain suffix

Useful PromQL Queries

PVC usage (GiB):

kubelet_volume_stats_used_bytes / 1024 / 1024 / 1024

PVC usage percentage:

kubelet_volume_stats_used_bytes / kubelet_volume_stats_capacity_bytes * 100

Node CPU usage:

100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

Node memory usage:

(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100

Notes

  • Uses HelmRepository from https://prometheus-community.github.io/helm-charts
  • Standalone Prometheus (no Grafana/Alertmanager included)
  • Uses Gateway API HTTPRoute for UI access