📊Metrics

Grafana displaying Prometheus metrics

This guide assumes you're familiar with Prometheus and how to work with its metrics ecosystem. We won't provide guides on how to fetch Kubernetes metrics.

Most components of the Toucan Stack expose Prometheus-compatible metrics endpoints by default, allowing administrators to monitor system performance and health effectively.

How to enable metrics ports

Override the values of the Helm Charts with:

yaml: values.override.yaml
nginx:
  metrics:
    enabled: true

layout:
  metrics:
    enabled: true

dataset:
  metrics:
    enabled: true

gotenberg:
  metrics:
    enabled: true

spicedb:
  metrics:
    enabled: true

curity:
  admin:
    metrics:
      enabled: true

  runtime:
    metrics:
      enabled: true

vault:
  server:
    metrics:
      enabled: true

postgresql:
  metrics:
    enabled: true

layout-redis:
  metrics:
    enabled: true

laputa-redis:
  metrics:
    enabled: true

impersonate-redis:
  metrics:
    enabled: true

minio:
  metrics:
    enabled: true

We are not providing any metrics for MongoDB at the moment. We recommend using MongoDB Exporter by Percona as a sidecar container to export metrics from your MongoDB instance.

How to access the metrics endpoints

Here's a list of endpoints (accessible through the associated Kubernetes Service) you can use:

Component
Service port name
Service port number
Path

nginx

metrics

9113

/metrics

postgresql

http-metrics

9187

/metrics

vault (secret manager)

http

8200

/v1/sys/metrics

curity admin (auth service)

metrics

4466

/metrics

curity runtime (auth service)

metrics

4466

/metrics

dataset

http

3000

/metrics

layout

http

3000

/metrics

spicedb (authz service)

metrics

9090

/metrics

gotenberg (pdf rendering service)

http

80

/prometheus/metrics

minio (storage)

minio-api

9000

/minio/v2/metrics/cluster /minio/v2/metrics/node

redis

http-metrics

9121

/metrics

How to consume the metrics endpoints

Using Prometheus CRDs (Prometheus Operator, Grafana Alloy)

We highly recommend using Prometheus CRDs such as those provided by Prometheus Operator or Grafana Alloy to dynamically manage scraping targets.

Even if you have an external Prometheus, you can deploy Grafana Alloy to consume the metrics and forward to your external Prometheus.

To dynamically configure scraping rules, you can set these values in the values.override.yaml file:

yaml: values.override.yaml
nginx:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

layout:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

dataset:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

gotenberg:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

spicedb:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

curity:
  admin:
    metrics:
      enabled: true
      serviceMonitor:
        enabled: true

  runtime:
    metrics:
      enabled: true
      serviceMonitor:
        enabled: true

vault:
  server:
    metrics:
      enabled: true
      serviceMonitor:
        enabled: true

postgresql:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

layout-redis:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

laputa-redis:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

impersonate-redis:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

minio:
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

Which will automatically generate a ServiceMonitor object for each component, and configure the Prometheus Operator to scrape them.

Statically

If you have deployed Prometheus in the same cluster as the Toucan Stack, you can reference the services using <service name>.<namespace>.svc.cluster.local. In your prometheus config file, you can add the following:

yaml: prometheus.yaml
scrape_configs:
  - job_name: dataset
    metrics_path: /metrics
    scheme: http
    static_configs:
      - targets:
          - toucan-stack-dataset.toucan.svc.cluster.local:3000

This approach works if Prometheus is deployed in the same Kubernetes cluster. For external Prometheus instances, again consider using Grafana Alloy as a relay.

More information can be found in the Prometheus documentation.

Displaying the metrics

If you have deployed Prometheus, you can use Grafana to display the metrics. You can find dashboards on Grafana.

Last updated

Was this helpful?