WIP (2026Q2)
This is a new repository built around a first-class observability initiative for Materialize.
As of Materialize 27.0 (2026Q2), this repository is still under active development and not supported.

materialize-monitoring Helm Reference#

Unified observability stack for Materialize: Alloy-based pipeline, optional bundled backends (Loki / Thanos / Grafana / Alertmanager), and the dashboards / alerts / rules that consume the Materialize metrics surface.

Source Code#

Requirements#

Kubernetes: >=1.27.0-0

Storage Requirements#

Using Thanos or Loki (in the default bundled-stack profile) requires object storage (such as an AWS S3 bucket) for long-term storage.

In development, Thanos may use a PVC for less-reliable storage. Loki however will not run without object storage. You may consider Garage or RustFS or MinIO for manually provisioned object storage.

Included Subcharts#

RepositoryNameVersion
https://grafana.github.io/helm-chartsalloy(alloy-agent)^1.8.0
https://grafana.github.io/helm-chartsalloy(alloy-gateway)^1.8.0
https://kubernetes-sigs.github.io/metrics-servermetrics-server^3.13.0
oci://ghcr.io/grafana-community/helm-chartsgrafana^12.3.3
oci://ghcr.io/grafana-community/helm-chartsloki^15.0.0
oci://ghcr.io/grafana/helm-chartsgrafana-operator^5.22.2
oci://ghcr.io/prometheus-community/chartsalertmanager^1.25.0
oci://ghcr.io/prometheus-community/chartskube-state-metrics^7.3.0
oci://ghcr.io/thanos-community/helm-chartsthanos^0.11.0

Values#

Globals#

Values that are passed to all subcharts

KeyTypeDefaultDescription
global.imageRegistrystring""Override the registry for all images in this chart and its subcharts. Leave empty to use upstream defaults.
global.imagePullSecretslist
[]
Image pull secrets applied to every workload in this chart and its subcharts.

Main chart configuration#

Configuration for the main chart

KeyTypeDefaultDescription
nameOverridestring""Standard Helm name override.
fullnameOverridestring""Standard Helm fullname override.
profilestring"bundled-stack"Deployment profile that drives subchart enablement and pipeline defaults.

Subchart enablement (Helm tags)#

Group toggles for subchart enablement. Subchart enablement has two layers, in precedence order:

  1. Per-chart circuit breaker (<chart>.enabled). Each subchart dependency carries a condition: <chart>.enabled in Chart.yaml. The corresponding enabled: key is left commented-out under each subchart block in values.yaml; uncommenting it force-includes (true) or force-excludes (false) that chart regardless of any tag state. Helm evaluates condition: first and only falls through to tags when the path is absent from values, so this is a hard override.
  2. Helm tags (the tags: block). When no <chart>.enabled is set, enablement is decided by tags. Each dependency in Chart.yaml carries a group tag (e.g. bundled-backends) and a per-chart tag (e.g. loki); a dependency is included if any of its tags evaluates true (OR semantics). To opt one chart out of an otherwise-enabled group, set the group tag false and flip the per-chart tags individually — or use the circuit breaker.

Group ↔ chart mapping:

Group tagCharts
pipelinealloy-agent, alloy-gateway
bundled-backendsloki, thanos, grafana, alertmanager
cluster-metricskube-state-metrics, metrics-server
crdsprometheus-operator-crds

The tag defaults match profile=bundled-stack. Other profiles flip bundled-backends off and the pipeline exporters appropriately; see the profile preset values files under examples/.

KeyTypeDefaultDescription
tags.pipelinebooltrueEnable both Alloy releases (agent + gateway).
tags.bundled-backendsbooltrueEnable Loki, Thanos, Grafana, and Alertmanager as a group.
tags.cluster-metricsboolfalseEnable kube-state-metrics and metrics-server as a group.
tags.crdsboolfalseInstall Prometheus Operator CRDs.
tags.alloy-agentboolfalsePer-chart override: enable just the Alloy agent. OR'd with `tags.pipeline`.
tags.alloy-gatewayboolfalsePer-chart override: enable just the Alloy gateway. OR'd with `tags.pipeline`.
tags.lokiboolfalsePer-chart override: enable just Loki. OR'd with `tags.bundled-backends`.
tags.thanosboolfalsePer-chart override: enable just Thanos. OR'd with `tags.bundled-backends`.
tags.grafana-standaloneboolfalsePer-chart override: enable just Grafana standalone. OR'd with `tags.bundled-backends`.
tags.grafana-operatorboolfalsePer-chart override: enable just Grafana operator. OR'd with `tags.bundled-backends`.
tags.alertmanagerboolfalsePer-chart override: enable just Alertmanager. OR'd with `tags.bundled-backends`.
tags.kube-state-metricsboolfalsePer-chart override: enable just kube-state-metrics. OR'd with `tags.cluster-metrics`.
tags.metrics-serverboolfalsePer-chart override: enable just metrics-server. OR'd with `tags.cluster-metrics`.
tags.prometheus-operator-crdsboolfalsePer-chart override: enable just the Prometheus Operator CRDs. OR'd with `tags.crds`.

Materialize Integration#

Materialize-specific configuration values.

KeyTypeDefaultDescription
materialize.namespaceslist
[]
Namespaces to scrape Materialize workloads from. Empty list means all namespaces the chart can read.
materialize.environmentLabelstring""Logical environment label applied to all scraped Materialize telemetry.
materialize.podMonitor.enabledbooltrueDeploy a PodMonitor to collect Materialize metrics.
materialize.podMonitor.environmentdEndpointslist
[
  "/metrics/public"
]
Which endpoints to scrape on environmentd pods. Note that `/metrics/public` did not become available until v26.25. For earlier versions, you may wish to use `/metrics` instead.
materialize.deploymentModestring"self-managed"Deployment mode normalization hint. One of: `self-managed`, `cloud`. Drives relabeling rules in the pipeline.

Pipeline configuration#

Pipeline configuration values that drive Alloy behavior and defaults.

The Alloy pipeline is the flagship deliverable of this chart. Pipeline configuration is expressed in values, rendered into ConfigMaps under templates/pipelines/, and consumed by the Alloy agent and gateway release instances.

Cardinality reduction configuration#

Configuration for cardinality reduction in Alloy gateway

KeyTypeDefaultDescription
pipeline.cardinalityReduction.enabledbooltrueWhether the gateway applies cardinality-reduction relabeling before egress.
pipeline.cardinalityReduction.demoteLabelslist
[
  "pod",
  "node",
  "zone",
  "region"
]
Labels demoted from metric labels to structured metadata (Loki) or dropped (Datadog/Prometheus remote-write). Default mirrors the Cloud team's policy.

Exporter configuration#

Configuration for exporters attached to the Alloy gateway

KeyTypeDefaultDescription
pipeline.exporters.prometheusRemoteWrite.enabledboolfalseEnable Prometheus remote_write exporter on the gateway.
pipeline.exporters.prometheusRemoteWrite.endpointstring""Prometheus-compatible remote_write endpoint URL.
pipeline.exporters.prometheusRemoteWrite.basicAuth.usernameSecretobject
{}
Secret reference for remote_write basic-auth username. `{name, key}` form.
pipeline.exporters.prometheusRemoteWrite.basicAuth.passwordSecretobject
{}
Secret reference for remote_write basic-auth password. `{name, key}` form.
pipeline.exporters.otlp.enabledboolfalseEnable OTLP exporter on the gateway.
pipeline.exporters.otlp.endpointstring""OTLP gRPC endpoint URL.
pipeline.exporters.bundled.enabledboolfalseEnable export to the bundled Loki / Thanos backends. Implied when `profile=bundled-stack`.

Monitoring configurations#

Configuration for dashboards, rules, and alerts

Underlying content is generated into pre-rendered/ from the sources under packages/ and embedded via .Files.Get.

KeyTypeDefaultDescription
dashboards.config.grafana.enabledbooltrueInstall the bundled Grafana dashboards. Requires the Grafana operator or a writable Grafana instance.
dashboards.config.grafana.modestring"operator"Grafana deployment mode, either "standalone" (the bundled Grafana chart) or "operator" (a separate Grafana Operator instance).
dashboards.config.grafana.manifest.resyncPeriodstring"5m"Time to sync the dashboard from the manifest
dashboards.config.grafana.manifest.instanceSelectorobject
{}
Non-default label selector for a Grafana-operator Grafana instance
dashboards.config.grafana.manifest.apiTargetstring"dashboard.grafana.app/v2"Dashboard API Version (v2 or v2beta1)
dashboards.config.datadog.enabledboolfalseInstall the bundled Datadog dashboards. Requires Datadog API credentials configured out-of-band.
dashboards.selectedlist
[
  "env-*"
]
List of dashboard patterns to render

Rule configuration#

Configuration for rules

KeyTypeDefaultDescription
config.rules.prometheus.enabledbooltrueInstall the bundled Prometheus recording and alerting rules as PrometheusRule resources.
config.rules.loki.enabledboolfalseInstall the bundled Loki rules.
config.rules.thanos.enabledboolfalseInstall the bundled Thanos rules.

Alert configuration#

Configuration for alerts

KeyTypeDefaultDescription
config.alerts.enabledbooltrueInstall the bundled Alertmanager routing and templates.

Scraper configuration#

Configuration for scrapers

KeyTypeDefaultDescription
config.scrapers.enabledbooltrueInstall ServiceMonitors / Alloy scrape configs for Materialize and adjacent components.

Grafana connection configuration#

How to talk to a grafana instance

KeyTypeDefaultDescription
connections.grafana.modestring"bundled"How this establishes its connection to Grafana. `bundled` means it uses the grafana provisioning chart.
connections.grafana.labelsobject
{}
Labels applied to Grafana instance
connections.grafana.external.urlstring""External grafana uri
connections.grafana.external.adminPasswordobject
{}
Secret for Grafana admin password
connections.grafana.external.adminUserobject
{}
Secret for Grafana admin user
connections.grafana.external.apiKeyobject
{}
Secret for Grafana API key

Bundled subchart configurations#

Configuration for bundled subcharts

Alloy Agent#

Alloy collector instance running close to scrape targets. Pre-egress shaping happens here.

Alloy Gateway#

Alloy gateway instance. Cardinality reduction and backend-specific egress happen here.

Loki#

Bundled Loki backend for logs.

Thanos#

Bundled Thanos backend for long-term metrics.

KeyTypeDefaultDescription
thanos.queryobject
{
  "enabled": true
}
Thanos Query configuration. Query provides a PromQL query endpoint.
thanos.receiveobject
{
  "enabled": true,
  "mode": "standalone"
}
Thanos receive configuration. Receive provides a Prometheus remote_write-compatible endpoint.
thanos.storegatewayobject
{
  "enabled": true
}
Thanos Store Gateway configuration. Store Gateway provides historical block querying.
thanos.compactorobjectenabled with default retention policiesThanos Compactor configuration. Compactor provides block compaction and downsampling.
thanos.compactor.retentionobject
{
  "resolution1h": "365d",
  "resolution5m": "90d",
  "resolutionRaw": "30d"
}
Retention policies for Thanos Compactor downsampled data
thanos.queryFrontendobject
{
  "enabled": false
}
Thanos Query Frontend configuration. Query Frontend provides query parallelization and result caching. Only required for production.
thanos.rulerobject
{
  "enabled": false
}
Thanos Ruler configuration. Ruler provides alerting and recording rules evaluation.

Grafana Operator#

Bundled Grafana-operator for managing Grafana instances.

Upstream references:

KeyTypeDefaultDescription
grafana-operator.crdsobject
{
  "immutable": false
}
CRD behavior

Grafana Instance#

Bundled Grafana for dashboard rendering.

Upstream reference:

Alertmanager#

Bundled Alertmanager for routing alerts emitted by the rule packages.

Kube State Metrics#

kube-state-metrics for Kubernetes resource-state metrics consumed by Materialize-adjacent dashboards.

Metrics Server#

metrics-server for pod and node resource usage; only needed when the cluster does not already ship one.

KeyTypeDefaultDescription
metrics-server.replicasint1Number of replicas for metrics-server.