−25%

cho Windows trả theo năm, đến 31/10. Xem các gói

EQVPS

VPS để giám sát máy chủ với Grafana + Prometheus

Thu thập số liệu CPU, RAM, ổ đĩa và dịch vụ từ mọi máy chủ về một nơi: Prometheus, node_exporter và Grafana trên một VPS, phía sau HTTPS.

“Máy chủ chậm” là một báo lỗi vô dụng, trừ khi bạn có thể mở biểu đồ và thấy bộ nhớ đã tăng suốt ba ngày trước khi sập. Đó là điều Prometheus và Grafana mang lại: CPU, RAM, ổ đĩa và mạng của mọi máy chủ, được ghi lại mỗi 15 giây và vẽ thành biểu đồ mà bạn có thể cuộn ngược lại. Hãy đặt chúng trên một VPS nhỏ riêng, và chúng vẫn tiếp tục theo dõi ngay cả khi một máy production ngã xuống.

Các thành phần

Bạn cần gì

1. node_exporter trên mỗi máy mục tiêu

apt install -y prometheus-node-exporter
# allow only the monitoring server to scrape it
ufw allow from 203.0.113.10 to any port 9100 proto tcp

Thay 203.0.113.10 bằng địa chỉ VPS giám sát của bạn. Đừng bao giờ để cổng 9100 mở cho cả thế giới: nó tiết lộ rất nhiều về máy chủ của bạn.

2. Prometheus và Grafana trên VPS giám sát

apt update && apt install -y docker.io docker-compose-v2 caddy
mkdir -p /opt/monitoring && cd /opt/monitoring

cat > prometheus.yml <<'EOF'
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: nodes
    static_configs:
      - targets: ['198.51.100.21:9100', '198.51.100.22:9100']
EOF

cat > compose.yml <<'EOF'
services:
  prometheus:
    image: prom/prometheus
    volumes: [ "./prometheus.yml:/etc/prometheus/prometheus.yml:ro", "prom:/prometheus" ]
    command: [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=15d", "--web.enable-remote-write-receiver" ]
    ports: [ "127.0.0.1:9090:9090" ]
    restart: unless-stopped
  grafana:
    image: grafana/grafana
    volumes: [ "grafana:/var/lib/grafana" ]
    ports: [ "127.0.0.1:3000:3000" ]
    restart: unless-stopped
volumes: { prom: {}, grafana: {} }
EOF

docker compose up -d

HTTPS phía trước Grafana:

echo 'grafana.example.com {
    reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy

Đăng nhập (admin / admin, rồi đổi mật khẩu), thêm Prometheus làm nguồn dữ liệu tại http://prometheus:9090 và nhập bảng điều khiển cộng đồng “Node Exporter Full” (ID 1860). Chỉ trong khoảng một phút bạn đã có bảng điều khiển hệ thống đầy đủ.

Máy chủ dùng gói NAT

Máy chủ NAT chỉ nhận kết nối đi vào trên cổng SSH cá nhân, nên Prometheus không thể thu thập từ exporter của nó. Hãy đảo chiều: chạy Prometheus ở chế độ agent trên máy NAT và đẩy dữ liệu tới máy chủ giám sát, vốn đã nhận ghi từ xa (cờ --web.enable-remote-write-receiver ở trên).

# /etc/prometheus/agent.yml on the NAT server
scrape_configs:
  - job_name: self
    static_configs: [ { targets: ['127.0.0.1:9100'] } ]
remote_write:
  - url: https://prom-push.example.com/api/v1/write

Hãy công khai điểm nhận dữ liệu đó qua Caddy với basic auth, thay vì mở thẳng cổng 9090.

Ghi chú thật lòng

Prometheus hoạt động theo kiểu kéo (pull): tuyệt vời cho một đội máy bạn kiểm soát và bất tiện cho mọi thứ phía sau NAT, vì thế mới có mẹo dùng agent. Kho lưu trữ cục bộ của nó không được thiết kế cho lịch sử nhiều năm; để lưu lâu, sau này bạn sẽ thêm kho lưu trữ từ xa. Và bảng điều khiển chỉ là một nửa giá trị: hãy đặt ít nhất ba cảnh báo ngay ngày đầu (ổ đĩa trên 85%, áp lực bộ nhớ, máy mục tiêu ngừng phản hồi), nếu không bạn sẽ chỉ nhìn biểu đồ sau khi có gì đó đã hỏng.

Liên quan

Sẵn sàng triển khai? Thanh toán bằng crypto, không KYC — trực tuyến trong khoảng một phút.

Triển khai ngay →

FAQ

Cái này khác Uptime Kuma thế nào?

Uptime Kuma trả lời câu hỏi “nó có đang chạy không?”. Prometheus và Grafana trả lời “vì sao nó chậm, và từ khi nào?”: số liệu CPU, bộ nhớ, ổ đĩa, mạng và ứng dụng theo thời gian. Nhiều người dùng cả hai: Kuma để cảnh báo sự cố, Grafana để theo dõi xu hướng và lập kế hoạch dung lượng.

Prometheus dùng bao nhiêu ổ đĩa?

Khoảng 1–2 byte mỗi mẫu sau khi nén. Mười máy chủ, mỗi máy xuất một nghìn chuỗi, được thu thập mỗi 15 giây, cho ra khoảng 60 triệu mẫu mỗi ngày: cỡ 100 MB. Với thời gian lưu mặc định 15 ngày, tổng cộng vài gigabyte.

Tôi có thể giám sát máy chủ dùng gói NAT không?

Có, nhưng không phải bằng cách thu thập kéo về: máy chủ NAT không nhận kết nối đi vào tới exporter. Hãy chạy Prometheus ở chế độ agent trên máy NAT và đẩy số liệu tới máy chủ giám sát bằng remote_write. Bản thân máy chủ giám sát nên dùng gói có IP riêng.

Máy chủ giám sát nên dùng gói nào?

Micro-IP (2 GB RAM, $10/tháng) xử lý thoải mái một đến hai chục máy. Nếu bạn thêm số liệu ứng dụng có cardinality cao hoặc giữ dữ liệu nhiều tháng, hãy lên Small-IP. IP riêng cho bạn HTTPS cho Grafana và một địa chỉ cố định để đưa vào danh sách cho phép trên các máy mục tiêu.

Máy chủ giám sát có nên tách riêng khỏi những gì nó giám sát?

Có. Nếu Grafana chạy trên chính máy chủ vừa hết bộ nhớ, bạn mất tầm nhìn vào sự cố đúng lúc cần nhất. Một VPS nhỏ tách riêng vẫn tiếp tục hoạt động khi máy production gặp sự cố.

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.