mirror of
https://github.com/warmbly/warmbly.git
synced 2026-10-28 00:02:31 +00:00
189 lines
5.3 KiB
YAML
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."
|