Kibana — ויזואליזציה לנתוני Elasticsearch
מה זה?
כתיבת שאילתת JSON כל פעם רק כדי “לבדוק מה יש ב-Index” מסורבלת. Kibana פותר את זה: ממשק ויזואלי שרץ לצד Elasticsearch, נותן עורך שאילתות נוח (Dev Tools), חיפוש חופשי בלי קוד, ולוחות מחוונים (Dashboards) עם גרפים שנבנים מ-Aggregations — בדיוק כמו שכבר תרגלנו, אבל מוצגים ויזואלית במקום JSON גולמי.
מילות מפתח שחשוב לזכור
• Kibana — כלי ויזואליזציה וניהול שמתחבר ל-Elasticsearch, בדרך כלל רץ כקונטיינר נפרד לצדו
• Dev Tools — עורך שאילתות מובנה בתוך Kibana, נוח לכתיבה ובדיקה של שאילתות JSON בלי קוד C#/curl
• Index Pattern (Data View) — הגדרה ב-Kibana שאומרת לה על אילו Indices להסתכל בעת יצירת ויזואליזציות
• Dashboard — לוח מחוונים עם כמה גרפים/טבלאות יחד, נבנה מ-Aggregations שכבר מוכרות
# docker-compose.yml — Elasticsearch + Kibana together (a hint for the next unit)
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0
environment:
- discovery.type=single-node
- xpack.security.enabled=false
ports:
- "9200:9200"
kibana:
image: docker.elastic.co/kibana/kibana:8.15.0
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200# Dev Tools inside Kibana — the same query already written in previous lessons,
# but in a convenient editor with autocomplete, no curl/code:
GET /products/_search
{
"query": { "match": { "name": "shoes" } }
}הסבר עיקרי
Kibana לא מחליף שום דבר שכבר נלמד — כל שאילתת match/term/bool/aggs שכבר נכתבה עדיין עובדת בדיוק אותו הדבר — Kibana רק נותן ממשק נוח יותר לכתוב ולהריץ אותן (Dev Tools), ולתרגם Aggregations לגרפים ויזואליים (Dashboards) במקום JSON גולמי שצריך לפרש בעין.
Index Pattern הוא הגשר בין Elasticsearch ל-Kibana — לפני שאפשר לבנות ויזואליזציה, Kibana צריכה לדעת “על אילו Indices להסתכל” — Index Pattern (שם חדש יותר: Data View) הוא ההגדרה הזו. זה שלב חד-פעמי, לא צריך להגדיר מחדש לכל גרף.
Dashboard בונה על Aggregations שכבר מוכרות — גרף “כמות מוצרים לפי קטגוריה” ב-Kibana הוא בדיוק ה-terms Aggregation מהשיעור הרביעי, רק מוצג כעוגה/עמודות ויזואלית במקום JSON עם מספרים. מי שמבין Aggregations כבר מבין את הבסיס הרעיוני של כל Dashboard ב-Kibana.
יתרונות
Kibana נותן ממשק ויזואלי נוח לבדיקת נתונים ושאילתות בלי לכתוב קוד; Dev Tools עם Autocomplete מאיץ כתיבת שאילתות JSON; Dashboards הופכים Aggregations למידע ויזואלי קריא לבעלי עניין לא-טכניים.
חסרונות
Kibana דורש קונטיינר/משאב נוסף לצד Elasticsearch עצמו; Dashboards מורכבים דורשים זמן בנייה, ולא תמיד מחליפים שאילתה תוכנתית ממוקדת בקוד.
נקודות חשובות
• Kibana הוא כלי ויזואליזציה/ניהול, לא מחליף את Elasticsearch — עובד לצדו
• Dev Tools מאפשר לכתוב את אותן שאילתות JSON שכבר נלמדו, בממשק נוח יותר
• Index Pattern (Data View) הוא השלב שמחבר Kibana ל-Index ספציפי לפני ויזואליזציה
• Dashboard = ויזואליזציה של Aggregations שכבר מוכרות, לא מושג חדש בפני עצמו
טעויות נפוצות
• לחשוב ש-Kibana הוא DB נפרד או תחליף ל-Elasticsearch — הוא רק שכבת ויזואליזציה מעליו
• לנסות לבנות Dashboard בלי להגדיר Index Pattern קודם — הוא לא “יודע” על אילו נתונים להסתכל
• להתעלם מ-Dev Tools ולהמשיך לכתוב שאילתות רק ב-curl/קוד — מפספס כלי בדיקה מהיר ונוח
סיכום
Kibana הוא כלי ויזואליזציה וניהול שרץ לצד Elasticsearch — Dev Tools נותן עורך שאילתות נוח (אותן שאילתות match/bool/aggs שכבר נלמדו), ו-Dashboards הופכים Aggregations למידע ויזואלי (גרפים, טבלאות) לבעלי עניין לא-טכניים. Index Pattern הוא השלב שמחבר Kibana ל-Index ספציפי. זהו סיום היחידה — כל הכלים (Document/Index/Mapping, text/keyword, שאילתות, Aggregations) מתחברים כאן לחוויית עבודה שלמה.
דוקומנטציה רשמית
תרגילים
תרגיל 1 — הרצת Kibana והתחברות
המשימה: הריצו Kibana כקונטיינר (עם docker-compose מהדוגמה או docker run נפרד), וגשו אליו דרך הדפדפן (localhost:5601).
בדיקה: ממשק Kibana נטען בהצלחה ומראה שהוא מחובר ל-Elasticsearch.
תרגיל 2 — Dev Tools
המשימה: הריצו ב-Dev Tools של Kibana שאילתה שכבר כתבתם בשיעורים קודמים (למשל bool עם must+filter).
בדיקה: התוצאה זהה למה שקיבלתם קודם דרך curl/קוד — הוכחה ש-Kibana רק “עוד ממשק” לאותה Elasticsearch.
פרויקט מסכם
המשימה: בנו Dashboard בסיסי ב-Kibana ל-Index products או Articles.
דרישות:
- הגדירו Index Pattern (Data View) ל-Index הרלוונטי
- צרו ויזואליזציה אחת מבוססת
termsAggregation (למשל עוגה/עמודות לפי קטגוריה/תג) - צרו ויזואליזציה שנייה מבוססת Metric (למשל ממוצע מחיר, או ציר זמן לפי תאריך פרסום)
- שלבו את שתיהן ב-Dashboard אחד
בדיקה: ה-Dashboard מציג את שתי הויזואליזציות עם נתונים נכונים, תואמים למה שהתקבל בשאילתות JSON המקבילות בשיעורים הקודמים.
מה בפרק הבא
בפרק הבא נעבור ליחידה חדשה — ממונוליט למיקרוסרביסים: איך מפרקים אפליקציה גדולה אחת (מונוליט) לשירותים עצמאיים קטנים יותר, ומתי זה בכלל שווה את המורכבות הנוספת.