Monitoring dan Logging di Kubernetes

1. Mengapa Monitoring dan Logging Penting?
- Memastikan Kesehatan Cluster dan Aplikasi: Monitoring membantu mendeteksi masalah sebelum berdampak signifikan pada aplikasi atau pengguna.
- Debugging dan Pemecahan Masalah: Logging menyediakan rincian data operasional yang penting saat terjadi kesalahan atau kegagalan aplikasi.
- Pengoptimalan Kinerja: Analisis data monitoring membantu mengidentifikasi bottleneck, memungkinkan optimasi aplikasi dan resource.
- Compliance dan Auditing: Log mencatat aktivitas sistem untuk memenuhi persyaratan audit dan keamanan.
2. Monitoring di Kubernetes
Monitoring berfokus pada pengumpulan data metrik dari aplikasi dan infrastruktur Kubernetes. Tools utama:
- Prometheus: Open-source monitoring system berbasis time-series.
- Grafana: Visualization tool untuk membuat dashboard berdasarkan data dari Prometheus.
Langkah-Langkah Setup Monitoring dengan Prometheus dan Grafana
- Deploy Prometheus
Gunakan Helm untuk instalasi cepat:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/prometheus
Verifikasi instalasi:
kubectl get pods -l app=prometheus
Akses dashboard Prometheus:
kubectl port-forward svc/prometheus-server 9090:80
- Deploy Grafana
Instalasi menggunakan Helm:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana
Akses Grafana dashboard:
kubectl port-forward svc/grafana 3000:80
- Default credentials:
- Username: admin
- Password: prom-operator
- Tambahkan Prometheus sebagai data source.
- Kustomisasi Dashboard
- Gunakan template dashboard yang tersedia di Grafana untuk Kubernetes cluster.
Metrik Utama yang Dipantau
- Node Level:
- CPU dan memori penggunaan per Node.
- Disk I/O dan Network I/O.
- Pod Level:
- Status Pod (running, pending, failed).
- CPU dan memori penggunaan per Pod.
- Cluster Level:
- Jumlah resource yang tersedia dan digunakan.
- Load balance di antara Node.
3. Logging di Kubernetes
Logging mengumpulkan dan menyimpan log dari aplikasi atau cluster. Tools utama:
- Fluentd: Log collector yang fleksibel untuk mengumpulkan log dari aplikasi dan cluster.
- Elasticsearch: Mesin pencarian untuk menyimpan log secara terstruktur.
- Kibana: Visualization tool untuk menganalisis log.
Langkah-Langkah Setup Logging dengan Fluentd dan ELK Stack
- Deploy Elasticsearch
Instal Elasticsearch menggunakan Helm:
helm repo add elastic https://helm.elastic.co
helm repo update
helm install elasticsearch elastic/elasticsearch
Verifikasi instalasi:
kubectl get pods -l app=elasticsearch
- Deploy Fluentd
Instal Fluentd untuk mengumpulkan log dari aplikasi:
helm repo add fluent https://fluent.github.io/helm-charts
helm repo update
helm install fluentd fluent/fluentd
- Deploy Kibana
Instal Kibana menggunakan Helm:
helm install kibana elastic/kibana
Akses Kibana dashboard:
kubectl port-forward svc/kibana 5601:80
- Sambungkan Kibana ke Elasticsearch sebagai data source.
Jenis Log yang Dipantau
- Application Logs: Log yang dihasilkan oleh container aplikasi.
- System Logs: Log dari Node dan komponen Kubernetes seperti kube-apiserver dan kube-scheduler.
- Network Logs: Informasi tentang lalu lintas jaringan di dalam cluster.
4. Integrasi Monitoring dan Logging
- Alerting:
- Gunakan Prometheus Alertmanager untuk notifikasi (email, Slack, PagerDuty).
- Buat aturan untuk mendeteksi error tertentu dari log Elasticsearch.
- Tracing:
- Gunakan tools seperti Jaeger atau OpenTelemetry untuk tracing distributed system.
5. Praktik Terbaik
- Pastikan semua Pod dan Node mengirimkan log ke Fluentd.
- Selalu backup log dan konfigurasi dashboard monitoring.
- Optimalkan penyimpanan log untuk menghindari pemborosan disk.
- Buat alert hanya untuk kejadian kritis untuk menghindari alert fatigue.