Files
warmbly/deploy/worker-cluster/monitoring/values.yaml
T

189 lines
5.3 KiB
YAML

# Lightweight kube-prometheus-stack for worker cluster
# No Grafana - use main cluster's Grafana with this Prometheus as data source
#
# Install with:
# helm install prometheus-stack prometheus-community/kube-prometheus-stack \
# --namespace monitoring --create-namespace \
# --values values.yaml
# Disable Grafana - use main cluster's Grafana
grafana:
enabled: false
# Minimal Prometheus configuration
prometheus:
enabled: true
prometheusSpec:
retention: 7d # Shorter retention for lightweight setup
retentionSize: "10GB"
scrapeInterval: 60s # Less frequent scraping to reduce load
evaluationInterval: 60s
# Minimal resources
resources:
requests:
memory: 256Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 500m
# Smaller storage
storageSpec:
volumeClaimTemplate:
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 15Gi
# Enable remote-write receiver if you want to receive metrics from other sources
enableRemoteWriteReceiver: false
# Monitor all namespaces
serviceMonitorSelectorNilUsesHelmValues: false
podMonitorSelectorNilUsesHelmValues: false
ruleSelectorNilUsesHelmValues: false
# Expose Prometheus for main cluster's Grafana to connect
# Option 1: NodePort (simple, use with firewall rules)
# Option 2: LoadBalancer (if available)
# Option 3: VPN/private network access
service:
type: ClusterIP # Change to NodePort or LoadBalancer if needed
port: 9090
# nodePort: 30090 # Uncomment if using NodePort
# Disable Alertmanager - use main cluster's Alertmanager
alertmanager:
enabled: false
# Node exporter - runs on every worker node
nodeExporter:
enabled: true
resources:
requests:
memory: 16Mi
cpu: 10m
limits:
memory: 32Mi
cpu: 50m
# kube-state-metrics - single instance
kubeStateMetrics:
enabled: true
kube-state-metrics:
resources:
requests:
memory: 32Mi
cpu: 10m
limits:
memory: 64Mi
cpu: 50m
# Prometheus Operator - manages Prometheus CRDs
prometheusOperator:
enabled: true
resources:
requests:
memory: 64Mi
cpu: 50m
limits:
memory: 128Mi
cpu: 100m
# Disable control plane monitoring (not accessible by default)
kubeApiServer:
enabled: false
kubeControllerManager:
enabled: false
kubeScheduler:
enabled: false
kubeProxy:
enabled: false
kubeEtcd:
enabled: false
coreDns:
enabled: true
# Minimal alerting rules for worker nodes
additionalPrometheusRulesMap:
worker-node-rules:
groups:
- name: worker-node-health
rules:
# High worker node CPU
- alert: WorkerNodeHighCPU
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 10m
labels:
severity: warning
cluster: workers
annotations:
summary: "Worker node {{ $labels.instance }} CPU > 85%"
description: "Worker node has sustained high CPU usage."
# Low worker node memory
- alert: WorkerNodeLowMemory
expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 < 15
for: 5m
labels:
severity: warning
cluster: workers
annotations:
summary: "Worker node {{ $labels.instance }} memory < 15% available"
description: "Worker node is running low on memory."
# Worker node disk space
- alert: WorkerNodeDiskFull
expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 < 15
for: 5m
labels:
severity: warning
cluster: workers
annotations:
summary: "Worker node {{ $labels.instance }} disk < 15% free"
description: "Worker node root filesystem is running low on space."
# Node not ready
- alert: WorkerNodeNotReady
expr: kube_node_status_condition{condition="Ready",status="true"} == 0
for: 5m
labels:
severity: critical
cluster: workers
annotations:
summary: "Worker node {{ $labels.node }} is not ready"
description: "Worker node has been in NotReady state for 5 minutes."
- name: worker-pod-health
rules:
# Worker pod not running
- alert: WorkerPodNotRunning
expr: kube_pod_status_phase{namespace="warmbly", pod=~"worker.*", phase!="Running"} > 0
for: 5m
labels:
severity: critical
cluster: workers
annotations:
summary: "Worker pod {{ $labels.pod }} is not running"
description: "Worker pod is in {{ $labels.phase }} state."
# Worker pod restarting
- alert: WorkerPodRestarting
expr: increase(kube_pod_container_status_restarts_total{namespace="warmbly", pod=~"worker.*"}[1h]) > 3
for: 0m
labels:
severity: warning
cluster: workers
annotations:
summary: "Worker pod {{ $labels.pod }} restarting frequently"
description: "Worker pod has restarted more than 3 times in the last hour."