Ook interessant Op zoek naar AI-certificering? Bezoek ons zusje-platform Route-to-AI.com
⏱ 11 min. lezen OpenShift logging monitoring reporting Loki Prometheus

Logging, monitoring en reporting in OpenShift

De ingebouwde monitoring- (Prometheus/Alertmanager) en logging-stack (Loki/Vector) van OpenShift uitgelegd, plus hoe je die data omzet in bruikbare rapportages — inclusief de overstap van Elasticsearch/Kibana naar Loki.

OpenShift heeft ingebouwde stacks voor zowel monitoring (metrics, alerting) als logging (centrale logverzameling) — je hoeft niet vanaf nul een eigen Prometheus of log-aggregatiesysteem op te zetten. Dit artikel behandelt beide, plus hoe je die data omzet in bruikbare reporting.

Monitoring: de Cluster Monitoring Operator

2026-07-22T05:01:11.982178 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/
Prometheus verzamelt metrics, Alertmanager stuurt meldingen, de OpenShift Console toont dashboards.

OpenShift installeert standaard de Cluster Monitoring Operator (CMO): een vooraf geconfigureerde combinatie van Prometheus, Alertmanager en Thanos Querier, direct zichtbaar in de OpenShift Console onder "Observe". Dit dekt clustercomponenten (API server, etcd, nodes) automatisch — zonder dat je zelf iets hoeft te installeren.

User Workload Monitoring: ook je eigen applicaties

Standaard bewaakt de CMO alleen clustercomponenten zelf, niet je eigen applicaties. Daarvoor schakel je User Workload Monitoring (UWM) in — een aparte, geïsoleerde Prometheus-instantie specifiek voor workload-metrics:

User Workload Monitoring inschakelen
apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-monitoring-config
  namespace: openshift-monitoring
data:
  config.yaml: |
    enableUserWorkload: true

Zodra dit actief is, kan een applicatie zijn eigen metrics laten oppikken via een ServiceMonitor:

ServiceMonitor voor een eigen applicatie
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: mijn-app-metrics
  namespace: productie-app
spec:
  selector:
    matchLabels:
      app: mijn-app
  endpoints:
    - port: metrics
      interval: 30s

Alerting: PrometheusRule

Alert-regel: hoge foutrate
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: mijn-app-alerts
  namespace: productie-app
spec:
  groups:
    - name: foutrate
      rules:
        - alert: HogeFoutrate
          expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05
          for: 10m
          labels:
            severity: warning
          annotations:
            summary: "Foutrate boven 5% gedurende 10 minuten"
Praktijktip: Test een nieuwe PrometheusRule eerst met een ruime for-duur en severity "warning" vóórdat je het op "critical" zet met een korte duur — zo voorkom je een stortvloed aan meldingen bij een nieuwe, nog niet goed afgestelde regel.

Logging: de moderne Loki/Vector-stack

2026-07-22T05:01:12.043422 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/
Vector verzamelt logs op elke node; LokiStack slaat ze op; de Console biedt een LogQL-doorzoekbare viewer.

Belangrijk om te weten als je recentere documentatie of cursusmateriaal tegenkomt: OpenShift Logging gebruikte historisch de EFK-stack (Elasticsearch, Fluentd, Kibana). Die aanpak is inmiddels volledig vervangen: de Elasticsearch Operator is sinds november 2025 uit de Operator Catalog verwijderd, en Kibana wordt sinds OpenShift 4.16 niet meer ondersteund. De huidige, aanbevolen stack (Red Hat OpenShift Logging 6.x) bestaat uit:

  • Vector — de log-collector, draait als DaemonSet op elke node (vervangt het oudere Fluentd)
  • LokiStack — de opslaglaag, via de Loki Operator (vervangt Elasticsearch)
  • OpenShift Console — ingebouwde log-viewer met LogQL-ondersteuning (vervangt Kibana), optioneel aan te vullen met een externe Grafana

Installatie

Loki Operator + Red Hat OpenShift Logging Operator installeren
# Via de OperatorHub in de Console, of via CLI:
oc apply -f - <<EOF
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: loki-operator
  namespace: openshift-operators-redhat
spec:
  channel: stable
  name: loki-operator
  source: redhat-operators
  sourceNamespace: openshift-marketplace
EOF

Een LokiStack aanmaken

lokistack.yaml
apiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
  name: logging-loki
  namespace: openshift-logging
spec:
  size: 1x.small
  storage:
    schemas:
      - version: v13
        effectiveDate: "2024-01-01"
    secret:
      name: loki-object-storage
      type: s3
  storageClassName: gp3-csi

De grootte (size) volgt een format Nx.formaat — bijvoorbeeld 1x.small voor kleinere clusters, oplopend voor grotere logvolumes. Dit is direct aan te passen zonder de onderliggende architectuur te wijzigen.

Logs routeren met ClusterLogForwarder

clusterlogforwarder.yaml: naar LokiStack én een extern systeem
apiVersion: observability.openshift.io/v1
kind: ClusterLogForwarder
metadata:
  name: instance
  namespace: openshift-logging
spec:
  serviceAccount:
    name: logging-collector
  outputs:
    - name: default-loki
      type: lokiStack
      lokiStack:
        target:
          name: logging-loki
          namespace: openshift-logging
    - name: extern-splunk
      type: splunk
      splunk:
        url: https://splunk.voorbeeld.nl:8088
  pipelines:
    - name: alle-logs
      inputRefs: [application, infrastructure, audit]
      outputRefs: [default-loki, extern-splunk]
Praktijktip: De ClusterLogForwarder is het centrale routeringsobject — je kunt in dezelfde configuratie tegelijk naar de interne LokiStack én naar een extern systeem (Splunk, Elasticsearch, Kafka) sturen, bijvoorbeeld als een compliance-eis vereist dat logs ook buiten het cluster bewaard blijven.

Logs doorzoeken met LogQL

Voorbeeldqueries in de Console log-viewer
{ log_type="application", kubernetes_namespace_name="productie-app" } |= "error"n{ log_type="audit" } | json | verb="delete"

Reporting: van ruwe data naar bruikbare rapportages

Monitoring en logging leveren de ruwe data; reporting gaat over het omzetten daarvan naar iets wat je periodiek kunt delen — met een team, een auditor, of een klant.

Recording rules: vooraf berekende metrics

Voor rapportages die regelmatig dezelfde, potentieel dure query herhalen (bijvoorbeeld een maandelijkse uptime-berekening), gebruik je een recording rule: Prometheus berekent en bewaart het resultaat vooraf, in plaats van de zware query telkens opnieuw uit te voeren.

Recording rule: dagelijkse foutrate
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: mijn-app-recording-rules
  namespace: productie-app
spec:
  groups:
    - name: dagelijkse-rapportage
      rules:
        - record: mijnapp:foutrate:24u
          expr: rate(http_requests_total{status=~"5.."}[24h])

Compliance-reporting

Voor SOC 1/SOC 2-doeleinden zijn audit-logs (via ClusterLogForwarder met inputRefs: [audit]) en bewaartermijnen van de LokiStack direct relevant bewijsmateriaal — zie onze uitgebreide boeken over SOC 1 en SOC 2 voor Kubernetes-platformen voor hoe deze technische logging zich vertaalt naar daadwerkelijke controles.

Dashboards delen

De OpenShift Console-dashboards zijn gebonden aan RBAC — een gebruiker ziet alleen metrics van namespaces waar die toegang toe heeft. Voor bredere, gedeelde rapportage (bijvoorbeeld een managementdashboard) koppel je vaak een externe Grafana-instantie aan dezelfde Prometheus/Thanos-databron, met eigen, losstaande toegangscontrole.

Relatie tot certificeringen

  • EX280 — basiskennis van de ingebouwde monitoring-stack en het raadplegen van logs is examenstof
  • EX380 — centrale logaggregatie over meerdere clusters (ClusterLogForwarder naar externe systemen) is expliciet examenstof op gevorderd niveau

Veelgestelde vragen

Moet ik nog steeds Elasticsearch gebruiken voor logging?

Nee — voor nieuwe implementaties is dat inmiddels afgeraden: de Elasticsearch Operator is niet meer beschikbaar in de Operator Catalog. Gebruik de LokiStack. Draai je nog een oudere Elasticsearch-gebaseerde installatie, plan dan een migratie; dit gebeurt niet automatisch bij een clusterupgrade.

Is Grafana nog nodig als de Console al dashboards heeft?

Voor de meeste gevallen niet — de ingebouwde Console-dashboards en log-viewer dekken het merendeel van de behoefte. Een losstaande Grafana is vooral zinvol voor sterk aangepaste dashboards, of om metrics over meerdere clusters heen samen te voegen op één plek.

Wat is het verschil tussen ClusterLogging en ClusterLogForwarder?

ClusterLogging (het oude, brede configuratieobject) is effectief verouderd; de huidige aanpak splitst verantwoordelijkheden op: LokiStack regelt opslag, ClusterLogForwarder regelt routering (pipelines, filters, outputs) — kleinere, specifiekere objecten in plaats van één allesomvattend object.