โลโก้ Prometheus
อันดับ 21 ใน Top 100 Monitoring และ ObservabilityApache License 2.0 (โอเพนซอร์ส)

Prometheus คืออะไร และวิธีติดตั้งบน Cloud Server

Prometheus คือระบบเก็บค่าตัวชี้วัดของระบบตามช่วงเวลา พร้อมภาษาคิวรีที่ทรงพลังและกลไกแจ้งเตือน เป็นมาตรฐานของการเฝ้าระวังในโลก Container และ Kubernetes

หมวดหมู่
Monitoring และ Observability
ติดตั้งบนเซิร์ฟเวอร์เองได้
ได้
สเปกเริ่มต้นที่แนะนำ
2 vCPU · RAM 4 GB
ไลเซนส์
Apache License 2.0 (โอเพนซอร์ส)
เว็บทางการ
เปิดเว็บไซต์
สร้าง Cloud Server เดี๋ยวนี้
  • ISO/IEC 27001
  • ISO 22301
  • ISO 20000-1
  • CSA-STAR

Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย

Prometheus คืออะไร

Prometheus ทำงานด้วยการดึงข้อมูลจากปลายทางตามรอบ แทนที่จะรอให้ปลายทางส่งเข้ามา แต่ละบริการเปิดหน้า metrics ให้ Prometheus มาอ่าน ทำให้เพิ่มเป้าหมายใหม่ได้ง่ายและตรวจสอบได้ว่าเป้าหมายไหนหายไป

หัวใจอีกอย่างคือภาษาคิวรีชื่อ PromQL ซึ่งคำนวณอัตราการเปลี่ยนแปลง ค่าเฉลี่ย และเปอร์เซ็นไทล์ได้ในบรรทัดเดียว จึงตอบคำถามอย่างเวลาตอบสนองที่ช้าที่สุดของผู้ใช้ 95 เปอร์เซ็นต์ได้ทันที

Prometheus มักใช้คู่กับ Node Exporter สำหรับข้อมูลเครื่อง Alertmanager สำหรับจัดการการแจ้งเตือน และ Grafana สำหรับแสดงผล รวมกันเป็นชุดเฝ้าระวังที่ครบและใช้ฟรีทั้งหมด

แผนผังการวางระบบ Prometheus บน Cloud Server หนึ่งเครื่องที่ Data Center ในประเทศไทย ผู้ใช้เข้าถึงผ่านไฟร์วอลล์ที่เปิดเฉพาะพอร์ต 9090, 9100, 9093 ตัว Prometheus และข้อมูลอยู่บนเครื่องเดียวกัน เริ่มต้นที่ 2 vCPU แรม 4 GB และมีสำเนาสำรองเขียนออกไปเก็บอีกไซต์หนึ่ง
Prometheus ทำงานบน Cloud Server เครื่องเดียวได้ครบ เปิดเฉพาะพอร์ตที่จำเป็น ข้อมูลและสำเนาสำรองอยู่ใน Data Center ในประเทศไทย

ความสามารถเด่นของ Prometheus

ดึงข้อมูลตามรอบ

เห็นทันทีเมื่อเป้าหมายหายไปจากระบบ ต่างจากรูปแบบที่รอให้ปลายทางส่งเข้ามา

PromQL ที่ทรงพลัง

คำนวณอัตรา ค่าเฉลี่ย และเปอร์เซ็นไทล์จากข้อมูลดิบได้ในคิวรีเดียว

Exporter จำนวนมาก

มีตัวส่งข้อมูลสำเร็จรูปสำหรับ Linux, Nginx, MySQL, Redis และอีกหลายร้อยระบบ

Alertmanager

จัดกลุ่มการแจ้งเตือน ระงับการแจ้งซ้ำ และส่งไปยังช่องทางที่ทีมใช้

มาตรฐานของ Kubernetes

เป็นระบบเฝ้าระวังที่คลัสเตอร์ Kubernetes ส่วนใหญ่ใช้อยู่แล้ว

ควรเก็บ Metric อะไรถึงจะรู้ปัญหาก่อนผู้ใช้

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

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

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

  • เวลาตอบสนองควรดูค่าเปอร์เซ็นไทล์ที่ 95 หรือ 99 ไม่ใช่ค่าเฉลี่ย เพราะค่าเฉลี่ยกลบผู้ใช้ที่เจอปัญหา
  • อัตราความผิดพลาดควรแยกตามชนิดของข้อผิดพลาด เพื่อรู้ว่าปัญหาเกิดที่แอปหรือที่ปลายทางที่เรียกใช้
  • ระดับความอิ่มตัวคือตัวที่บอกล่วงหน้าได้ดีที่สุดว่าอีกไม่นานจะล่ม
  • ตัวชี้วัดของงานเบื้องหลัง เช่น ความยาวคิวและอายุของงานที่ค้างนานที่สุด

เขียนกฎแจ้งเตือนที่แจ้งเฉพาะเรื่องที่ต้องลงมือทำ

หลักที่ใช้ได้ดีคือแจ้งเตือนจากอาการที่ผู้ใช้รู้สึก ไม่ใช่จากสาเหตุภายในทุกจุด เพราะสาเหตุมีได้หลายสิบแบบแต่อาการที่กระทบธุรกิจมีไม่กี่อย่าง การแจ้งจากอาการทำให้จำนวนกฎน้อยลงและทุกกฎมีความหมาย

ทุกกฎควรมีเงื่อนไขระยะเวลากำกับ เพื่อไม่ให้ค่าที่กระโดดขึ้นชั่วครู่กลายเป็นการแจ้งเตือน และควรเขียนคำอธิบายไว้ในกฎว่าเมื่อเกิดเหตุนี้ควรตรวจอะไรก่อน ซึ่งช่วยคนที่รับเวรกลางคืนได้มากที่สุด

สุดท้ายควรมีกฎที่เฝ้าตัวระบบเฝ้าระวังเองด้วย เช่น เมื่อเป้าหมายหายไปจากการเก็บข้อมูลหรือพื้นที่ดิสก์ของระบบเก็บข้อมูลใกล้เต็ม เพราะระบบที่เงียบอาจไม่ได้หมายความว่าทุกอย่างปกติ

ใช้ Prometheus ทำอะไรได้บ้าง

  • เฝ้าระวังเซิร์ฟเวอร์และคอนเทนเนอร์ในระบบที่เปลี่ยนแปลงบ่อย
  • เก็บตัวชี้วัดของแอปที่ทีมพัฒนาสร้างขึ้นเอง
  • ตั้งกฎแจ้งเตือนที่อิงพฤติกรรมจริง เช่น อัตราความผิดพลาดของ API
  • เป็นแหล่งข้อมูลให้ Grafana ทำแดชบอร์ด

สเปก Cloud Server ที่แนะนำ

แผนภาพเทียบสเปก Cloud Server สำหรับ Prometheus 3 ระดับ เริ่มจาก 2 vCPU แรม 4 GB ดิสก์ NVMe 60 GB ไปจนถึง 8 vCPU ขึ้นไป แรม 16 GB ขึ้นไป ดิสก์ NVMe 500 GB ขึ้นไป โดยเทียบขนาดแยกตามแต่ละคอลัมน์
เริ่มจากระดับที่ตรงกับการใช้งานตอนนี้ แล้วเพิ่ม CPU และ RAM ทีหลังได้บนเครื่องเดิม
ระดับการใช้งานvCPURAMDisk
เริ่มต้นเฝ้าระวังไม่กี่สิบเป้าหมาย2 vCPU4 GBNVMe 60 GB
แนะนำระบบขนาดกลางพร้อมเก็บข้อมูลย้อนหลังหลายเดือน4 vCPU8 GBNVMe 200 GB
ระบบใหญ่เป้าหมายหลายร้อยตัวและข้อมูลความละเอียดสูง8 vCPU ขึ้นไป16 GB ขึ้นไปNVMe 500 GB ขึ้นไป

ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ

วิธีติดตั้ง Prometheus บน Cloud Server ของ THAI DATA CLOUD

ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server

สิ่งที่ต้องเตรียม

  • Ubuntu Server 24.04 LTS หรือ Rocky Linux 9
  • ดิสก์ที่มีพื้นที่พอสำหรับข้อมูลย้อนหลังตามระยะเวลาที่ต้องเก็บ
  • Node Exporter บนเครื่องที่ต้องการเก็บข้อมูล

ทดสอบบน Ubuntu Server 24.04 LTS

  1. 1

    สร้างผู้ใช้และดาวน์โหลด Prometheus

    ตรวจเลขเวอร์ชันล่าสุดจากเว็บทางการก่อนดาวน์โหลด

    sudo useradd --no-create-home --shell /bin/false prometheus
    cd /tmp
    curl -LO https://github.com/prometheus/prometheus/releases/download/v3.1.0/prometheus-3.1.0.linux-amd64.tar.gz
    tar xzf prometheus-3.1.0.linux-amd64.tar.gz
  2. 2

    ติดตั้งไฟล์และตั้งสิทธิ์

    sudo mkdir -p /etc/prometheus /var/lib/prometheus
    sudo cp prometheus-3.1.0.linux-amd64/prometheus /usr/local/bin/
    sudo cp -r prometheus-3.1.0.linux-amd64/consoles /etc/prometheus/
    sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
  3. 3

    สร้างไฟล์ตั้งค่า /etc/prometheus/prometheus.yml

    global:
      scrape_interval: 15s
    
    scrape_configs:
      - job_name: 'prometheus'
        static_configs:
          - targets: ['localhost:9090']
    
      - job_name: 'node'
        static_configs:
          - targets: ['10.10.0.11:9100', '10.10.0.12:9100']
  4. 4

    สร้างบริการ systemd

    [Unit]
    Description=Prometheus
    After=network.target
    
    [Service]
    User=prometheus
    ExecStart=/usr/local/bin/prometheus \
      --config.file=/etc/prometheus/prometheus.yml \
      --storage.tsdb.path=/var/lib/prometheus \
      --storage.tsdb.retention.time=90d
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
  5. 5

    เปิดบริการ

    sudo systemctl daemon-reload
    sudo systemctl enable --now prometheus
  6. 6

    ติดตั้ง Node Exporter บนเครื่องที่ต้องการเฝ้าระวัง

    sudo apt -y install prometheus-node-exporter
    sudo systemctl enable --now prometheus-node-exporter

ตั้งค่า retention ให้สมดุลกับพื้นที่ดิสก์ ถ้าต้องเก็บข้อมูลย้อนหลังนานมาก ควรใช้ระบบเก็บระยะยาวเสริม เช่น Thanos หรือ Mimir

พอร์ตที่ต้องเปิดบน Firewall

พอร์ตโปรโตคอลใช้ทำอะไร
9090TCPหน้าเว็บและ API ของ Prometheus (เปิดเฉพาะวงภายใน)
9100TCPNode Exporter บนเครื่องที่ถูกเฝ้าระวัง
9093TCPAlertmanager

สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ

  • ไม่เปิดพอร์ต 9090 สู่อินเทอร์เน็ต เพราะหน้าเว็บของ Prometheus ไม่มีระบบล็อกอินในตัว
  • ให้ Node Exporter รับการเชื่อมต่อเฉพาะจากไอพีของ Prometheus
  • วาง Reverse Proxy พร้อมการยืนยันตัวตนถ้าจำเป็นต้องเข้าจากภายนอก
  • ตั้งกฎแจ้งเตือนสำหรับพื้นที่ดิสก์ของตัว Prometheus เองด้วย

ทำไมควรรัน Prometheus บน Cloud Server ของ THAI DATA CLOUD

Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง

เก็บข้อมูลของ Cloud Server ทุกเครื่องในวง Private Network โดยไม่มีค่าทราฟฟิกภายใน

ใช้คู่กับ Grafana บนเครื่องเดียวกันหรือแยกเครื่องก็ได้ ตามขนาดของระบบ

ขยายดิสก์ได้ทันทีเมื่อต้องการเก็บข้อมูลย้อนหลังนานขึ้น

คำถามที่พบบ่อยเกี่ยวกับ Prometheus

Prometheus ต่างจาก Zabbix อย่างไร

Zabbix ครบในตัวเดียวและเหมาะกับการเฝ้าระวังอุปกรณ์หลากหลายรวมถึงเครือข่าย ส่วน Prometheus ออกแบบมาสำหรับระบบที่เปลี่ยนแปลงบ่อยอย่าง Container และเน้นตัวชี้วัดของแอป หลายองค์กรใช้ทั้งคู่ในบทบาทที่ต่างกัน

เก็บข้อมูลย้อนหลังได้นานแค่ไหน

ขึ้นกับพื้นที่ดิสก์และความละเอียดของข้อมูล ค่าเริ่มต้นที่หลายทีมใช้คือ 90 วัน ถ้าต้องเก็บเป็นปีควรต่อกับระบบเก็บระยะยาวแทนการเพิ่มดิสก์อย่างเดียว

เฝ้าระวัง Windows Server ได้ไหม

ได้ ใช้ Windows Exporter ที่ส่งข้อมูลในรูปแบบเดียวกัน แล้วเพิ่มเป็นเป้าหมายในไฟล์ตั้งค่าเหมือนเครื่อง Linux

บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง

ให้เราติดตั้ง Prometheus ให้ฟรี บน Cloud Server ในไทย

แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด