מדריך קלאודפלייר בעברית

תיעוד 155

ניטור Cloudflare Tunnel עם Grafana

Grafana ↗︎ הוא כלי לוחות בקרה שמציג נתונים שמאוחסנים במסדי נתונים אחרים. אפשר להשתמש ב-Grafana כדי להפוך את מדדי המנהרה לתובנות שאפשר לפעול לפיהן.

אי אפשר לדחוף מדדים ישירות מ-cloudflared אל Grafana. במקום זאת, cloudflared מריץ נקודת קצה למדדים של Prometheus ↗︎, ושרת Prometheus אוסף ממנה נתונים מדי פעם. Grafana משתמש אחר כך ב-Prometheus כמקור נתונים כדי להציג מדדים למנהל.

flowchart LR

  subgraph 192.168.1.1
  A[cloudflared]-->B[Metrics endpoint]
  end

  B--->C
  subgraph 192.168.1.2
  C[Prometheus server]-->D[Grafana dashboard]
  end

המדריך הזה מסביר איך ליצור את נקודת הקצה למדדים, איך להגדיר את שרת Prometheus, ואיך לצפות בנתונים ב-Grafana.

#לפני שמתחילים

#יצירת נקודת הקצה למדדים

אם המנהרה נוצרה דרך ה-CLI, הריצו את הפקודה הבאה בשרת cloudflared (192.168.1.1):

cloudflared tunnel --metrics 192.168.1.1:60123 run my-tunnel

אם המנהרה נוצרה דרך לוח הבקרה, צריך להוסיף את הדגל --metrics להגדרת שירות המערכת של cloudflared. ראו Add tunnel run parameters להנחיות איך לעשות זאת.

#הגדרת Prometheus

בשרת Prometheus ו-Grafana (192.168.1.2):

  1. הורידו ↗︎ את Prometheus.

  2. חלצו את Prometheus:

    tar xvfz prometheus-*.tar.gz
    cd prometheus-*
  3. פתחו את prometheus.yml בעורך טקסט והוסיפו את המשימה cloudflared לסוף הקובץ:

    # my global config
    global:
      scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
              # - alertmanager:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: "prometheus"
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
          - targets: ["localhost:9090"] ## Address of Prometheus dashboard
    
      - job_name: "cloudflared"
        static_configs:
          - targets: ["198.168.1.1:60123"] ## cloudflared server IP and the --metrics port configured for the tunnel
  4. הפעילו את Prometheus:

    ./prometheus --config.file="prometheus.yml"

    אפשר להגדיר את Prometheus כשירות, כך שלא יהיה צורך להפעיל אותו ידנית אם המכונה מופעלת מחדש.

  5. פתחו דפדפן ועברו אל http://localhost:9090/. אמורה להיות גישה ללוח הבקרה של Prometheus.

  6. כדי לוודא ש-Prometheus אוסף מדדי מנהרה, הזינו cloudflared_tunnel_total_requests בקונסולת הביטויים ובחרו Execute.לוח בקרה של Prometheus שמציג נתוני מדדי מנהרה

ראו Available metrics כדי לבדוק אילו מדדים נוספים זמינים.

#חיבור Grafana אל Prometheus

  1. הורידו ↗︎ והתקינו את Grafana.

  2. הפעילו את Grafana כשירות מערכת:

    sudo systemctl daemon-reload
    sudo systemctl start grafana-server
  3. ודאו ש-Grafana פועל:

    sudo systemctl status grafana-server
  4. פתחו דפדפן ועברו אל http://localhost:3000/. פורט ה-HTTP ש-Grafana מאזין לו כברירת מחדל הוא 3000, אלא אם הוגדר פורט אחר.

  5. בדף הכניסה, הזינו את פרטי הגישה של Grafana.

    כדי לבדוק בלי חשבון, אפשר להזין admin גם כשם משתמש וגם כסיסמה, ולדלג על שלב שינוי הסיסמה.

  6. ב-Grafana, עברו אל Connections > Data sources.

  7. בחרו Add a new data source ובחרו Prometheus.

  8. בשדה Prometheus server URL, הזינו את כתובת ה-IP ואת הפורט של לוח הבקרה של Prometheus (http://localhost:9090).

  9. בחרו Save & test.

#בניית לוח בקרה ב-Grafana

  1. ב-Grafana, עברו אל Dashboards > New > New dashboard.
  2. בחרו Add visualization.
  3. בחרו Prometheus.
  4. בשדה המדדים, הזינו cloudflared_tunnel_total_requests ובחרו Run queries. יוצג גרף של מספר הבקשות כפונקציה של הזמן.

לוח בקרה של Grafana שמציג גרף מדדי מנהרה

אפשר להוסיף פעולות לשאילתות כדי לשנות את מה שמוצג. לדוגמה, אפשר להציג את כל בקשות המנהרה בפרק זמן אחרון, כמו יום, במקום את כל בקשות המנהרה מאז שהמדדים התחילו להיות מדווחים.