−25%

στα Windows με ετήσια χρέωση, έως 31/10. Δείτε τα πακέτα

EQVPS

VPS για παρακολούθηση servers με Grafana και Prometheus

Συγκεντρώστε μετρικές CPU, RAM, δίσκου και υπηρεσιών από όλους τους servers σας σε ένα σημείο: Prometheus, node_exporter και Grafana σε VPS, πίσω από HTTPS.

Το «ο server είναι αργός» είναι άχρηστη αναφορά σφάλματος, εκτός αν μπορείτε να ανοίξετε ένα γράφημα και να δείτε ότι η μνήμη ανέβαινε τρεις μέρες πριν την κατάρρευση. Αυτό σας δίνουν τα Prometheus και Grafana: CPU, RAM, δίσκο και δίκτυο κάθε server, καταγεγραμμένα κάθε 15 δευτερόλεπτα και σχεδιασμένα σε γραφήματα όπου μπορείτε να γυρίσετε πίσω. Βάλτε τα σε δικό τους μικρό VPS και συνεχίζουν να παρακολουθούν ακόμα κι όταν πέσει ένα μηχάνημα παραγωγής.

Τα κομμάτια

Τι χρειάζεστε

1. node_exporter σε κάθε στόχο

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

Αντικαταστήστε το 203.0.113.10 με τη διεύθυνση του VPS παρακολούθησης. Μην αφήνετε ποτέ την 9100 ανοιχτή στον κόσμο· αποκαλύπτει πολλά για τον server σας.

2. Prometheus και Grafana στο VPS παρακολούθησης

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 μπροστά από το Grafana:

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

Συνδεθείτε (admin / admin, μετά αλλάξτε το), προσθέστε το Prometheus ως πηγή δεδομένων στο http://prometheus:9090 και εισαγάγετε το dashboard της κοινότητας «Node Exporter Full» (ID 1860). Σε περίπου ένα λεπτό έχετε πλήρες dashboard συστήματος.

Servers σε πακέτα NAT

Ένας server NAT δέχεται εισερχόμενες συνδέσεις μόνο στην προσωπική του θύρα SSH, οπότε το Prometheus δεν μπορεί να κάνει scrape τον exporter του. Αντιστρέψτε την κατεύθυνση: τρέξτε το Prometheus σε λειτουργία agent στο μηχάνημα NAT και στείλτε στον server παρακολούθησης, που ήδη δέχεται remote writes (η σημαία --web.enable-remote-write-receiver παραπάνω).

# /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

Εκθέστε αυτό το push endpoint μέσω Caddy με basic auth αντί να ανοίξετε γυμνή τη θύρα 9090.

Ειλικρινείς σημειώσεις

Το Prometheus τραβά (pull)· αυτό είναι εξαιρετικό για στόλο που ελέγχετε και άβολο για οτιδήποτε πίσω από NAT, εξ ου και το κόλπο του agent. Η τοπική του αποθήκευση δεν προορίζεται για χρόνια ιστορικού· για μακρά διατήρηση θα προσθέσετε αργότερα απομακρυσμένη αποθήκη. Και τα dashboards είναι μόνο η μισή αξία: ορίστε τουλάχιστον τρεις ειδοποιήσεις από την πρώτη μέρα (δίσκος πάνω από 85%, πίεση μνήμης, στόχος εκτός), αλλιώς θα κοιτάζετε τα γραφήματα μόνο αφού κάτι έχει ήδη χαλάσει.

Σχετικά

Έτοιμοι για ανάπτυξη; Πληρωμή με crypto, χωρίς KYC — έτοιμο σε περίπου ένα λεπτό.

Ανάπτυξη τώρα →

Συχνές ερωτήσεις

Σε τι διαφέρει αυτό από το Uptime Kuma;

Το Uptime Kuma απαντά στο «είναι πάνω;». Τα Prometheus και Grafana απαντούν στο «γιατί είναι αργό και πότε ξεκίνησε;»: μετρικές CPU, μνήμης, δίσκου, δικτύου και εφαρμογών στον χρόνο. Πολλοί τρέχουν και τα δύο: το Kuma για ειδοποιήσεις διακοπών, το Grafana για τάσεις και σχεδιασμό χωρητικότητας.

Πόσο δίσκο χρησιμοποιεί το Prometheus;

Περίπου 1–2 bytes ανά δείγμα μετά τη συμπίεση. Δέκα servers που εξάγουν χίλιες σειρές ο καθένας, με συλλογή κάθε 15 δευτερόλεπτα, βγάζουν περίπου 60 εκατομμύρια δείγματα την ημέρα, δηλαδή της τάξης των 100 MB. Με την προεπιλεγμένη διατήρηση 15 ημερών, αυτό είναι μερικά gigabytes.

Μπορώ να παρακολουθώ servers σε πακέτα NAT;

Ναι, αλλά όχι με scraping: ένας server NAT δεν δέχεται εισερχόμενες συνδέσεις στον exporter του. Τρέξτε το Prometheus σε λειτουργία agent στο μηχάνημα NAT και στείλτε τις μετρικές στον server παρακολούθησης με remote_write. Ο ίδιος ο server παρακολούθησης πρέπει να είναι σε πακέτο με αποκλειστικό IP.

Σε ποιο πακέτο να είναι ο server παρακολούθησης;

Το Micro-IP (2 GB RAM, $10/μήνα) εξυπηρετεί άνετα δέκα με είκοσι hosts. Αν προσθέσετε μετρικές εφαρμογών υψηλής cardinality ή κρατάτε δεδομένα μηνών, πηγαίνετε στο Small-IP. Ένα αποκλειστικό IP σάς δίνει HTTPS για το Grafana και μια σταθερή διεύθυνση για whitelist στους στόχους σας.

Πρέπει ο server παρακολούθησης να είναι ξεχωριστός από ό,τι παρακολουθεί;

Ναι. Αν το Grafana τρέχει στον server που μόλις έμεινε από μνήμη, χάνετε την εικόνα του προβλήματος τη στιγμή που τη χρειάζεστε. Ένα μικρό ξεχωριστό VPS συνεχίζει να δουλεύει όταν το μηχάνημα παραγωγής δεν δουλεύει.

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.

Αφήστε ένα σχόλιο

Τα σχόλια ελέγχονται πριν εμφανιστούν.