คำตอบสั้น ๆ: ติดตั้ง Node Exporter บนเครื่องที่ต้องการวัดผล ตั้ง Prometheus ให้ดึงข้อมูล และเขียนกฎแจ้งเตือนพื้นฐานที่ใช้ได้จริง
คู่มือนี้อธิบาย Node Exporter ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Prometheus เป็นมาตรฐานที่ใช้กันแพร่หลายที่สุดสำหรับการเก็บเมตริกของเซิร์ฟเวอร์ จุดแข็งคือรูปแบบข้อมูลที่ค้นย้อนหลังได้ด้วยภาษา PromQL และระบบแจ้งเตือนที่เขียนเงื่อนไขซับซ้อนได้ ต่างจากระบบที่ดูได้อย่างเดียว
คู่มือนี้ติดตั้งสองส่วน คือ Node Exporter ที่ติดบนทุกเครื่องที่ต้องการวัดผล และ Prometheus ที่ทำหน้าที่ดึงข้อมูลมาเก็บ จากนั้นเขียนกฎแจ้งเตือนพื้นฐานที่ควรมีทุกระบบ
สิ่งที่ต้องเตรียม (Node Exporter)
- เซิร์ฟเวอร์อย่างน้อยหนึ่งเครื่องสำหรับรัน Prometheus และเครื่องที่ต้องการเฝ้าดู
- สิทธิ์
sudoและเครือข่ายภายในที่เครื่อง Prometheus เข้าถึงเครื่องอื่นได้ - พื้นที่ดิสก์สำหรับเก็บข้อมูล ประมาณ 2-3 GB ต่อเครื่องต่อเดือนที่ความถี่ 15 วินาที
ขั้นตอนที่ 1: ติดตั้ง Node Exporter บนเครื่องที่ต้องการวัด
cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar xzf node_exporter-1.8.2.linux-amd64.tar.gz
sudo mv node_exporter-1.8.2.linux-amd64/node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter
สร้าง service
sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter \
--web.listen-address=10.0.0.11:9100 \
--collector.systemd \
--collector.processes
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
curl -s http://10.0.0.11:9100/metrics | head -20
ระบุ IP ภายในใน --web.listen-address เสมอ อย่าปล่อยให้ฟังทุกการ์ดเครือข่าย เพราะหน้านี้เปิดเผยข้อมูลของเครื่องโดยไม่มีการยืนยันตัวตน
ปิดกั้นเพิ่มด้วย Firewall ให้เข้าได้เฉพาะจากเครื่อง Prometheus
sudo ufw allow from 10.0.0.5 to any port 9100 proto tcp
ขั้นตอนที่ 2: ติดตั้ง Prometheus
cd /tmp
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.53.1/prometheus-2.53.1.linux-amd64.tar.gz
tar xzf prometheus-2.53.1.linux-amd64.tar.gz
cd prometheus-2.53.1.linux-amd64
sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo cp prometheus promtool /usr/local/bin/
sudo cp -r consoles console_libraries /etc/prometheus/
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
ขั้นตอนที่ 3: ตั้งค่าว่าจะดึงข้อมูลจากที่ไหน
sudo nano /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
- /etc/prometheus/rules/*.yml
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['127.0.0.1:9090']
- job_name: node
static_configs:
- targets:
- '10.0.0.11:9100'
- '10.0.0.12:9100'
labels:
env: production
- targets:
- '10.0.0.21:9100'
labels:
env: staging
ตรวจไวยากรณ์ก่อนเสมอ
promtool check config /etc/prometheus/prometheus.yml
ขั้นตอนที่ 4: สร้าง service ของ Prometheus
sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus/ \
--storage.tsdb.retention.time=90d \
--web.listen-address=127.0.0.1:9090
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo mkdir -p /etc/prometheus/rules
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
sudo systemctl status prometheus --no-pager
เข้าหน้าเว็บผ่าน SSH Tunnel
ssh -L 9090:127.0.0.1:9090 [email protected] -N
เปิด http://127.0.0.1:9090/targets ทุกเป้าหมายควรขึ้นสถานะ UP