Prometheus Grafana Monitoring Hardware

Prometheus Grafana Monitoring

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Prometheus Grafana Monitoring คืออะไร / ทำไมถึงสำคัญ

น้องๆ เคยเจอปัญหาคอมพิวเตอร์ในร้านเน็ตค้างไหม? สมัยผมทำ SiamCafe.net เนี่ย ปัญหาพวกนี้เจอบ่อยมาก! Prometheus กับ Grafana ก็เหมือนยามที่คอยสอดส่องดูแลเครื่อง Server และอุปกรณ์ต่างๆ ในร้านเรานั่นแหละ แต่แทนที่จะเป็นคน ก็เป็นโปรแกรมที่คอยเก็บข้อมูลแล้วเอามาแสดงผลให้เราเห็นภาพรวมได้ง่ายๆ

Prometheus ทำหน้าที่เป็นคนเก็บข้อมูล (Metrics) ต่างๆ เช่น CPU Usage, Memory Usage, Disk I/O, Network Traffic แล้วเอาข้อมูลเหล่านี้ไปเก็บไว้ใน Database ส่วน Grafana ก็จะดึงข้อมูลจาก Prometheus มาแสดงผลเป็น Dashboard สวยๆ ให้เราดู ทำให้เราเห็นภาพรวมของระบบได้ง่าย และสามารถแก้ไขปัญหาได้ทันท่วงที

ทำไมถึงสำคัญน่ะเหรอ? ลองคิดดูสิ ถ้าเราไม่รู้ว่าเครื่องไหน CPU สูง Memory เต็ม หรือ Disk ใกล้เต็ม เราจะแก้ปัญหาได้ยังไง? Prometheus กับ Grafana ช่วยให้เราเห็นปัญหาเหล่านี้ได้ก่อนที่มันจะส่งผลกระทบต่อการทำงานของระบบทั้งหมด ช่วยลด Downtime และเพิ่มประสิทธิภาพในการทำงานได้เยอะเลย

พื้นฐานที่ต้องรู้

ก่อนจะไปลงมือทำ เรามาทำความเข้าใจพื้นฐานกันก่อนนิดหน่อยนะ จะได้ไม่งงเวลาเจอศัพท์เทคนิค

Metrics คืออะไร

Metrics ก็คือข้อมูลดิบที่เราเก็บมานั่นแหละครับ เช่น CPU Usage (%) หรือ Memory Used (GB) แต่ละ Metrics จะมีชื่อและค่าที่เปลี่ยนไปตามเวลา เหมือนเราวัดอุณหภูมิร่างกายเป็นช่วงๆ นั่นแหละ

Time Series Database

Prometheus ใช้ Time Series Database (TSDB) ในการเก็บ Metrics เพราะ Metrics เป็นข้อมูลที่เปลี่ยนแปลงตามเวลา TSDB จึงถูกออกแบบมาให้เก็บข้อมูลประเภทนี้ได้อย่างมีประสิทธิภาพ ทำให้เราสามารถ Query ข้อมูลย้อนหลังได้อย่างรวดเร็ว สมัยผมทำร้านเน็ต ก็อยากมีระบบแบบนี้บ้าง จะได้รู้ว่าเครื่องไหนเล่นเกมอะไรแล้วค้างบ่อยๆ

PromQL

PromQL (Prometheus Query Language) เป็นภาษาที่เราใช้ Query ข้อมูลจาก Prometheus คล้ายๆ กับ SQL แต่ถูกออกแบบมาให้ใช้งานกับ Time Series Data โดยเฉพาะ เราสามารถใช้ PromQL เพื่อคำนวณค่าต่างๆ สร้างกราฟ และตั้ง Alert ได้

วิธีใช้งาน / เริ่มต้นยังไง

มาถึงส่วนที่ทุกคนรอคอย นั่นก็คือวิธีการใช้งาน Prometheus และ Grafana นั่นเอง บอกเลยว่าไม่ได้ยากอย่างที่คิดนะ สมัยนี้มี Docker ช่วยให้การติดตั้งง่ายขึ้นเยอะเลย

ขั้นตอนปฏิบัติจริง

ติดตั้ง Prometheus และ Grafana ด้วย Docker

Docker ทำให้ชีวิตเราง่ายขึ้นเยอะ! แค่มี Docker Compose ไฟล์เดียว ก็สามารถติดตั้ง Prometheus และ Grafana ได้ภายในไม่กี่นาที

สร้างไฟล์ docker-compose.yml แล้วใส่ Code ด้านล่างนี้ลงไป:


version: '3.7'

services:
  prometheus:
    image: prom/prometheus:latest
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    restart: always

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    environment:
      GF_SECURITY_ADMIN_USER: admin
      GF_SECURITY_ADMIN_PASSWORD: password
    depends_on:
      - prometheus
    restart: always

จากนั้นสร้างไฟล์ prometheus.yml เพื่อกำหนดค่า Config ของ Prometheus:


global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

แล้วรันคำสั่ง docker-compose up -d เท่านี้ Prometheus และ Grafana ก็จะถูกติดตั้งและรันขึ้นมาเรียบร้อย

Config Prometheus

ในไฟล์ prometheus.yml เรากำหนดค่า scrape_interval เพื่อบอก Prometheus ว่าให้ไปเก็บข้อมูลจาก Target ทุกๆ 15 วินาที ส่วน scrape_configs คือส่วนที่เรากำหนด Target ที่ Prometheus จะไปเก็บข้อมูล ในตัวอย่างนี้ เราให้ Prometheus เก็บข้อมูลจากตัวเอง (localhost:9090)

ถ้าเราต้องการเก็บข้อมูลจากเครื่องอื่นๆ เราก็ต้องเพิ่ม Target เข้าไปใน scrape_configs เช่น ถ้าเราต้องการเก็บข้อมูลจากเครื่อง Server ที่รัน Node Exporter (เดี๋ยวเราจะพูดถึง Node Exporter ในหัวข้อถัดไป) เราก็เพิ่ม Target ดังนี้:


  - job_name: 'node_exporter'
    static_configs:
      - targets: ['192.168.1.100:9100']

โดย 192.168.1.100 คือ IP Address ของเครื่อง Server และ 9100 คือ Port ที่ Node Exporter รันอยู่

ติดตั้งและ Config Node Exporter

Node Exporter เป็นโปรแกรมที่เราติดตั้งบนเครื่อง Server เพื่อให้ Prometheus สามารถเก็บข้อมูล Hardware เช่น CPU, Memory, Disk, Network ได้

ดาวน์โหลด Node Exporter จาก เว็บไซต์ Prometheus แล้วติดตั้งบนเครื่อง Server ของเรา

หลังจากติดตั้งเสร็จแล้ว ให้รัน Node Exporter โดยใช้คำสั่ง:


./node_exporter

Node Exporter จะรันบน Port 9100 โดย Default

สร้าง Dashboard ใน Grafana

เมื่อติดตั้ง Prometheus และ Grafana เรียบร้อยแล้ว ให้เปิด Browser แล้วเข้าไปที่ http://localhost:3000 (หรือ IP Address ของเครื่องที่รัน Grafana) แล้ว Login ด้วย Username admin และ Password password (ที่เรากำหนดไว้ใน docker-compose.yml)

จากนั้น Add Data Source โดยเลือก Prometheus แล้วใส่ URL ของ Prometheus (เช่น http://localhost:9090)

สุดท้าย สร้าง Dashboard แล้ว Add Panel โดยเลือก Graph แล้วใส่ PromQL Query ที่เราต้องการ เช่น ถ้าเราต้องการดูกราฟ CPU Usage เราก็ใส่ Query ดังนี้:


100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

แค่นี้เราก็จะได้กราฟ CPU Usage ที่สวยงาม เอาไว้ Monitor เครื่อง Server ของเราแล้ว

อย่าลืมแวะไปอ่านบทความอื่นๆ ที่ SiamCafe Blog นะครับ มีเรื่อง IT สนุกๆ อีกเยอะเลย

เปรียบเทียบกับทางเลือกอื่น

Prometheus และ Grafana ไม่ใช่ Tools เดียวที่ใช้สำหรับ Monitoring นะครับ ยังมีทางเลือกอื่นๆ อีกมากมาย เช่น Zabbix, Nagios, Datadog แต่ละตัวก็มีข้อดีข้อเสียแตกต่างกันไป

Tool ข้อดี ข้อเสีย
Prometheus + Grafana Open Source, Scalable, ใช้งานง่าย, มี Community ขนาดใหญ่ ต้องใช้ PromQL ในการ Query Data, Config ค่อนข้างซับซ้อน
Zabbix มี Feature ครบครัน, รองรับ Protocol หลากหลาย Interface ไม่ค่อยสวย, Config ซับซ้อนกว่า Prometheus
Nagios เป็นที่นิยมมานาน, มี Plugin ให้เลือกใช้เยอะ Config ซับซ้อน, Interface เก่า
Datadog ใช้งานง่าย, มี Feature ครบครัน, Support ดี มีค่าใช้จ่าย

สมัยผมทำร้านเน็ต ก็เคยลองใช้หลายตัว แต่สุดท้ายก็มาจบที่ Prometheus กับ Grafana เพราะมัน Open Source และ Scalable ที่สำคัญคือใช้งานง่าย ถ้าเทียบกับ Zabbix หรือ Nagios ที่ต้อง Config เยอะแยะไปหมด Prometheus นี่สบายกว่าเยอะ

เลือก Tool ที่เหมาะสมกับความต้องการของตัวเองนะครับ ไม่มี Tool ไหนที่ดีที่สุดในทุกสถานการณ์

ถ้าอยากรู้เรื่อง IT เพิ่มเติม แวะมาอ่านได้ที่ SiamCafe Blog นะน้องๆ

🎬 วิดีโอแนะนำ

ดูวิดีโอเพิ่มเติมเกี่ยวกับPrometheus Grafana Monitoring:

Best Practices / เคล็ดลับจากประสบการณ์

เอาล่ะน้องๆ มาถึงส่วนที่สำคัญที่สุดแล้ว นั่นคือ เคล็ดลับที่พี่บอมสั่งสมมาตลอด 28+ ปี ในวงการ IT และโดยเฉพาะอย่างยิ่ง จากประสบการณ์ตรงในการทำร้านเน็ต SiamCafe ตั้งแต่ยุคบุกเบิก

เรื่อง Prometheus กับ Grafana เนี่ย มันไม่ใช่แค่ลงโปรแกรมแล้วจบนะ มันต้องมีเทคนิค มีลูกเล่น ถึงจะดึงประสิทธิภาพออกมาได้เต็มที่ พี่จะมาแชร์เทคนิคที่ใช้ได้จริง ที่ผ่านการทดสอบมาแล้วว่า เวิร์ค!

เทคนิคที่ 1: ตั้ง Alert ให้ฉลาด

Alert เนี่ยสำคัญมาก เพราะมันคือตัวบอกว่ามีอะไรผิดปกติเกิดขึ้น แต่ถ้าตั้ง Alert แบบส่งเดช มันจะกลายเป็น Alert Spam แทนที่จะช่วย กลับจะทำให้เราปวดหัวกว่าเดิม

สมัยผมทำร้านเน็ต เคยเจอเคส RAM ร้อนจัด เพราะฝุ่นจับหนาเตอะ Alert มันก็ส่งมาถี่ๆๆๆๆ จนแทบไม่ได้ทำอะไรเลย สุดท้ายต้องมานั่งปรับ Alert ใหม่ ให้มันฉลาดขึ้น เช่น ให้ Alert เฉพาะตอนที่อุณหภูมิสูงเกินค่าที่กำหนด *ต่อเนื่อง* กัน 5 นาที ไม่ใช่แค่แว๊บนึง


# Example Prometheus rule for alerting on high CPU usage
groups:
- name: CPU_Alerts
  rules:
  - alert: HighCPUUsage
    expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "CPU usage is above 80% on {{ $labels.instance }}"
      description: "CPU usage on {{ $labels.instance }} is above 80% for more than 5 minutes. Value: {{ $value }}"

เทคนิคที่ 2: Custom Dashboard คือทางรอด

Grafana Dashboard ที่มีมาให้ตอนแรก มันก็ดีแหละ แต่ส่วนใหญ่มันไม่ตอบโจทย์เรา 100% หรอก น้องต้องสร้าง Dashboard ของตัวเองขึ้นมา Custom เอาตามความต้องการ

เคยเจอเคสที่ลูกค้าบ่นว่า เน็ตหลุดบ่อย พอไปดู Dashboard ทั่วไป ก็ไม่เห็นอะไรผิดปกติ แต่พอสร้าง Dashboard ที่แสดง Latency ของ Router แต่ละตัวเท่านั้นแหละ ถึงได้เห็นว่า Router ตัวนึงมัน Latency สูงผิดปกติ พอเปลี่ยน Router เท่านั้นแหละ จบปัญหา!

เทคนิคที่ 3: ใช้ Service Discovery ช่วยชีวิต

Service Discovery คือการที่ Prometheus มันสามารถค้นหา Service ต่างๆ ใน Network ของเราได้เอง โดยที่เราไม่ต้องไป config อะไรให้วุ่นวาย

สมัยก่อน ตอนที่ยังไม่มี Service Discovery เวลาเพิ่ม Server ใหม่ทีนึง ต้องมานั่งแก้ config Prometheus ใหม่หมด เสียเวลามาก แต่พอใช้ Service Discovery ชีวิตง่ายขึ้นเยอะ แค่เพิ่ม Server เข้า Network Prometheus มันก็ Detect เองได้เลย สะดวกสุดๆ

เทคนิคที่ 4: Backup Configuration สม่ำเสมอ

อย่าคิดว่า Prometheus กับ Grafana มันจะไม่พังนะน้อง ทุกอย่างมันมีโอกาสพังหมดแหละ สิ่งที่สำคัญคือ ต้อง Backup Configuration เอาไว้เสมอ

เคยเจอเคสที่ Harddisk ของ Server ที่ลง Prometheus พังกะทันหัน โชคดีที่ Backup Configuration เอาไว้ ก็เลยสามารถ Restore กลับมาได้ภายในไม่กี่นาที ถ้าไม่ได้ Backup ไว้ งานเข้าแน่นอน

FAQ คำถามที่พบบ่อย

Prometheus กับ Grafana กิน Resource เยอะไหม?

ตอบ: ถ้า config ไม่ดี กินเยอะแน่นอน แต่ถ้า config ให้เหมาะสม Prometheus กับ Grafana ก็สามารถทำงานได้บน Server ขนาดเล็กได้สบายๆ สิ่งที่สำคัญคือ ต้อง Monitor Resource Usage ของ Prometheus กับ Grafana เองด้วย

Prometheus เก็บ Data นานแค่ไหนดี?

ตอบ: ขึ้นอยู่กับความต้องการของแต่ละคน แต่โดยทั่วไป 1-2 เดือนก็ถือว่าเพียงพอแล้ว ถ้าต้องการเก็บ Data นานกว่านั้น อาจจะต้องพิจารณาใช้ Solution อื่นๆ เช่น Thanos หรือ Cortex

Prometheus กับ Grafana เหมาะกับธุรกิจขนาดไหน?

ตอบ: เหมาะกับทุกขนาดธุรกิจ ตั้งแต่ Startup ไปจนถึง Enterprise ใหญ่ๆ เพราะมัน Scalable มาก สามารถปรับแต่งให้เข้ากับความต้องการของแต่ละธุรกิจได้

Prometheus Alert Manager คืออะไร?

ตอบ: Prometheus Alert Manager คือเครื่องมือที่ช่วยจัดการ Alert ที่ Prometheus ส่งมา มันสามารถ Group Alert, Silence Alert, และส่ง Alert ไปยังช่องทางต่างๆ เช่น Email, Slack, PagerDuty ได้

Prometheus Exporter มีอะไรบ้าง?

ตอบ: Prometheus Exporter มีเยอะมากกกกกก (ก ไก่ล้านตัว) มีทั้ง Exporter ที่เป็น Official ของ Prometheus และ Exporter ที่พัฒนาโดย Community น้องสามารถหา Exporter ที่เหมาะกับความต้องการของตัวเองได้จาก Prometheus website

สรุป

Prometheus กับ Grafana เป็นเครื่องมือ Monitoring ที่ทรงพลังมาก แต่การใช้งานให้ได้ประสิทธิภาพสูงสุด ต้องอาศัยประสบการณ์และการปรับแต่งให้เข้ากับความต้องการของแต่ละคน หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ ไม่มากก็น้อยนะครับ

อย่าลืมว่า การ Monitoring คือหัวใจสำคัญของการดูแลระบบ IT ถ้าเราไม่รู้ว่าเกิดอะไรขึ้นในระบบ เราก็ไม่สามารถแก้ไขปัญหาได้อย่างทันท่วงที

ขอให้สนุกกับการ Monitoring นะน้อง!

iCafeForex

สนใจบทความอื่นๆ เกี่ยวกับ IT และ Startup อย่าลืมแวะไปที่ SiamCafe Blog นะครับ