« לעמוד הראשי

ניטור ביצועי שרת Jira בעזרת Grafana – זה לא בשמיים

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

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

המאמר במקוצר:

  • חווינו קצת בעיות של מכונה איטית שמתפקדת כשרת Jira
  • החלטנו לבדוק זאת לעומק
  • הרמנו Grafana ע"מ לנטר את Jira, את השרת ואת ביצועי Java
  • בדקנו ביצועים ואיך זה משפיע על האפליקציה
  • בעקבות הממצאים שינינו קצת את פרמטרי ה- JVM – ודברים הסתדרו
  • הוספנו גם התראות (alerts)
  • נוכל לעשות זאת גם עבורכם אם תרצו

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

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

Grafana

בחרנו ב- Grafana – כלי מוביל כיום, פופולרי ובקוד פתוח, שאנו מכירים היטב וגם משווקים רשיונות Enterprise שלו בחו"ל ובארץ.

החלטנו גם לנטר זאת בצורה ויזואלית משולבת מדדים מספריים, משום שזה מקל על עבודת הניתוח ומאפשר לראות קורלציה של סיבה ותוצאה (למשל את הקשר בין login של משתמשים למערכת וביצוע פעולות שלהם ב- Jira לבין עומס על הזכרון, על אותו ציר זמן). הצד הויזואלי מאפשר גם "לספר את הסיפור" של השרת ; מאפשר לזהות רטרואטיבית נקודות חמקמקות שאולי פספסנו בזמן אמת, ומאפשר גם לשתף זאת בקלות עם אנשים אחרים בארגון (כגון אנשי IT  או מנהלי פיתוח) ע"מ שיבינו את הממצאים ויעזרו לפתור בעיות.

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

סמלצנו סיטואציה נפוצה, שבה העלנו 5 משתמשים בו-זמנית והרצנו איתם כמה דברים אופייניים ל- Jira (כניסה לדשבורד, כניסה ל – UI , התחברות/התנתקות, עדכון issue, יצירת issues וכד') כדי לראות ולהראות כיצד זה משפיע על הביצועים.

JIRA UI demo

תמונה סטנדרטית של ממשק Jira (להמחשה)

 

הערה: בשלב זה לא נכנסו למדדי ביצועים של משתמשי הקצה (מבחינת קצב פיתוח, אג'יליות וכד') אלא התמקדנו במדדי ביצועים מצד ה- DevOps והתשתית.

מה ראינו ?

בדקנו מספר מדדים – להלן כמה מהם וכן הסברים.
כידוע (או שלא), Jira מבוסס Java, לכן אספנו כמה מדדים שרלבנטים לביצועי JAVA – ובפרט מדדים על ה- JVM .

הערה: מתוך רצון לא להעמיס כאן בחומר טכני מדי – קיצרנו את ההסברים (אולי נעמיק בהם במאמרים עתידיים)

  1. JVM – Java Virtual Machine

    1. Memory used

      jira grafana memory usedכאן רואים איך משתנה שימוש בזיכרון הווירטואלי של Java. בפועל מה שמשתנה זה זיכרון Heap, שנתפס כאשר יש פעילות ב-Jira, ומשתחרר כאשר הפעילות נרגעת. מי שדואג לשחרורו, זה התהליך של Garbage Collection.

    2. Threads used

      jira grafana threads used
      כאן רואים כמה threads (תהליכים) מריץ Java בו זמנית.

    3. GC time / 1 min. rate

      jira grafana garbage collector time
      כאן רואים כמה שניות מתוך דקה, ה-JVM עסוק ב-GC, דהיינו בשחרור הזיכרון. כמה שיותר זמן המכונה תעסוק ב-GC, כך ישאר פחות זמן לביצוע פעולות Jira ויעלה זמן התגובה

    4. GC count

      jira grafana garbage collector count
      כאן רואים כמה פעמים רץ ה- Garbage Collector בטווח זמנים נתון. הדגימה כאן נעשתה אחת לדקה, לכן גם הגרף מראה זאת ביחידות של דקה.
      באופן כללי – ככל שהמספר נמוך יותר זה טוב יותר.
      השאיפה היא שהמספר של GC יהיה אפס – כי זה אומר שלא צריך להפעיל את ה- GC.

      עולם ה- Java, JVM, GC הוא עולם שלם, עתיר בעדכונים וחידושים. מומלץ להעזר במומחה Java ו- DevOps שמכיר היטב את הנושא והניואנסים.

  2. Web server

    1. Request duration

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

  3. מדדים אפליקטיביים של Jira – ובפרט Jira issues
    jira grafana issue metrics

    1. Update Issues per Project

      מספר ה- issues שעודכנו בפרק זמן נתון של דקה (פר פרוייקט)

    2. Update Issues per User

      מספר ה- issues שעודכנו בפרק זמן נתון של דקה (פר משתמש)

    3. Login/Logout

      כמות הפעמים שבוצע login / logout למערכת, בפרק זמן נתון

הערה: בהמשך נוסיף הקלטת וידאו להמחשה נוספת.

הקשר בין התשתית לביצועים האפליקטיביים של Jira

בהיבט המעשי, בואו נראה את הקשר בין התשתית לבין הביצועים האפליקטיביים ואת הקורלציה בין פתיחת issues לביצועי המערכת.

מה רואים ב- Grafana כאשר יוצרים Issue

הוספנו צילום מסך מ- Grafana – כדאי לראות את השלבים הבאים גם במסך (אפשר גם להגדיל אותו).

  • ב- 11:43 משתמש נכנס לדפדפן והתחיל לעבוד על issue כלשהו. ה- Heap memory התחיל לגדול. מספר ה- threads התחיל לגדול גם כן.
  • ב- 11:46 בוצע עדכון ל- issue (פעולת update). ה- Heap memory המשיך לגדול
  • ה- Heap memory גדל מ- 656MB ל- 1092MB
  • לאחר מכן המשתמש לא ביצע כלום, לכן בסביבות 11:50 השימוש בזכרון החל לרדת. באותו זמן ה- garbage collector רץ, מה שמשחרר זכרון.
jira grafana

ניטור Jira בעזרת Grafana. לחצו להגדלה.


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

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

טיפ: היצרן של Jira (חברת Atlassian) מחזיק סט המלצות ל- sizing של Jira בהתאם לעומס הצפוי על השרת

גם התראות ו- Alerts

החלטנו להוסיף למערכת גם התראות (alerting) – הואיל וזה מאוד שימושי כדי לקבל עדכונים בזמן אמת, וגם משום ש- Grafana תומך בזה בצורה יפה.
זה מאפשר לנו, לדוגמא, לקבל מייל כאשר משאב מסויים עולה מעל לסף שהגדרנו מראש. בדוגמא כאן קיבלנו התראה (למייל) כאשר השימוש בזכרון עבר את ה –
1GB .

grafana alert jira

 

לסיכום:

ראינו כאן מערכת שמנטרת ומדווחת על ביצועים תשתיתיים ואפליקטייבים של Jira, בעזרת Grafana. מכאן בעצם ניתן לקחת זאת כמה צעדכים קדימה, ולנתח את הממצאים, למצוא סיבה ותוצאה בין תשתית איטית לבין מערכת איטית למשתמשי-הקצה, ולבנות action items לפתרון צווארי בקבוק שמתגלים.

אודות חברת ALM-Toolbox :

אנו מתמחים ב- Jira, Java, Grafana ו- Prometheus, ונוכל להקים לכם מערכת דומה של ניטור והתראות.

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

אנו גם יודעים להרים מערכות ניטור דומות על כלים שמתחברים ל Jira והשרת בבעלותכם , כגון:
GitLab , Confluence , Bamboo, Jenkins, Bitbucket, ClearCase, Kubernetes, ClearQuest ועוד .
לשאלות ויצירת קשר: devops@almtoolbox.com או טלפונית 072-240-5222

 

ישנה גם אפשרות שנבנה זאת לא רק למדדי ביצועי התשתית, אלא גם לכל מטרה אחרת, כגון דשבורד אפליקטיבי למדידת Agile וכן וגם למטרות עסקיות (שאינן קשורות בהכרח ל- Jira), כגון מדדי מכירות וכד' .

 

קישורים רלוונטיים: