คำตอบสั้น ๆ: ติดตั้ง Grafana ต่อกับ Prometheus นำเข้า Dashboard สำเร็จรูป และตั้งการแจ้งเตือนที่ส่งเข้า LINE หรืออีเมล
คู่มือนี้อธิบาย Prometheus ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Prometheus เก็บข้อมูลได้ดีแต่แสดงผลได้พื้นฐานมาก Grafana คือส่วนที่ทำให้ข้อมูลเหล่านั้นกลายเป็น Dashboard ที่ดูแล้วเข้าใจสถานะทั้งระบบได้ในหน้าจอเดียว
คู่มือนี้ต่อยอดจากการติดตั้ง Prometheus และ Node Exporter โดยเพิ่ม Grafana นำเข้า Dashboard สำเร็จรูปที่ชุมชนทำไว้แล้ว และตั้งการแจ้งเตือน
สิ่งที่ต้องเตรียม
- Prometheus ที่ทำงานอยู่แล้วและเก็บข้อมูลจาก Node Exporter
- Docker และโดเมนย่อยสำหรับเข้าหน้าจอ
curl -s http://127.0.0.1:9090/-/healthy
ขั้นตอนที่ 1: ติดตั้ง Grafana
sudo mkdir -p /opt/grafana/data
sudo chown -R 472:472 /opt/grafana/data
cd /opt/grafana
sudo nano docker-compose.yml
services:
grafana:
image: grafana/grafana-oss:latest
container_name: grafana
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
volumes:
- ./data:/var/lib/grafana
- ./provisioning:/etc/grafana/provisioning
environment:
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: รหัสผ่านที่แข็งแรง
GF_SERVER_ROOT_URL: https://grafana.example.com
GF_USERS_ALLOW_SIGN_UP: "false"
GF_ANALYTICS_REPORTING_ENABLED: "false"
TZ: Asia/Bangkok
extra_hosts:
- "host.docker.internal:host-gateway"
sudo docker compose up -d
sudo docker compose logs -f grafana
บรรทัด extra_hosts ทำให้คอนเทนเนอร์เรียก Prometheus ที่รันบนเครื่องแม่ได้ผ่านชื่อ host.docker.internal
ขั้นตอนที่ 2: ตั้ง Data Source อัตโนมัติ
แทนที่จะคลิกตั้งเองในหน้าเว็บ ให้เขียนเป็นไฟล์ ซึ่งทำให้สร้างเครื่องใหม่ได้เหมือนเดิมทุกครั้ง
sudo mkdir -p /opt/grafana/provisioning/datasources
sudo nano /opt/grafana/provisioning/datasources/prometheus.yml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://host.docker.internal:9090
isDefault: true
editable: false
jsonData:
timeInterval: 15s
sudo docker compose restart grafana
ขั้นตอนที่ 3: ตั้ง Nginx และ SSL
sudo nano /etc/nginx/sites-available/grafana
server {
listen 80;
server_name grafana.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d grafana.example.com --agree-tos -m [email protected] --redirect
ขั้นตอนที่ 4: นำเข้า Dashboard สำเร็จรูป
เข้าหน้าเว็บแล้วไปที่ Dashboards แล้ว New แล้ว Import ใส่หมายเลขแล้วกด Load เลือก Data Source เป็น Prometheus
- 1860 Node Exporter Full ครอบคลุมทุกเมตริกของเซิร์ฟเวอร์ เป็นตัวที่ควรมีก่อนอื่น
- 7362 MySQL Overview
- 9628 PostgreSQL Database
- 12708 Nginx
- 193 Docker และ Container
Dashboard 1860 มีกราฟกว่าร้อยแผง ซึ่งอาจมากเกินไปสำหรับการดูประจำวัน แนะนำให้สร้าง Dashboard ของตัวเองที่มีเฉพาะสิ่งที่ดูจริง แล้วใช้ 1860 เมื่อต้องเจาะลึก