Το «ο server είναι αργός» είναι άχρηστη αναφορά σφάλματος, εκτός αν μπορείτε να ανοίξετε ένα γράφημα και να δείτε ότι η μνήμη ανέβαινε τρεις μέρες πριν την κατάρρευση. Αυτό σας δίνουν τα Prometheus και Grafana: CPU, RAM, δίσκο και δίκτυο κάθε server, καταγεγραμμένα κάθε 15 δευτερόλεπτα και σχεδιασμένα σε γραφήματα όπου μπορείτε να γυρίσετε πίσω. Βάλτε τα σε δικό τους μικρό VPS και συνεχίζουν να παρακολουθούν ακόμα κι όταν πέσει ένα μηχάνημα παραγωγής.
Τα κομμάτια
- node_exporter σε κάθε server που θέλετε να παρακολουθείτε: εκθέτει μετρικές συστήματος στη θύρα 9100.
- Prometheus στο VPS παρακολούθησης: τραβά (scrape) αυτές τις μετρικές και τις αποθηκεύει.
- Grafana: τα dashboards, πίσω από HTTPS.
- Προαιρετικά Alertmanager ή ειδοποιήσεις Grafana για να σας στέλνουν μήνυμα όταν κάτι περάσει ένα όριο.
Τι χρειάζεστε
- Micro-IP ($10/μήνα, 2 vCPU, 2 GB RAM, 25 GB) παρακολουθεί δέκα με είκοσι servers. Για περισσότερους hosts, δικές σας μετρικές εφαρμογών ή διατήρηση μηνών: Small-IP.
- Αποκλειστική IPv4 για τον server παρακολούθησης: το Grafana σερβίρεται μέσω HTTPS και οι στόχοι σας μπορούν να βάλουν σε whitelist μία σταθερή διεύθυνση για τη θύρα 9100.
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%, πίεση μνήμης, στόχος εκτός), αλλιώς θα κοιτάζετε τα γραφήματα μόνο αφού κάτι έχει ήδη χαλάσει.
Σχετικά
- VPS για παρακολούθηση uptime (Uptime Kuma): ειδοποιήσεις διακοπών και σελίδες κατάστασης
- Πώς να ρυθμίσετε firewall UFW
- Πόση RAM χρειάζεται ένα VPS;
Σχόλια
Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.