Configuration options#
This page lists every field of MonitoringConfig, its type, and its default where the package ships one.
The configuration has two parts.
RequiredClusterConfig fields have no default and you must provide them.
DefaultableConfig fields have a value in DEFAULT_CONFIG and you override them through mergeConfig.
Configuration types#
MonitoringConfigThe fully resolved configuration consumed by
MonitoringChart. It extendsRequiredClusterConfigandDefaultableConfig.MonitoringConfigInputThe input accepted by
mergeConfig. It isRequiredClusterConfigplus aDeepPartialofDefaultableConfig.DeepPartial<T>A recursive partial in which every property, including nested properties, becomes optional.
Required cluster configuration#
These fields belong to RequiredClusterConfig and have no default.
namespace#
Field |
Type |
Description |
|---|---|---|
|
|
Kubernetes namespace the stack runs in. |
clusterName#
Field |
Type |
Description |
|---|---|---|
|
|
Value of the |
domains#
Field |
Type |
Description |
|---|---|---|
|
|
Grafana hostname, used for the ingress and the default |
|
|
IngressClass for the Grafana ingress. When omitted, the ingress carries no |
|
|
Create the Grafana ingress. Default |
|
|
Grafana |
s3#
Field |
Type |
Description |
|---|---|---|
|
|
Full S3 endpoint with protocol (used by Loki). |
|
|
S3 endpoint without protocol (used by Thanos). |
|
|
S3 region. |
|
|
Bucket name for Thanos metrics. |
|
|
Bucket name for Loki logs. |
smtp#
Field |
Type |
Description |
|---|---|---|
|
|
SMTP server hostname. |
|
|
SMTP server port. |
|
|
From address; also the alert recipient when |
|
|
SMTP username; falls back to |
|
|
SMTP password as a literal. Renders into the synthesized manifests in clear text. Prefer |
|
|
Read the password from a mounted secret instead. Takes precedence over |
|
|
Secret name in the monitoring namespace. |
|
|
Key within that secret holding the password. |
|
|
Alert recipients. Defaults to |
|
|
Extra mail headers on every notification, for example |
|
|
Require TLS for the SMTP connection. |
integrations#
These fields name external Crossplane and External Secrets Operator resources that the stack references but does not create. Each must already exist in your cluster. All are required strings with no default.
Field |
Type |
Description |
|---|---|---|
|
|
Crossplane |
|
|
ESO |
|
|
Remote key in that store providing |
|
|
ESO |
|
|
Remote key in that store providing |
Defaultable configuration#
These fields belong to DefaultableConfig.
Each one shows the value shipped in DEFAULT_CONFIG.
versions#
Field |
Type |
Default |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A version of latest omits the version field and lets the Helm controller resolve the newest chart.
The Alloy traces gateway uses versions.alloy; it has no separate version field.
retention#
Field |
Type |
Default |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The prometheusS3Raw, prometheusS35m, and prometheusS31h values are Thanos retention windows in days for raw, 5-minute, and 1-hour resolutions.
storage#
Field |
Type |
Default |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The tempo value sizes the Tempo write-ahead-log and local-blocks PVC; persisted trace blocks live in S3.
The className value is the StorageClass of every PVC in the stack: Prometheus, Alertmanager, Grafana, Loki backend, Loki write, Thanos Store, Thanos Compactor, and Tempo.
An empty string omits storageClassName, so the cluster’s default StorageClass applies.
Warning
Kubernetes does not move an existing PVC to another class.
A changed className applies only to PVCs created afterward; existing PVCs keep their class and their data.
replicas#
Field |
Type |
Default |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The Alloy traces gateway is fixed at one replica and has no replica field; tail sampling requires a single instance to see every span of a trace.
resources#
Each resources entry is a ResourceRequirements object with requests and limits, and each of those is a ResourceAllocation with cpu and memory.
Component |
Requests (cpu / memory) |
Limits (cpu / memory) |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The configReloader entry applies to the config-reloader sidecar of Prometheus, Alertmanager, and Alloy.
The thanosSidecar entry applies to the Thanos sidecar attached to Prometheus.
The tempo entry applies to the monolithic Tempo workload, and alloyTraces to the Alloy traces gateway.
tempo#
The tempo block configures the opt-in distributed tracing pillar.
It belongs to DefaultableConfig, so it defaults to disabled and you override only what you need.
When tempo.enabled is false, no tracing resources are created.
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Master switch; when false, no Tempo, gateway, bucket, or datasource is created. |
|
|
|
S3 bucket for trace blocks. Required when |
|
|
|
Tempo block retention, enforced by the compactor ( |
|
|
|
Keep traces slower than this many milliseconds. |
|
|
|
Keep this percentage of the remaining traces as a representative sample. |
mergeConfig throws tempo.bucket is required when tempo.enabled is true when you enable tracing without a bucket name.
The gateway always keeps traces that contain an error span, in addition to the slow and probabilistic policies above.
embedding#
The embedding block controls whether browsers may load Grafana inside an <iframe>.
It belongs to DefaultableConfig, so it defaults to disabled.
When embedding.enabled is false, grafana.ini carries no [security] section and Grafana keeps its own default of X-Frame-Options: deny.
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Master switch; when true, sets |
|
|
|
Origins allowed to frame Grafana, each an absolute origin such as |
mergeConfig throws embedding.frameAncestors must name at least one origin when embedding.enabled is true when you enable embedding without an origin.
The generated policy repeats Grafana’s own default directives and adds frame-ancestors.
It omits the $FORM_ACTION_ADDITIONAL_HOSTS placeholder from Grafana’s stock template, so form_action_additional_hosts has no effect while embedding is enabled.
stagingAlerts#
The stagingAlerts block controls demoted alert routing for staging namespaces that share the cluster’s monitoring stack.
It belongs to DefaultableConfig, so it defaults to disabled.
When stagingAlerts.enabled is false, the Alertmanager configuration carries no staging route or receiver.
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Master switch; when true, adds a |
|
|
|
Namespaces whose alerts route to the |
mergeConfig throws stagingAlerts.namespaces must name at least one namespace when stagingAlerts.enabled is true when you enable the block without a namespace.
The staging receiver mails the same address as the production receiver with a [STAGING] subject prefix.
The noise-drop routes for alertnames such as Watchdog keep precedence over the staging route.
deadMansSwitch#
The deadMansSwitch block forwards the always-firing Watchdog alert to an external heartbeat service.
It belongs to DefaultableConfig, so it defaults to disabled.
When deadMansSwitch.enabled is false, Watchdog goes to the null receiver.
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Master switch; when true, routes |
|
|
|
Secret in the monitoring namespace that holds the webhook URL; Prometheus Operator mounts it into Alertmanager. |
|
|
|
Key of the webhook URL in that Secret; Alertmanager reads it with |
|
|
|
|
mergeConfig throws deadMansSwitch.urlSecret needs a name and a key when deadMansSwitch.enabled is true when you enable the block without both.
The URL never appears in the synthesized manifests.
alertRouting#
The alertRouting block paces Alertmanager notifications.
It belongs to DefaultableConfig.
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Alertmanager |
The routes, receivers, and inhibition rules around this interval are listed in Alerts and routing.
externalUrls#
The externalUrls block sets the browser-facing addresses that notifications link to.
It belongs to DefaultableConfig.
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Alertmanager |
|
|
|
Prometheus |
An empty string keeps the operator default, which is the in-cluster Service address and does not open from a browser.
The setting changes only the links; the pods keep serving under the route prefix /.
Grafana carries an Alertmanager datasource, so the active alerts and silences are visible in Grafana as well.
traefik#
The traefik block adds opt-in monitoring for a Traefik ingress controller.
It belongs to DefaultableConfig, so it defaults to disabled.
When traefik.enabled is false, no Traefik resources are created.
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Master switch; when true, creates the |
|
|
|
Namespace Traefik runs in, used as the |
|
|
|
Ship the Traefik Grafana dashboard as the |
The PodMonitor selects pods labeled app.kubernetes.io/name: traefik and scrapes their metrics port at /metrics every 30 seconds.
mergeConfig throws traefik.namespace is required when traefik.enabled is true when you enable the block with an empty namespace.
longhorn#
The longhorn block adds opt-in monitoring for Longhorn storage.
It belongs to DefaultableConfig, so it defaults to disabled.
When longhorn.enabled is false, no Longhorn resources are created.
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Master switch; when true, creates the |
|
|
|
Namespace Longhorn runs in, used as the |
|
|
|
Ship the |
The ServiceMonitor selects services labeled app: longhorn-manager and scrapes their manager port.
The alert rules are listed in Alerts and routing.
mergeConfig throws longhorn.namespace is required when longhorn.enabled is true when you enable the block with an empty namespace.
priorityClasses#
The priorityClasses block sets the priorityClassName of every pod in the stack.
It belongs to DefaultableConfig.
Field |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Create the |
|
|
|
Class for pods that ingest data or route alerts. |
|
|
|
Class for pods that only serve queries. |
The two roles cover these workloads:
Role |
Workloads |
|---|---|
|
Prometheus, Alertmanager, Prometheus Operator, node-exporter, kube-state-metrics, Loki write, Loki backend, Loki gateway, Alloy, Tempo, Alloy traces gateway |
|
Grafana, Thanos Query, Thanos Store, Thanos Compactor, Loki read |
When you set priorityClasses.create to false, the classes named in capture and query must already exist in the cluster.
Kubernetes rejects pods that name a missing PriorityClass.
See also#
Override the defaults — how to change these values.
Embed Grafana in another application — how to enable and verify embedding.
Route staging alerts away from production — how to enable and verify staging alert routing.
Enable the infrastructure monitors — how to turn on the Traefik and Longhorn monitors.
Use your own priority classes — how to use your cluster’s own priority classes.
Alerts and routing — the shipped alert rules and the Alertmanager routing tree.
Sync waves — the rollout order of the resources.