−25%

על Windows בתשלום שנתי, עד 31.10. לחבילות

EQVPS

VPS לניטור שרתים עם Grafana ו-Prometheus

אספו מדדי CPU, ‏RAM, דיסק ושירותים מכל השרתים שלכם במקום אחד: ‏Prometheus, ‏node_exporter ו-Grafana על VPS, מאחורי HTTPS.

«השרת איטי» הוא דיווח באג חסר תועלת, אלא אם אפשר לפתוח גרף ולראות שהזיכרון טיפס שלושה ימים לפני הקריסה. זה מה ש-Prometheus ו-Grafana נותנים: ה-CPU, ה-RAM, הדיסק והרשת של כל שרת, נרשמים כל 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 פתוח לעולם; הוא מדליף הרבה על השרת שלכם.

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, וייבאו את דשבורד הקהילה «Node Exporter Full» ‏(ID 1860). תוך כדקה יש לכם דשבורד מערכת מלא.

שרתים בתוכניות NAT

שרת NAT מקבל חיבורים נכנסים רק על פורט ה-SSH האישי שלו, אז Prometheus לא יכול למשוך את ה-exporter שלו. הפכו את הכיוון: הריצו Prometheus ב-מצב agent על מכונת ה-NAT ודחפו לשרת הניטור, שכבר מקבל כתיבה מרחוק (הדגל --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 הזו דרך Caddy עם basic auth במקום לפתוח את פורט 9090 גולמי.

הערות כנות

‏Prometheus מושך; זה מצוין לצי שרתים שבשליטתכם ומסורבל לכל מה שמאחורי NAT, ומכאן טריק ה-agent. האחסון המקומי שלו לא נועד לשנים של היסטוריה; לשמירה ארוכה תוסיפו בהמשך אחסון מרוחק. ודשבורדים הם רק חצי מהערך: הגדירו לפחות שלוש התראות מהיום הראשון (דיסק מעל 85%, לחץ זיכרון, יעד לא זמין), אחרת תסתכלו בגרפים רק אחרי שמשהו כבר נשבר.

קשור

מוכנים להקים? שלמו בקריפטו, ללא KYC — חי בערך תוך דקה.

הקימו עכשיו →

שאלות נפוצות

במה זה שונה מ-Uptime Kuma?

‏Uptime Kuma עונה על «האם זה למעלה?». ‏Prometheus ו-Grafana עונים על «למה זה איטי, ומתי זה התחיל?»: מדדי CPU, זיכרון, דיסק, רשת ואפליקציה לאורך זמן. הרבה אנשים מריצים את שניהם: ‏Kuma להתראות על נפילות, ‏Grafana למגמות ולתכנון קיבולת.

כמה דיסק Prometheus צורך?

בערך 1–2 בתים לדגימה אחרי דחיסה. עשרה שרתים שכל אחד מייצא אלף סדרות, נדגמים כל 15 שניות, מגיעים לכ-60 מיליון דגימות ביום, בסדר גודל של 100 MB. עם שמירה ברירת מחדל של 15 יום זה כמה ג'יגהבייטים.

אפשר לנטר שרתים בתוכניות NAT?

כן, אבל לא ב-scraping: שרת NAT לא מקבל חיבורים נכנסים ל-exporter שלו. הריצו Prometheus במצב agent על מכונת ה-NAT ודחפו מדדים לשרת הניטור עם remote_write. שרת הניטור עצמו צריך להיות על תוכנית עם IP ייעודי.

על איזו תוכנית צריך להיות שרת הניטור?

‏Micro-IP ‏(2 GB RAM, ‏$10/חודש) מטפלת בנוחות בעשרה עד עשרים מארחים. אם מוסיפים מדדי אפליקציה עם cardinality גבוהה או שומרים חודשים של נתונים, עברו ל-Small-IP. ‏IP ייעודי נותן HTTPS ל-Grafana וכתובת קבועה להכניס לרשימות היתר של היעדים.

האם שרת הניטור צריך להיות נפרד ממה שהוא מנטר?

כן. אם Grafana רץ על השרת שנגמר לו הזיכרון עכשיו, אתם מאבדים את התמונה של הבעיה בדיוק ברגע שאתם צריכים אותה. ‏VPS קטן ונפרד ממשיך לעבוד כשמכונת הפרודקשן לא.

תגובות

אין עדיין תגובות. היו הראשונים.

השאירו תגובה

התגובות עוברות מודרציה לפני שהן מופיעות.