Prometheus คืออะไร และวิธีติดตั้งบน Cloud Server
Prometheus คือระบบเก็บค่าตัวชี้วัดของระบบตามช่วงเวลา พร้อมภาษาคิวรีที่ทรงพลังและกลไกแจ้งเตือน เป็นมาตรฐานของการเฝ้าระวังในโลก Container และ Kubernetes
- หมวดหมู่
- Monitoring และ Observability
- ติดตั้งบนเซิร์ฟเวอร์เองได้
- ได้
- สเปกเริ่มต้นที่แนะนำ
- 2 vCPU · RAM 4 GB
- ไลเซนส์
- Apache License 2.0 (โอเพนซอร์ส)
- เว็บทางการ
- เปิดเว็บไซต์
- 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
ดึงข้อมูลตามรอบ
เห็นทันทีเมื่อเป้าหมายหายไปจากระบบ ต่างจากรูปแบบที่รอให้ปลายทางส่งเข้ามา
PromQL ที่ทรงพลัง
คำนวณอัตรา ค่าเฉลี่ย และเปอร์เซ็นไทล์จากข้อมูลดิบได้ในคิวรีเดียว
Exporter จำนวนมาก
มีตัวส่งข้อมูลสำเร็จรูปสำหรับ Linux, Nginx, MySQL, Redis และอีกหลายร้อยระบบ
Alertmanager
จัดกลุ่มการแจ้งเตือน ระงับการแจ้งซ้ำ และส่งไปยังช่องทางที่ทีมใช้
มาตรฐานของ Kubernetes
เป็นระบบเฝ้าระวังที่คลัสเตอร์ Kubernetes ส่วนใหญ่ใช้อยู่แล้ว
ควรเก็บ Metric อะไรถึงจะรู้ปัญหาก่อนผู้ใช้
จำนวนตัวชี้วัดที่เก็บไม่ได้บอกว่าระบบถูกเฝ้าระวังดีแค่ไหน สิ่งที่บอกได้คือตัวชี้วัดเหล่านั้นตอบคำถามที่สำคัญได้หรือไม่ ทีมที่เก็บทุกอย่างแต่ตอบไม่ได้ว่าผู้ใช้ช้าเพราะอะไร ยังอยู่ในสถานะเดียวกับทีมที่ไม่ได้เก็บอะไรเลย
กรอบที่ใช้กันแพร่หลายสำหรับบริการที่มีผู้ใช้คือดูสี่สัญญาณหลัก ได้แก่ เวลาตอบสนอง ปริมาณคำขอ อัตราความผิดพลาด และระดับความอิ่มตัวของทรัพยากร สี่ค่านี้ครอบคลุมอาการเกือบทั้งหมดที่ผู้ใช้รู้สึกได้
สำหรับเครื่องและทรัพยากร กรอบที่ตรงกว่าคือดูอัตราการใช้งาน เวลารอคิว และจำนวนความผิดพลาดของแต่ละทรัพยากร เช่น ดิสก์ที่ใช้งานเต็มร้อยเปอร์เซ็นต์ตลอดเวลาแต่คิวสั้น ต่างจากดิสก์ที่คิวยาว ซึ่งอย่างหลังคือปัญหาจริง
- เวลาตอบสนองควรดูค่าเปอร์เซ็นไทล์ที่ 95 หรือ 99 ไม่ใช่ค่าเฉลี่ย เพราะค่าเฉลี่ยกลบผู้ใช้ที่เจอปัญหา
- อัตราความผิดพลาดควรแยกตามชนิดของข้อผิดพลาด เพื่อรู้ว่าปัญหาเกิดที่แอปหรือที่ปลายทางที่เรียกใช้
- ระดับความอิ่มตัวคือตัวที่บอกล่วงหน้าได้ดีที่สุดว่าอีกไม่นานจะล่ม
- ตัวชี้วัดของงานเบื้องหลัง เช่น ความยาวคิวและอายุของงานที่ค้างนานที่สุด
เขียนกฎแจ้งเตือนที่แจ้งเฉพาะเรื่องที่ต้องลงมือทำ
หลักที่ใช้ได้ดีคือแจ้งเตือนจากอาการที่ผู้ใช้รู้สึก ไม่ใช่จากสาเหตุภายในทุกจุด เพราะสาเหตุมีได้หลายสิบแบบแต่อาการที่กระทบธุรกิจมีไม่กี่อย่าง การแจ้งจากอาการทำให้จำนวนกฎน้อยลงและทุกกฎมีความหมาย
ทุกกฎควรมีเงื่อนไขระยะเวลากำกับ เพื่อไม่ให้ค่าที่กระโดดขึ้นชั่วครู่กลายเป็นการแจ้งเตือน และควรเขียนคำอธิบายไว้ในกฎว่าเมื่อเกิดเหตุนี้ควรตรวจอะไรก่อน ซึ่งช่วยคนที่รับเวรกลางคืนได้มากที่สุด
สุดท้ายควรมีกฎที่เฝ้าตัวระบบเฝ้าระวังเองด้วย เช่น เมื่อเป้าหมายหายไปจากการเก็บข้อมูลหรือพื้นที่ดิสก์ของระบบเก็บข้อมูลใกล้เต็ม เพราะระบบที่เงียบอาจไม่ได้หมายความว่าทุกอย่างปกติ
ใช้ Prometheus ทำอะไรได้บ้าง
- เฝ้าระวังเซิร์ฟเวอร์และคอนเทนเนอร์ในระบบที่เปลี่ยนแปลงบ่อย
- เก็บตัวชี้วัดของแอปที่ทีมพัฒนาสร้างขึ้นเอง
- ตั้งกฎแจ้งเตือนที่อิงพฤติกรรมจริง เช่น อัตราความผิดพลาดของ API
- เป็นแหล่งข้อมูลให้ Grafana ทำแดชบอร์ด
สเปก Cloud Server ที่แนะนำ
| ระดับการใช้งาน | vCPU | RAM | Disk |
|---|---|---|---|
| เริ่มต้นเฝ้าระวังไม่กี่สิบเป้าหมาย | 2 vCPU | 4 GB | NVMe 60 GB |
| แนะนำระบบขนาดกลางพร้อมเก็บข้อมูลย้อนหลังหลายเดือน | 4 vCPU | 8 GB | NVMe 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
สร้างผู้ใช้และดาวน์โหลด 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
ติดตั้งไฟล์และตั้งสิทธิ์
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
สร้างไฟล์ตั้งค่า /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
สร้างบริการ 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
เปิดบริการ
sudo systemctl daemon-reload sudo systemctl enable --now prometheus - 6
ติดตั้ง Node Exporter บนเครื่องที่ต้องการเฝ้าระวัง
sudo apt -y install prometheus-node-exporter sudo systemctl enable --now prometheus-node-exporter
ตั้งค่า retention ให้สมดุลกับพื้นที่ดิสก์ ถ้าต้องเก็บข้อมูลย้อนหลังนานมาก ควรใช้ระบบเก็บระยะยาวเสริม เช่น Thanos หรือ Mimir
พอร์ตที่ต้องเปิดบน Firewall
| พอร์ต | โปรโตคอล | ใช้ทำอะไร |
|---|---|---|
| 9090 | TCP | หน้าเว็บและ API ของ Prometheus (เปิดเฉพาะวงภายใน) |
| 9100 | TCP | Node Exporter บนเครื่องที่ถูกเฝ้าระวัง |
| 9093 | TCP | Alertmanager |
สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ
- ไม่เปิดพอร์ต 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
ทางเลือกอื่นที่คล้ายกับ Prometheus
- #22Zabbixระบบเฝ้าระวังโครงสร้างพื้นฐานครบวงจรMonitoring และ Observability
- #20Grafanaแดชบอร์ดกราฟที่ต่อได้ทุกแหล่งข้อมูลMonitoring และ Observability
- #44Netdataมอนิเตอร์เซิร์ฟเวอร์แบบเรียลไทม์ ติดตั้งใน 1 นาทีMonitoring และ Observability
- Grafana Lokiเก็บ Log แบบประหยัดพื้นที่ คู่กับ GrafanaMonitoring และ Observability
แอปอื่นในหมวด Monitoring และ Observability
บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง
ให้เราติดตั้ง Prometheus ให้ฟรี บน Cloud Server ในไทย
แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด