Thứ Ba, 21 tháng 10, 2025

Bài 8: Kubernetes Monitoring – Giám Sát Với Prometheus Và Grafana

Danh sách bài viết trong series Kubernetes cơ bản
  • Bài 1: Kubernetes Cơ Bản – Cài Đặt Minikube Và Chạy Pod Đầu Tiên
  • Bài 2: Kubernetes Pod Deployment – Triển Khai Ứng Dụng Đầu Tiên
  • Bài 3: Kubernetes Service Ingress – Quản Lý Truy Cập Ứng Dụng
  • Bài 4: Kubernetes ConfigMap Secret – Quản Lý Cấu Hình Ứng Dụng
  • Bài 5: Kubernetes EKS AWS – Triển Khai Cluster Trên AWS
  • Bài 6: Kubernetes Helm – Tự Động Triển Khai Ứng Dụng Dễ Dàng
  • Bài 7: Kubernetes CI/CD – Tự Động Triển Khai Với GitHub Actions
  • Bài 8: Kubernetes Monitoring – Giám Sát Với Prometheus Và Grafana
  • Bài 9: Kubernetes Autoscaling – Tối Ưu Hóa Cluster Hiệu Quả

Tại Sao Cần Giám Sát Kubernetes?

Kubernetes monitoring là bước quan trọng để theo dõi hiệu suất và trạng thái của cluster, giúp phát hiện vấn đề kịp thời. Prometheus là công cụ thu thập và lưu trữ metrics, còn Grafana cung cấp dashboard trực quan để phân tích dữ liệu. Trong bài 7, bạn đã tích hợp CI/CD với Kubernetes. Bài này sẽ hướng dẫn bạn cài đặt Prometheus và Grafana trên Minikube để giám sát cluster.

Bước 1: Khởi Động Minikube Và Triển Khai Ứng Dụng

  • Hành động:
    1. Khởi động Minikube:
      minikube start --driver=docker
    2. Tạo file nginx-deployment.yaml:
      touch nginx-deployment.yaml

      Mở file và dán nội dung:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: nginx-deployment
      spec:
      replicas: 2
      selector:
       matchLabels:
         app: nginx
      template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
         - name: nginx
           image: nginx:latest
           ports:
           - containerPort: 80
    3. Triển khai ứng dụng:
      kubectl apply -f nginx-deployment.yaml
  • Kết quả thực tế:
    • Sau khi chạy minikube start, terminal hiển thị:
          minikube v1.33.1 on Ubuntu 22.04
          Using the docker driver
          Starting control plane node in cluster minikube
          Done! kubectl is now configured to use "minikube" cluster
    • Sau khi chạy kubectl apply, terminal hiển thị:
      deployment.apps/nginx-deployment created
    • Kiểm tra Pod:
      kubectl get pods

      Output:

      NAME                               READY   STATUS    RESTARTS   AGE
      nginx-deployment-5d9f8b6f5-abcde   1/1     Running   0          10s
      nginx-deployment-5d9f8b6f5-fghij   1/1     Running   0          10s

Bước 2: Cài Đặt Prometheus Trên Cluster

  • Hành động:
    1. Thêm Helm repository của Prometheus:
      helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
      helm repo update
    2. Cài đặt Prometheus:
      helm install prometheus prometheus-community/prometheus --namespace monitoring --create-namespace
    3. Kiểm tra Pod của Prometheus:
      kubectl get pods -n monitoring
  • Kết quả thực tế:
    • Sau khi chạy helm install, terminal hiển thị:
      NAME: prometheus
      NAMESPACE: monitoring
      STATUS: deployed
    • Lệnh kubectl get pods -n monitoring hiển thị:
      NAME                                     READY   STATUS    RESTARTS   AGE
      prometheus-alertmanager-0                1/1     Running   0          30s
      prometheus-kube-state-metrics-abc123     1/1     Running   0          30s
      prometheus-node-exporter-def456          1/1     Running   0          30s
      prometheus-pushgateway-ghi789            1/1     Running   0          30s
      prometheus-server-xyz987                 2/2     Running   0          30s

      (Các thành phần của Prometheus đã chạy).

Bước 3: Cài Đặt Grafana Và Kết Nối Với Prometheus

  • Hành động:
    1. Thêm Helm repository của Grafana:
      helm repo add grafana https://grafana.github.io/helm-charts
      helm repo update
    2. Cài đặt Grafana:
      helm install grafana grafana/grafana --namespace monitoring
    3. Lấy mật khẩu mặc định của Grafana:
      kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
    4. Truy cập Grafana qua port-forward:
      kubectl port-forward --namespace monitoring svc/grafana 3000:80
    5. Mở trình duyệt, truy cập http://localhost:3000, đăng nhập với user admin và mật khẩu từ bước 3.
  • Kết quả thực tế:
    • Sau khi chạy helm install, terminal hiển thị:
      NAME: grafana
      NAMESPACE: monitoring
      STATUS: deployed
    • Lệnh lấy mật khẩu hiển thị (ví dụ):
      E2fgh4Jk9m
    • Truy cập http://localhost:3000, bạn thấy giao diện đăng nhập Grafana.

Bước 4: Xem Dashboard Giám Sát Trên Grafana

  • Hành động:
    1. Thêm Prometheus làm nguồn dữ liệu:
      • Trong Grafana, vào Configuration > Data Sources > Add data source.
      • Chọn Prometheus.
      • Nhập URL: http://prometheus-server.monitoring.svc.cluster.local.
      • Nhấn Save & Test.
    2. Nhập dashboard có sẵn:
      • Vào Dashboards > Import.
      • Nhập ID dashboard 1860 (Node Exporter Full) và chọn Prometheus làm nguồn dữ liệu.
      • Nhấn Import.
  • Kết quả thực tế:
    • Sau khi thêm Prometheus, Grafana hiển thị thông báo:
      Data source is working
    • Dashboard Node Exporter Full hiển thị các biểu đồ về CPU, RAM, và disk của cluster.

Bước 5: Xóa Tài Nguyên Để Dọn Dẹp

  • Hành động:
    1. Xóa Prometheus và Grafana:
      helm uninstall prometheus --namespace monitoring
      helm uninstall grafana --namespace monitoring
    2. Xóa namespace và ứng dụng:
      kubectl delete -f nginx-deployment.yaml
      kubectl delete namespace monitoring
    3. Dừng Minikube:
      minikube stop
      minikube delete
  • Kết quả thực tế:
    • Sau khi chạy helm uninstall, terminal hiển thị:
      release "prometheus" uninstalled
      release "grafana" uninstalled
    • Sau khi chạy minikube delete, terminal hiển thị:
      Deleting "minikube" in docker ...
      Deleted minikube cluster

Kết Quả Đạt Được

  • Bạn đã cài đặt Prometheus để thu thập metrics từ cluster Kubernetes.
  • Bạn đã cài đặt Grafana và kết nối với Prometheus để trực quan hóa dữ liệu.
  • Bạn đã xem dashboard giám sát và xóa tài nguyên sau khi thử nghiệm.

Lưu Ý Quan Trọng

  • Production: Trong môi trường production, cấu hình Prometheus và Grafana với persistent storage để lưu dữ liệu.
  • Bảo mật: Đổi mật khẩu mặc định của Grafana và bật HTTPS trong production.
  • Tài liệu tham khảo: Xem thêm về Prometheus (Prometheus Documentation) và Grafana (Grafana Documentation).
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master