
ที่มาภาพ: Unknown Source
วิธีสร้าง Dashboard แสดงเมตริกจาก Prometheus ด้วย Grafana บน Kubernetes อย่างปลอดภัย
⚡ สรุป 30 วิ
การสร้าง Dashboard เพื่อแสดงเมตริกจาก **Prometheus** ด้วย **Grafana** บน **Kubernetes** ไม่ได้เป็นเรื่องยาก หากเข้าใจขั้นตอนและหลักการด้านความปลอดภัยอย่างถี่ถ้วน บทความนี้จะพาคุณผ่านกระบวนการตั้งแต่เต…
Overview — Overview
การสร้าง Dashboard เพื่อแสดงเมตริกจาก Prometheus ด้วย Grafana บน Kubernetes ไม่ได้เป็นเรื่องยาก หากเข้าใจขั้นตอนและหลักการด้านความปลอดภัยอย่างถี่ถ้วน บทความนี้จะพาคุณผ่านกระบวนการตั้งแต่เตรียมสภาพแวดล้อมจนถึงการปกป้องข้อมูลด้วย TLS และ RBAC
- Prometheus ทำหน้าที่เก็บเมตริกจากคลัสเตอร์
- Grafana ใช้ดึงข้อมูลจาก Prometheus มาสร้างกราฟและ Dashboard
- ความปลอดภัยต้องรวมทั้งการสื่อสารแบบเข้ารหัสและการควบคุมสิทธิ์ผู้ใช้
Prerequisites — Prerequisites
ก่อนเริ่มเราต้องเตรียมเครื่องมือและความรู้พื้นฐานเพื่อให้การติดตั้งเป็นไปอย่างราบรื่น
- มีคลัสเตอร์ Kubernetes (เวอร์ชัน 1.21+) พร้อม `kubectl` เชื่อมต่อได้
- ติดตั้ง Helm เวอร์ชัน 3 ขึ้นไป สำหรับจัดการ Chart อย่างง่ายดาย
- ความเข้าใจพื้นฐานของ Prometheus, Grafana, และ Kubernetes RBAC
Tip: ควรใช้คลัสเตอร์ที่มีการเปิดใช้งาน NetworkPolicy** แล้วเพื่อควบคุมการสื่อสารระหว่าง Pods ตั้งแต่ต้น
Deploy Prometheus on Kubernetes — Deploy Prometheus
เราจะติดตั้ง Prometheus ผ่าน Helm Chart เพื่อความเร็วและความยืดหยุ่น
- เพิ่ม Repo ของ Prometheus: `helm repo add prometheus-community https://prometheus-community.github.io/helm-charts`
- ปรับไฟล์ `values.yaml` ให้เปิดใช้งาน TLS สำหรับ endpoint ของ Prometheus
- ตั้งค่า `server.tls.enabled=true`
- ระบุ secret ที่มีใบรับรองและคีย์ (`tlsSecret: prometheus-tls`)
- ติดตั้ง Chart ด้วยคำสั่ง: `helm install prometheus prometheus-community/kube-prometheus-stack -f values.yaml --namespace monitoring --create-namespace`
Verify Installation — Verify
ตรวจสอบ Pods ว่าอยู่ในสถานะ Ready ทั้งหมด
- `kubectl get pods -n monitoring`
- ตรวจสอบ Service ของ Prometheus มีพอร์ต 9090 พร้อม TLS
Deploy Grafana securely — Deploy Grafana
Grafana จะทำหน้าที่ดึงข้อมูลจาก Prometheus และแสดงผลบน Dashboard
- ใช้ Helm Chart จาก community: `helm repo add grafana https://grafana.github.io/helm-charts`
- ปรับค่าใน `values.yaml` เพื่อเปิดใช้งาน TLS และ Authentication
- `adminPassword` ตั้งเป็นรหัสผ่านที่ซับซ้อน หรือใช้ secret แทน
- `service.type: ClusterIP` เพื่จำกัดการเข้าถึงจากภายนอกโดยตรง
- `ingress.enabled:true`, `ingress.tls:` ระบุ secret ของใบรับรอง TLS
- ติดตั้งด้วยคำสั่ง: `helm install grafana grafana/grafana -f values.yaml --namespace monitoring`
Secure Service Account — ServiceAccount
สร้าง ServiceAccount เฉพาะสำหรับ Grafana และผูกกับ RBAC
| สิทธิ์ | รายละเอียด |
|---|---|
| Read | สามารถอ่านเมตริกจาก Prometheus ได้เท่านั้น |
| Write | ไม่อนุญาตให้แก้ไขหรือลบข้อมูลใน Prometheus |
```yaml apiVersion: v1 kind: ServiceAccount metadata: name: grafana-sa namespace: monitoring --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: grafana-read namespace: monitoring rules:
- apiGroups: []
resources: ["pods", "services"] verbs: ["get","list"] ```
Connect Grafana to Prometheus — Data Source
เชื่อมต่อ Grafana กับ Prometheus ผ่าน Data Source ที่กำหนดใน Helm
- เพิ่ม datasource ใน `values.yaml` ของ Grafana
```yaml datasources: datasources.yaml: apiVersion: 1 datasources:
- name: Prometheus
type: prometheus url: https://prometheus.monitoring.svc.cluster.local:9090 access: proxy isDefault: true tlsSkipVerify: false # ตรวจสอบใบรับรองจริง ```
- หลังติดตั้งให้ตรวจสอบใน UI ของ Grafana ว่า datasource เชื่อมต่อสำเร็จ (`Status: OK`)
**Tip: อย่าลืมกำหนด `tlsClientAuth` หากต้องการยืนยันตัวตนของ Grafana ต่อ Prometheus ด้วย client certificate
Create Dashboard — Dashboard
ขั้นตอนสร้าง Dashboard เพื่อแสดงเมตริกที่สำคัญ
- เปิด Grafana UI (URL จาก Ingress) แล้วเข้าสู่ระบบ
- คลิก Create Dashboard > Add new panel
- เลือก Data Source เป็น Prometheus และใส่ Query เช่น `rate(http_requests_total[5m])`
- ตั้งค่า Visualization เป็น Time series, ปรับสีและ legend ตามต้องการ
- บันทึกเป็น Dashboard ชื่อ “K8s Cluster Overview”
ตัวอย่างเมตริกที่ควรแสดง
- CPU usage ของ Node (`node_cpu_seconds_total`)
- Memory usage ของ Pods (`container_memory_usage_bytes`)
- จำนวน Request per Second จาก Service (`http_requests_total`)
Secure Access — Security
เพื่อให้ Dashboard ปลอดภัย ควรบังคับใช้มาตรการหลายชั้น
- TLS Everywhere: ใช้ TLS ทั้งระหว่าง Ingress Grafana, Grafana Prometheus, และ API Server
- RBAC: จำกัดผู้ใช้งานด้วย Role‑Based Access Control ใน Grafana (Admin, Editor, Viewer)
- NetworkPolicy: ปิดการเข้าถึง Pods ของ Prometheus/Grafana จาก Namespace อื่นที่ไม่จำเป็น
```yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: grafana-access namespace: monitoring spec: podSelector: matchLabels: app.kubernetes.io/name: grafana ingress:
- from:
- namespaceSelector:
matchLabels: purpose: monitoring ```
Monitoring & Maintenance — Ops
หลังจาก Dashboard ทำงานแล้ว ควรตรวจสอบสุขภาพของระบบอย่างสม่ำเสมอ
- ตั้ง Alert ใน Prometheus สำหรับการใช้ CPU สูงเกิน 80% เป็นเวลา >5 นาที
- ใช้ Grafana Alerts เพื่อแจ้งเตือนผ่าน Slack หรือ Email เมื่อเมตริกสำคัญตกลงไป
- ทำ Backup ของ ConfigMap ที่บรรจุ Dashboard JSON และ Secret ของ TLS อย่างน้อยสัปดาห์ละครั้ง
**Tip: ควรเก็บ Backup ไว้ในที่ปลอดภัย (เช่น S3 หรือ Vault) เพื่อให้สามารถกู้คืนได้ทันทีหากเกิดเหตุขัดข้อง
Summary — Summary
การสร้าง Dashboard บน Grafana ที่ดึงเมตริกจาก Prometheus ภายใน Kubernetes ต้องคำนึงถึงความปลอดภัยตั้งแต่ขั้นตอนแรกจนถึงการบำรุงรักษา
- เตรียมสภาพแวดล้อมด้วย Helm, TLS, และ RBAC
- ติดตั้ง Prometheus แล้วเปิดใช้งาน TLS บน Service
- Deploy Grafana ด้วย ServiceAccount เฉพาะและ Ingress ที่ใช้ HTTPS
- เชื่อมต่อ Data Source อย่างปลอดภัยโดยตรวจสอบใบรับรอง
- สร้าง Dashboard แสดงเมตริกสำคัญของคลัสเตอร์
- ใช้ NetworkPolicy, RBAC, และ Alert เพื่อป้องกันการโจมตีและตรวจจับเหตุการณ์
สิ่งที่ควรจำ
- TLS ทุกจุดเชื่อมต่อ เป็นข้อบังคับพื้นฐาน
- จำกัดสิทธิ์ผู้ใช้ด้วย RBAC ทั้งใน Kubernetes และ Grafana
- ตั้งค่า Alert เพื่อให้รับรู้ปัญหาได้เร็วที่สุด
- ทำ Backup ของการตั้งค่าทั้งหมดอย่างสม่ำเสมอ
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีสร้าง Dashboard แสดงเมตริกจาก Prometheus ด้วย Grafana บน Kubernetes อย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 30 กรกฎาคม 2569 เวลา 17:51



