English
תנועה
נגישותפרטיות
סיפור הפרויקט14 / 15אפריל 2022 – יולי 2023

פרויקט P.I.N.G.E.R.‎

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

תפקיד
מפתח יחיד
ארגון
תקשוב אכ״א – ענף התקשוב והדיגיטל של אגף כוח האדם (אכ״א), צה״ל
תקופה
אפריל 2022 – יולי 2023
הקשר
שירות צבאי בתקשוב אכ״א

01 / האתגר

צוות הרשת היה אחראי למתגים – הרכיבים שמחברים את הציוד בכל אתר לרשת – באתרים ברחבי הארץ. המתגים תקשרו ביניהם ברשת נפרדת שמשמשת רק לכך. כדי לדעת אם אתר נפל מהרשת, מישהו היה צריך לשלוח למתגים שלו פינג ידני (בדיקת "אתה שם?" מהירה), כתובת אחרי כתובת, מתוך רשימה. בלי דרך יעילה לעשות את זה, סבב בדיקה מלא נעשה רק פעם או פעמיים בכמה חודשים.

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

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

02 / מה בניתי

בניתי אפליקציית דסקטופ במסך מלא לעמדת הניטור של הצוות. על מפת ישראל מופיע נעץ לכל אתר, ומאחורי כל נעץ נמצאים המתגים של אותו אתר. פעם בדקה האפליקציה בודקת את כולם, וכל נעץ וכל כרטיס נצבעים בירוק או באדום לפי התשובה.

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

איך זה נבנה

  1. אפריל 2022מסקריפט למפהסקריפט של 72 שורות שלח פינג במקביל למתג הראשי של כל אתר. יומיים אחר כך כבר הייתה לו מפה במסך מלא.
  2. מאי 2022אזעקה ועריכהנוספו אזעקה, עורך מתגים, רשימת המתגים של כל אתר וארבעה קובצי יומן שתיעדו כל שינוי.
  3. יולי 2022השכתוב הראשוןארגנתי מחדש את כל התוכנה, כך שכל אתר וכל מתג מנהלים בעצמם את הנתונים, הבדיקות והמקום שלהם על המסך.
  4. ספטמבר 2022גרסה 1 יצאה ונכנסה לשימושבדיקה עצמית של העמדה, שלושה סגנונות מפה, הוספה והזזה של אתרים, וקובץ הפעלה יחיד ל-Windows שכל אחד יכול להריץ.
  5. יוני 2023גרסה 2 מאפסהתחלתי שכתוב נקי על בסיס מחלקות קוד לשימוש חוזר של כפתורים, שדות קלט וכרטיסים, שבניתי ובדקתי קודם בנפרד.
  6. יולי 2023גרסה 2 הושלמה ונכנסה לשימושבסך הכול 2,069 שורות, עם ייבוא וייצוא Excel, חלונות קופצים מונפשים ומונים חיים.

03 / דגשים

01

כל אתר על המפה

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

02

בדיקה בכל דקה

לכל אתר יש בדיקה משלו שרצה ברקע ובודקת את כל המתגים שלו כל 60 שניות, ושוב מיד אחרי כל עריכה.

03

אזעקה שאין לפספס

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

04

עריכה על המסך

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

05

ייבוא וייצוא Excel

רשימת המתגים נטענת מגיליון Excel. ממסך ההגדרות אפשר לייבא גיליון חדש או לייצא עותק עם חותמת זמן.

06

בדיקת העמדה עצמה

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

04 / מסכים

8 מסכים

הערת עיצובפריסה אחת לכל מסך: Pinger מסודר ב-4K, כל מיקום בו כתוב כיחס, והוא מותאם פעם אחת למסך שעליו הוא רץ, כך שהמפה וכרטיסי המצב שומרים על הפרופורציות שלהם בכל מקום.

המסך הראשי: כל אתר הוא נעץ על מפת ישראל, המתגים המנותקים מופיעים ברשימה מימין, ולצד כפתור ההשתקה מוצגים מונים חיים של מחוברים ומנותקים.
01 המסך הראשי: כל אתר הוא נעץ על מפת ישראל, המתגים המנותקים מופיעים ברשימה מימין, ולצד כפתור ההשתקה מוצגים מונים חיים של מחוברים ומנותקים.
חלון של אתר עם המתגים שלו, אחד ירוק ואחד אדום, וכתובות ה-IP שלהם
02 לחיצה על הנעץ של אתר פותחת את המתגים שמאחוריו, כל אחד בירוק או באדום, עם הכתובת שלו.
מסך העריכה של מתג, עם שדות שם, IP, מידע נוסף ודגם, וכפתורי מחיקה ושמירה
03 עריכת מתג על המסך: שם, כתובת IP, מידע נוסף ודגם, עם כפתורי מחיקה ושמירה בשורת הכותרת.
חלון קופץ "עדכון! הנתונים נטענו בהצלחה!" עם סימן וי מונפש מעל מפה מטושטשת
04 רשימת המתגים נטענה מקובץ ה-Excel שלה. חלון קופץ דומה, "הנתונים נשמרו בהצלחה", מאשר כל שמירה.
המסך שמודיע שזוהה מסך חדש ושהקבצים שלו נטענים, עם פס התקדמות
05 ברזולוציית מסך חדשה, האפליקציה מתאימה את כל הגרפיקה שלה פעם אחת ומציגה את ההתקדמות.
מסך מלא של הודעת שגיאת רשת
06 V1 בדקה את החיבור של העמדה עצמה, והציגה את המסך הזה כשהחיבור נותק.
שלושת סגנונות המפה: רגילה, לוויין ותבליט, כל אחת מתחת לפס העליון "Project Pinger"
07 שלושת סגנונות המפה שהמפעיל יכול לעבור ביניהם: רגילה, לוויין ותבליט (כאן בלי נעצי האתרים).
שורות קוד בכל שמירה מתוארכת: מ-72 שורות באפריל 2022 עד 2,878 שורות ב-V1 (ספטמבר 2022), ואז 2,069 שורות בשכתוב V2 (יולי 2023)
08 שורות קוד בכל שמירה מתוארכת: מסקריפט של 72 שורות עד 2,878 שורות ב-V1, ואז שכתוב V2 ב-2,069 שורות.

05 / השפעה

כ-35אתרים על המפה
מעל 300מתגים בניטור
60 שניותבין בדיקות אוטומטיות
חודשיםבין סבבי בדיקה ידניים מלאים, לפני Pinger

Pinger החליף שגרה ידנית בבדיקות אוטומטיות: יותר מ-300 מתגים בכ-35 אתרים, וכל אחד מהם נבדק כל 60 שניות – במקום סבב ידני שנעשה רק פעם או פעמיים בכמה חודשים. שתי הגרסאות שימשו בפועל את צוות הרשת: 7 אנשים ב-2 עמדות ניטור.

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

06 / התפקיד והטכנולוגיה

בניתי את Pinger לבד, מהרעיון הראשון ועד התוכנה המוכנה: לוגיקת הניטור, המסכים והקוד שמאחוריהם, קובצי הנתונים וקובץ ההפעלה עבור Windows. שמרתי גרסה מתוארכת בכל שלב – שתים-עשרה כאלה עד גרסה 1 – וכשהקוד נעשה קשה לשינוי, כתבתי אותו מחדש: פעם אחת ביולי 2022, ופעם נוספת מאפס ב-2023. צוות הרשת עבד בפועל גם עם גרסה 1 וגם עם גרסה 2.

טכנולוגיות

  • Python
  • pygame
  • Pillow
  • pandas
  • OpenCV
  • netifaces
  • tkinter
  • PyInstaller
  • Excel / CSV

איך זה בנוי

Pinger הוא תוכנת דסקטופ ב-Python שהממשק שלה מרונדר ישירות ב-pygame. לכל אתר יש תהליכון (thread) משלו ברקע ששולח פינג למתגים שלו, ותהליכונים נפרדים מפעילים את האזעקה, את רשימת המנותקים, את החלונות הקופצים ואת קובצי היומן. כל מיקום על המסך מתוכנן ברזולוציה גבוהה ומותאם לכל מסך שהתוכנה רצה עליו, וגרסה 1 נארזה כקובץ הפעלה יחיד ל-Windows בעזרת PyInstaller. בגרסה 2 הכפתורים, שדות הקלט, כרטיסי הרשימה ונעצי המפה הם מחלקות קוד לשימוש חוזר שכתבתי, ואת הקוד הזה לקחתי איתי לכלי הדסקטופ הבאים שלי. הוא התחיל כסקריפט של 72 שורות, וגרסה 2 קצרה מגרסה 1 בכ-800 שורות.

Pinger הפך שגרת פינג ידנית למפה שמתריעה בעצמה.

ובו למדתי להוביל כלי מסקריפט ראשון ועד מוצר שנכנס לשימוש.

פרקים