Skip to main content

⚙️ Complete configuration reference

This page lists all 145 configuration keys accepted by the current kwatch release. It is generated from the versioned config-catalog.tsv shipped with kwatch.sh, so it stays aligned with the binary and guided setup.

For practical explanations and examples, start with General configuration. Apply configuration through kwatch.sh and validate it with kwatch lint.

The Catalog default column is the value shipped to the guided installer and Helm chart. A direct binary deployment can have a method-specific default; the main example is crd.enabled, which stays off until a CRD is installed while the chart and interactive installer enable it for you.

Secrets: any catalog field marked as sensitive by the provider catalog must use ${file:/absolute/path} from a mounted Kubernetes Secret. Do not put credentials, tokens, passwords, API keys, or webhook URLs directly in YAML.

KeyTypeCatalog defaultCategoryDescriptionStatusReplacement
workersinteger1PerformanceNumber of Kubernetes work queues processed in parallel.active
resyncSecondsinteger0PerformancePeriodic safety resync interval in seconds; zero keeps event-driven mode.active
maxRecentLogLinesinteger50AlertsMaximum recent log lines attached to an incident.active
containerRestartThresholdinteger0AlertsAlert when a container reaches this cumulative restart count; zero disables it.active
includeEventsbooleantrueAlertsInclude recent Kubernetes events in incident messages.active
includeLogsbooleantrueAlertsInclude recent container logs in incident messages.active
namespaceslistallScopeComma-separated namespaces to watch; leave empty to watch every namespace.active
namespaceSelectorstringemptyScopeKubernetes label selector used to choose namespaces.active
reasonslistallScopeComma-separated event reasons to allow or exclude with a leading !.active
ignoreFailedGracefulShutdownbooleantrueNoise reductionIgnore forceful container termination during an intentional shutdown.active
ignoreDisruptionTerminationsbooleantrueNoise reductionIgnore pods being deliberately evicted, preempted, or disrupted.active
adaptiveThresholdsbooleantrueNoise reductionAdd bounded grace during normal partial rollouts.active
reportStartupBaselinebooleantrueNoise reductionSummarize issues that already existed when kwatch started.active
correlation.windowinteger10Incident memoryMinutes in which related signals are correlated.active
correlation.lifecycleIntervalinteger1Incident memoryMinutes between lifecycle and resolution sweeps.active
correlation.resolveHoldDowninteger300Incident memorySeconds a signal must stay healthy before resolving.active
correlation.cooldownMinutesinteger10Incident memoryMinimum minutes before the same incident can notify again.active
correlation.maxBaselineinteger5000Incident memoryMaximum persisted baseline entries.active
correlation.escalationjson{"enabled":true,"tiers":[3,10]}Incident memoryJSON object controlling restart-count severity escalation.active
correlation.renotifyjson{"maxPerIncident":3}Incident memoryJSON object controlling periodic re-notification.active
severityByOwnerKindjson{}AlertsJSON map overriding severity by workload owner kind.active
severityByReasonjson{}AlertsJSON map overriding severity by detected reason.active
smartGrouping.windowSecondsinteger60Noise reductionSeconds for grouping related failures into one notification.active
smartGrouping.namespaceFanOutThresholdinteger3Noise reductionOwners failing alike before a namespace fan-out incident is created.active
inhibition.nodeSuppressesPodsbooleantrueNoise reductionSuppress pod symptoms while their node has an active incident.active
nodeMonitor.enabledbooleantrueMonitorsWatch node readiness and pressure conditions.active
nodeMonitor.sustainedMinutesinteger3MonitorsMinutes a node condition must persist before alerting.active
pvcMonitor.enabledbooleantrueMonitorsWatch mounted PVC usage and storage pressure.active
pvcMonitor.intervalinteger5MonitorsMinutes between PVC usage checks.active
pvcMonitor.thresholdfloat80MonitorsPVC usage percentage that creates a warning.active
pvcMonitor.criticalThresholdfloat90MonitorsPVC usage percentage that creates a high-severity alert.active
pvcMonitor.clearThresholdfloat75MonitorsPVC usage percentage below which an alert resolves.active
rolloutMonitor.enabledbooleantrueMonitorsWatch Deployments for stuck rollouts.active
rolloutMonitor.sustainedMinutesinteger5MonitorsMinutes a Deployment may remain unavailable before alerting.active
statefulSetMonitor.enabledbooleantrueMonitorsWatch StatefulSets for stuck updates.active
statefulSetMonitor.sustainedMinutesinteger5MonitorsMinutes a StatefulSet may remain unavailable before alerting.active
daemonSetMonitor.enabledbooleantrueMonitorsWatch DaemonSets for unavailable pods and scheduling failures.active
daemonSetMonitor.sustainedMinutesinteger5MonitorsMinutes a DaemonSet may remain unavailable before alerting.active
jobMonitor.enabledbooleantrueMonitorsWatch Jobs for failures and deadline problems.active
cronJobMonitor.enabledbooleantrueMonitorsWatch CronJobs for missed or suspended work.active
cronJobMonitor.sustainedMinutesinteger5MonitorsMinutes a CronJob condition must persist before alerting.active
hpaMonitor.enabledbooleantrueMonitorsWatch HPAs that remain constrained or maxed out.active
hpaMonitor.sustainedMinutesinteger20MonitorsMinutes an HPA must remain constrained before alerting.active
serviceMonitor.enabledbooleantrueMonitorsWatch Services with no ready backends.active
ingressMonitor.enabledbooleantrueMonitorsWatch Ingress backend availability.active
networkPolicyMonitor.enabledbooleantrueMonitorsDetect evidence of restrictive NetworkPolicies.active
admissionWebhookMonitor.enabledbooleantrueMonitorsWatch admission webhook availability and failures.active
controlPlaneMonitor.enabledbooleantrueMonitorsWatch API server and control-plane health signals.active
clusterResourceMonitor.enabledbooleantrueMonitorsWatch quota, namespace, and lease lifecycle failures.active
clusterResourceMonitor.sustainedMinutesinteger10MonitorsMinutes a terminating namespace or quota condition must persist before alerting.active
clusterResourceMonitor.nodeLeaseStaleSecondsinteger90MonitorsSeconds without a node lease renewal before reporting a stale heartbeat.active
heartbeatMonitor.enabledbooleanfalseMonitorsSend a periodic external dead-man heartbeat.active
heartbeatMonitor.intervalinteger300MonitorsSeconds between heartbeat notifications.active
scheduleMonitor.enabledbooleantrueMonitorsInclude scheduling delay and unschedulable diagnostics.active
oomMonitor.enabledbooleantrueMonitorsTrack repeating OOM kills independently from current pod state.active
oomMonitor.thresholdinteger3MonitorsOOM kills within the window before raising a repeating-OOM incident.active
oomMonitor.windowMinutesinteger60MonitorsSliding window used for repeating OOM detection.active
pendingPodMonitor.enabledbooleantrueMonitorsWatch pods that remain Pending.active
pendingPodMonitor.thresholdinteger300MonitorsSeconds a pod may remain Pending before alerting.active
notReadyMonitor.enabledbooleantrueMonitorsWatch running pods that remain not ready.active
pdbMonitor.enabledbooleantrueMonitorsWatch PodDisruptionBudgets that block voluntary disruption.active
pdbMonitor.sustainedMinutesinteger5MonitorsMinutes a PDB violation must persist before alerting.active
nodeResourceMonitor.enabledbooleantrueMonitorsWatch node overcommit and filesystem/inode pressure.active
nodeResourceMonitor.intervalSecondsinteger300MonitorsSeconds between node resource checks.active
nodeResourceMonitor.cpuWarningfloat2.0MonitorsCPU requested-to-capacity ratio that raises a warning.active
nodeResourceMonitor.cpuCriticalfloat4.0MonitorsCPU requested-to-capacity ratio that raises a critical alert.active
nodeResourceMonitor.memWarningfloat2.0MonitorsMemory requested-to-capacity ratio that raises a warning.active
nodeResourceMonitor.memCriticalfloat4.0MonitorsMemory requested-to-capacity ratio that raises a critical alert.active
nodeResourceMonitor.filesystemWarningPercentfloat90MonitorsNode filesystem usage warning threshold.active
nodeResourceMonitor.filesystemCriticalPercentfloat95MonitorsNode filesystem usage critical threshold.active
nodeResourceMonitor.inodeWarningPercentfloat90MonitorsNode inode usage warning threshold.active
nodeResourceMonitor.inodeCriticalPercentfloat95MonitorsNode inode usage critical threshold.active
runtimeMetricsMonitor.enabledbooleanfalseMonitorsUse metrics.k8s.io when available for workload usage diagnostics.active
runtimeMetricsMonitor.intervalSecondsinteger60MonitorsSeconds between runtime metrics checks.active
runtimeMetricsMonitor.memoryWarningPercentinteger90MonitorsMemory usage warning percentage when metrics.k8s.io is available.active
runtimeMetricsMonitor.memoryCriticalPercentinteger100MonitorsMemory usage critical percentage when metrics.k8s.io is available.active
runtimeMetricsMonitor.cpuWarningPercentinteger90MonitorsCPU usage warning percentage when metrics.k8s.io is available.active
runtimeMetricsMonitor.cpuCriticalPercentinteger100MonitorsCPU usage critical percentage when metrics.k8s.io is available.active
clusterAutoscalerMonitor.enabledbooleantrueMonitorsWatch built-in cluster-autoscaler evidence from Kubernetes resources and events.active
tlsMonitor.thresholdinteger30MonitorsDays before certificate expiry to warn.active
tlsMonitor.criticalThresholdinteger3MonitorsDays before certificate expiry for a high-severity alert.active
controlPlaneMonitor.intervalSecondsinteger30MonitorsSeconds between API and control-plane health checks.active
controlPlaneMonitor.apiServerLatencyWarningMsinteger1000MonitorsAPI readyz latency warning threshold in milliseconds.active
controlPlaneMonitor.failureThresholdinteger2MonitorsConsecutive control-plane failures before alerting.active
controlPlaneMonitor.recoveryThresholdinteger2MonitorsConsecutive successful checks before resolving.active
kubeletTelemetryMonitor.enabledbooleantrueMonitorsRead built-in kubelet telemetry without an agent.active
kubeletTelemetryMonitor.intervalSecondsinteger60MonitorsSeconds between built-in kubelet telemetry sweeps.active
kubeletTelemetryMonitor.persistStatebooleantrueMonitorsPersist telemetry counters across restarts.active
kubeletTelemetryMonitor.failureThresholdinteger2MonitorsConsecutive kubelet telemetry failures before alerting.active
kubeletTelemetryMonitor.recoveryThresholdinteger2MonitorsConsecutive successful telemetry checks before resolving.active
kubeletTelemetryMonitor.memoryWarningPercentfloat90MonitorsKubelet memory usage warning threshold.active
kubeletTelemetryMonitor.memoryCriticalPercentfloat100MonitorsKubelet memory usage critical threshold.active
kubeletTelemetryMonitor.ephemeralStorageWarningPercentfloat90MonitorsEphemeral-storage usage warning threshold.active
kubeletTelemetryMonitor.ephemeralStorageCriticalPercentfloat95MonitorsEphemeral-storage usage critical threshold.active
kubeletTelemetryMonitor.cpuWarningPercentfloat90MonitorsCPU usage warning threshold from kubelet telemetry.active
kubeletTelemetryMonitor.cpuCriticalPercentfloat100MonitorsCPU usage critical threshold from kubelet telemetry.active
kubeletTelemetryMonitor.cpuThrottlingWarningPercentfloat25MonitorsCPU throttling warning threshold.active
kubeletTelemetryMonitor.cpuThrottlingCriticalPercentfloat50MonitorsCPU throttling critical threshold.active
kubeletTelemetryMonitor.psiWarningPercentfloat20MonitorsPressure stall warning threshold.active
kubeletTelemetryMonitor.psiCriticalPercentfloat50MonitorsPressure stall critical threshold.active
kubeletTelemetryMonitor.networkErrorRateWarningfloat1MonitorsNetwork error rate warning threshold.active
kubeletTelemetryMonitor.networkErrorRateCriticalfloat10MonitorsNetwork error rate critical threshold.active
kubeletTelemetryMonitor.runtimeErrorRateWarningfloat1MonitorsContainer runtime error rate warning threshold.active
kubeletTelemetryMonitor.runtimeErrorRateCriticalfloat10MonitorsContainer runtime error rate critical threshold.active
tlsMonitor.enabledbooleanfalseMonitorsWatch TLS certificates before expiry; reads certificate Secrets.active
activeProbeMonitor.enabledbooleanfalseMonitorsRun explicitly configured application probes.active
activeProbeMonitor.intervalSecondsinteger30MonitorsSeconds between active probe rounds.active
activeProbeMonitor.timeoutSecondsinteger5MonitorsTimeout for each active probe.active
activeProbeMonitor.failureThresholdinteger3MonitorsConsecutive probe failures before alerting.active
activeProbeMonitor.recoveryThresholdinteger2MonitorsConsecutive successes before resolving a probe incident.active
activeProbeMonitor.autoServicesbooleanfalseMonitorsProbe discoverable Service ports automatically; opt in to avoid unexpected traffic.active
activeProbeMonitor.httpjson[]MonitorsJSON array of HTTP probe targets with optional paths, headers, and latency limits.active
activeProbeMonitor.tcpjson[]MonitorsJSON array of TCP probe targets.active
activeProbeMonitor.dnsjson[]MonitorsJSON array of DNS probe targets.active
upgrader.disableUpdateCheckbooleanfalseOperationsDisable the update notification.active
telemetry.enabledbooleantrueOperationsSend the adoption heartbeat.active
maintenance.enabledbooleantrueOperationsHonor maintenance annotations while preserving cluster-level alerts.active
maintenance.annotationstringkwatch.io/maintenanceOperationsAnnotation that marks deliberate maintenance on a resource.active
maintenance.untilAnnotationstringkwatch.io/maintenance-untilOperationsOptional annotation containing the maintenance expiry timestamp.active
healthCheck.diagnosticsbooleanfalseOperationsExpose diagnostic endpoints such as incidents and test-alert.active
healthCheck.pprofbooleanfalseOperationsExpose Go profiling endpoints; keep disabled in production.active
app.clusterNamestringemptyOperationsCluster name shown in notifications.active
app.proxyURLstringemptyOperationsOptional proxy for outbound provider requests.active
app.disableStartupMessagebooleanfalseOperationsDisable the startup notification.active
app.logFormatterstringtextOperationsLog output format: text or json.active
app.insecureSkipTLSVerifybooleanfalseSecuritySkip TLS verification for outbound providers; strongly discouraged.active
app.caBundlePathstringemptySecurityPath to a mounted PEM bundle for outbound provider TLS.active
healthCheck.enabledbooleantrueOperationsExpose the built-in health endpoint.active
healthCheck.portinteger8060OperationsPort for health and optional diagnostic endpoints.active
crd.enabledbooleantrueOperationsWatch KwatchConfig and supported CRD status conditions; restart kwatch when configuration changes; enabled by the interactive installer after installing the CRD.active
crd.failureConditionslistemptyOperationsAdditional CRD condition rules such as Ready=False or Degraded=True.active
crd.graphReferenceslistemptyOperationsOptional CRD references used by dependency and impact analysis.active
auditLog.enabledbooleantrueOperationsWrite structured incident lifecycle records to the configured audit sink.active
auditLog.outputstringstdoutOperationsAudit output: stdout or a supported output sink.active
templatesjson{}OperationsJSON map of optional reason-specific message templates.active
runbooksjson{}OperationsJSON map of reason-to-runbook URLs.active
silencesjson[]Noise reductionJSON array of scoped silence rules, including eventMessages substring matches for attached Kubernetes Events.active
ignoreContainerNameslistlegacyCompatibilityLegacy container suppression field.deprecatedsilences
ignorePodNameslistlegacyCompatibilityLegacy pod-name suppression field.deprecatedsilences
ignoreLogPatternslistlegacyCompatibilityLegacy log suppression field.deprecatedsilences
ignoreContainerMessageslistlegacyCompatibilityLegacy container-message suppression field.deprecatedsilences
ignoreNodeReasonslistlegacyCompatibilityLegacy node-reason suppression field.deprecatedsilences
ignoreNodeMessageslistlegacyCompatibilityLegacy node-message suppression field.deprecatedsilences
heartbeatMonitor.urlstringemptySecurityExternal dead-man heartbeat URL; stored only through a mounted Secret.secret
healthCheck.diagnosticsTokenstringemptySecurityBearer token for diagnostic endpoints; stored only through a mounted Secret.secret