תיעוד 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.
#לפני שמתחילים
- צריך Cloudflare Tunnel. כדי ליצור מנהרה, ראו את מדריך תחילת העבודה.
#יצירת נקודת הקצה למדדים
אם המנהרה נוצרה דרך ה-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):
הורידו ↗︎ את Prometheus.
חלצו את Prometheus:
tar xvfz prometheus-*.tar.gz cd prometheus-*פתחו את
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הפעילו את Prometheus:
./prometheus --config.file="prometheus.yml"אפשר להגדיר את Prometheus כשירות, כך שלא יהיה צורך להפעיל אותו ידנית אם המכונה מופעלת מחדש.
פתחו דפדפן ועברו אל
http://localhost:9090/. אמורה להיות גישה ללוח הבקרה של Prometheus.כדי לוודא ש-Prometheus אוסף מדדי מנהרה, הזינו
cloudflared_tunnel_total_requestsבקונסולת הביטויים ובחרו Execute.
ראו Available metrics כדי לבדוק אילו מדדים נוספים זמינים.
#חיבור Grafana אל Prometheus
הורידו ↗︎ והתקינו את Grafana.
הפעילו את Grafana כשירות מערכת:
sudo systemctl daemon-reload sudo systemctl start grafana-serverודאו ש-Grafana פועל:
sudo systemctl status grafana-serverפתחו דפדפן ועברו אל
http://localhost:3000/. פורט ה-HTTP ש-Grafana מאזין לו כברירת מחדל הוא3000, אלא אם הוגדר פורט אחר.בדף הכניסה, הזינו את פרטי הגישה של Grafana.
כדי לבדוק בלי חשבון, אפשר להזין
adminגם כשם משתמש וגם כסיסמה, ולדלג על שלב שינוי הסיסמה.ב-Grafana, עברו אל Connections > Data sources.
בחרו Add a new data source ובחרו Prometheus.
בשדה Prometheus server URL, הזינו את כתובת ה-IP ואת הפורט של לוח הבקרה של Prometheus (
http://localhost:9090).בחרו Save & test.
#בניית לוח בקרה ב-Grafana
- ב-Grafana, עברו אל Dashboards > New > New dashboard.
- בחרו Add visualization.
- בחרו Prometheus.
- בשדה המדדים, הזינו
cloudflared_tunnel_total_requestsובחרו Run queries. יוצג גרף של מספר הבקשות כפונקציה של הזמן.

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