Monitoring15 dk okuma15 Kasım 2024

Prometheus + Grafana: Production-Ready Monitoring Kurulumu

Enterprise seviye monitoring stack'i sıfırdan kurma rehberi. Best practices, alert rules ve dashboard örnekleri.

İçindekiler

Prometheus + Grafana: Production-Ready Monitoring Kurulumu

Production ortamlarında monitoring olmadan çalışmak, uçak kullanırken gözlerinizi kapatmak gibi. Bu rehberde, 30+ cluster'da test ettiğim monitoring stack'ini paylaşıyorum.

Kubernetes'te Prometheus Kurulumu

Prometheus Operator kullanarak kolay kurulum yapın:

prometheus-install.shBash
# Prometheus Operator kurulumu
kubectl create namespace monitoring
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack \
  --namespace monitoring \
  --set grafana.adminPassword=admin123

Grafana Dashboard Konfigürasyonu

Temel dashboard'ları import edin ve customize edin:

  • Kubernetes Cluster Overview (ID: 315)
  • Kubernetes Pod Monitoring (ID: 6417)
  • Node Exporter Full (ID: 1860)
grafana-datasource.yamlYAML
apiVersion: v1
kind: ConfigMap
metadata:
  name: grafana-datasources
  namespace: monitoring
data:
  datasources.yaml: |
    apiVersion: 1
    datasources:
    - name: Prometheus
      type: prometheus
      url: http://prometheus-server:80
      access: proxy
      isDefault: true

Alert Rules Konfigürasyonu

Kritik metrikler için alert rules tanımlayın:

alert-rules.yamlYAML
groups:
- name: kubernetes.rules
  rules:
  - alert: HighCPUUsage
    expr: (100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)) > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High CPU usage detected"
      
  - alert: PodCrashLooping
    expr: rate(kube_pod_container_status_restarts_total[15m]) > 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "Pod is crash looping"

Slack Entegrasyonu

Alert'leri Slack'e göndermek için webhook kullanın:

slack-webhook.yamlYAML
apiVersion: v1
kind: Secret
metadata:
  name: alertmanager-slack
  namespace: monitoring
type: Opaque
stringData:
  webhook_url: "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"

İpucu: Alert'leri çok sık göndermeyin. Threshold'ları dikkatli ayarlayın.

Dikkat: Production'da admin şifresini değiştirmeyi unutmayın!

OU

Onur Ulusoy

Senior DevOps Engineer | BaseOpsCloud

5+ yıl enterprise deneyimi ile Kubernetes, cloud altyapı ve DevOps konularında uzman. Azure Solutions Architect Expert sertifikalı. 30+ Kubernetes cluster yönetimi deneyimi.

DevOps Danışmanlığı

Kubernetes & Cloud uzmanı

5+ yıl deneyim
30+ cluster
Azure Expert
KVKK uyumlu