Monitoring

Services managed by Stackable support monitoring via Prometheus.

Prometheus operator

Stackable does not currently provide Prometheus, instead we suggest using Prometheus operator.

Installing Prometheus

Prometheus Operator can be installed via the Helm chart kube-prometheus-stack, which includes both the Operator, and a basic Prometheus configuration that should be sufficient for basic use.

$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm upgrade prometheus prometheus-community/kube-prometheus-stack --install --version 31.0.0

When using the kube-prometheus-stack Helm chart (as above), an additional ServiceMonitor must be applied to the Kubernetes cluster, which discovers services registered to the Kubernetes cluster:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: scrape-label
  labels:
    release: prometheus
spec:
  endpoints:
  - port: metrics
  jobLabel: app.kubernetes.io/instance
  selector:
    matchLabels:
      prometheus.io/scrape: "true"

Querying Prometheus

Prometheus should now be accessible inside of the Kubernetes cluster, and can be access can be forwarded using kubectl:

$ kubectl port-forward svc/prometheus-kube-prometheus-prometheus 9090

Afterwards, we can go to http://localhost:9090/ to access the query UI.

Existing Prometheus

An existing Prometheus installation can also be used to monitor Stackable services.

In this case, it should be configured to scrape Kubernetes Service objects with the label prometheus.io/scrape: "true". For more details, see their official documentation for <kubernetes_sd_config>.