טלמטריה ב-Junos עבור עומסי עבודה של AI/ML
מחבר: שליני Mukherjee
מָבוֹא
מכיוון שתעבורת אשכולות בינה מלאכותית דורשת רשתות ללא אובדן עם תפוקה גבוהה והשהייה נמוכה, מרכיב קריטי ברשת הבינה המלאכותית הוא איסוף נתוני ניטור. Junos Telemetry מאפשרת ניטור פרטני של מדדי ביצועים מרכזיים, כולל ספים ומונים לניהול עומסים ואיזון עומסי תנועה. הפעלות gRPC תומכות בהזרמת נתוני טלמטריה. gRPC היא מסגרת מודרנית, קוד פתוח, עם ביצועים גבוהים, הבנויה על תעבורת HTTP/2. זה מעצים יכולות סטרימינג דו-כיווניות מקוריות וכולל מטא-נתונים מותאמים אישית גמישים בכותרות הבקשות. השלב הראשוני בטלמטריה הוא לדעת אילו נתונים יש לאסוף. לאחר מכן נוכל לנתח נתונים אלה בפורמטים שונים. לאחר שנאסף את הנתונים, חשוב להציג אותם בפורמט שקל לנטר, לקבל החלטות ולשפר את השירות המוצע. במאמר זה, אנו משתמשים בערימת טלמטריה המורכבת מ-Telegraf, InfluxDB ו-Grafana. ערימת טלמטריה זו אוספת נתונים באמצעות מודל דחיפה. מודלים מסורתיים של משיכה הם עתירי משאבים, דורשים התערבות ידנית ויכולים לכלול פערי מידע בנתונים שהם אוספים. מודלים של Push מתגברים על מגבלות אלו על ידי אספקת נתונים באופן אסינכרוני. הם מעשירים את הנתונים על ידי שימוש ידידותי למשתמש tags ושמות. ברגע שהנתונים יהיו בפורמט קריא יותר, אנו מאחסנים אותם במסד נתונים ומשתמשים בהם בהדמיה אינטראקטיבית web אפליקציה לניתוח הרשת. דְמוּת. 1 מראה לנו כיצד ערימה זו מיועדת לאיסוף, אחסון והדמיה יעילים של נתונים, מהתקני רשת שדוחפים נתונים לאספן ועד לנתונים המוצגים על לוחות מחוונים לניתוח.
מחסנית TIG
השתמשנו בשרת אובונטו כדי להתקין את כל התוכנה כולל ערימת TIG.
טלגרף
כדי לאסוף נתונים, אנו משתמשים ב-Telegraf בשרת אובונטו הפועל על 22.04.2. גרסת Telegraf הפועלת בהדגמה זו היא 1.28.5.
Telegraf הוא סוכן שרת מונחה תוספים לאיסוף ודיווח של מדדים. הוא משתמש במעבד plugins להעשיר ולנרמל את הנתונים. הפלט plugins משמשים לשליחת נתונים אלה למאגרי נתונים שונים. במסמך זה אנו משתמשים בשניים plugins: אחד עבור חיישני תצורה פתוחה והשני עבור חיישנים מקוריים של Juniper.
InfluxDB
כדי לאחסן את הנתונים במסד נתונים של סדרות זמן, אנו משתמשים ב-InfluxDB. תוסף הפלט בטלגרף שולח את הנתונים ל-InfluxDB, אשר מאחסן אותם בצורה יעילה ביותר. אנו משתמשים ב-V1.8 מכיוון שאין CLI עבור V2 ומעלה.
גרפאנה
Grafana משמש כדי להמחיש נתונים אלה. Grafana שואב את הנתונים מ-InfluxDB ומאפשר למשתמשים ליצור לוחות מחוונים עשירים ואינטראקטיביים. כאן, אנו מריצים את גרסה 10.2.2.
תצורה על המתג
כדי ליישם מחסנית זו, עלינו תחילה להגדיר את המתג כפי שמוצג באיור 2. השתמשנו ביציאה 50051. ניתן להשתמש בכל יציאה כאן. היכנס למתג QFX והוסף את התצורה הבאה.
פֶּתֶק: תצורה זו מיועדת למעבדות/POCs מכיוון שהסיסמה משודרת בטקסט ברור. השתמש ב-SSL כדי להימנע מכך.
סְבִיבָה
Nginx
זה נחוץ אם אינך יכול לחשוף את הנמל שבו מתארח גראפנה. השלב הבא הוא התקנת nginx בשרת אובונטו כדי לשמש כסוכן פרוקסי הפוך. לאחר התקנת nginx, הוסף את השורות המוצגות באיור 4 לקובץ "ברירת המחדל" והעבר את הקובץ מ-/etc/nginx ל-/etc/nginx/sites-enabled.
ודא שחומת האש מותאמת כדי לתת גישה מלאה לשירות nginx כפי שמוצג באיור 5.
לאחר התקנת nginx וביצוע השינויים הנדרשים, אנו אמורים להיות מסוגלים לגשת ל-Grafana מ-a web דפדפן באמצעות כתובת ה-IP של שרת אובונטו בו מותקנת כל התוכנה.
יש תקלה קטנה בגראפאנה שלא מאפשרת לך לאפס את סיסמת ברירת המחדל. השתמש בשלבים אלה אם אתה נתקל בבעיה זו.
שלבים שיש לבצע בשרת אובונטו כדי להגדיר את הסיסמה ב-Grafana:
- עבור אל /var/lib/grafana/grafana.db
- התקן sqllite3
o sudo apt להתקין sqlite3 - הפעל את הפקודה הזו בטרמינל שלך
o sqlite3 grafana.db - שורת הפקודה של Sqlite נפתחת; הפעל את השאילתה הבאה:
>מחק מהמשתמש שבו login='admin' - הפעל מחדש את grafana והקלד admin כשם משתמש וסיסמה. הוא מבקש סיסמה חדשה.
לאחר התקנת כל התוכנה, צור את קובץ התצורה ב-Telegraf שיעזור למשוך את נתוני הטלמטריה מהמתג ולדחוף אותו ל-InfluxDB.
תוסף חיישן Openconfig
בשרת אובונטו, ערוך את הקובץ /etc/telegraf/telegraf.conf כדי להוסיף את כל הדרוש plugins וחיישנים. עבור חיישני ה-openconfig, אנו משתמשים בתוסף gNMI המוצג באיור 6. למטרות הדגמה, הוסף את שם המארח בתור "spine1", מספר היציאה "50051" המשמש עבור gRPC, שם המשתמש והסיסמה של המתג, והמספר של שניות לחיוג חוזר במקרה של כשל.
בבית המנוי, הוסף שם ייחודי, "מעבד" עבור החיישן המסוים הזה, נתיב החיישן ומרווח הזמן לאחיפת הנתונים האלה מהמתג. הוסף את אותו תוסף inputs.gnmi ו-inputs.gnmi.subscription עבור כל חיישני התצורה הפתוחים. (איור 6)
תוסף חיישן מקורי
זהו תוסף ממשק טלמטריה של Juniper המשמש עבור חיישנים מקומיים. באותו קובץ telegraf.conf, הוסף את תוסף החיישן המקורי inputs.jti_openconfig_telemetry שבו השדות כמעט זהים ל-openconfig. השתמש במזהה לקוח ייחודי עבור כל חיישן; כאן, אנו משתמשים ב-"telegraf3". השם הייחודי המשמש כאן עבור חיישן זה הוא "מאם" (איור 7).
לבסוף, הוסף תוסף פלט outputs.influxdb כדי לשלוח נתוני חיישן זה ל-InfluxDB. כאן, מסד הנתונים נקרא "telegraf" עם שם המשתמש בתור "influx" והסיסמה "influxdb" (איור 8).
לאחר עריכת קובץ telegraf.conf, הפעל מחדש את שירות telegraf. כעת, בדוק ב-InfluxDB CLI כדי לוודא אם נוצרו מדידות עבור כל החיישנים הייחודיים. הקלד "influx" כדי להיכנס ל-InfluxDB CLI.
כפי שניתן לראות באיור. 9, הזן את ההנחיה influxDB והשתמש במסד הנתונים "טלגרף". כל השמות הייחודיים שניתנו לחיישנים רשומים כמידות.
כדי לראות את הפלט של כל מדידה אחת, רק כדי לוודא שקובץ הטלגרף תקין והחיישן פועל, השתמש בפקודה "בחר * ממגבלת מעבד 1" כפי שמוצג באיור 10.
בכל פעם שמתבצעים שינויים בקובץ telegraf.conf, הקפידו לעצור את InfluxDB, להפעיל מחדש את Telegraf, ולאחר מכן להפעיל InfluxDB.
היכנס לגרפאנה מהדפדפן וצור לוחות מחוונים לאחר ווידוא שהנתונים נאספים בצורה נכונה.
עבור אל חיבורים > InfuxDB > הוסף מקור נתונים חדש.
- תן שם למקור הנתונים הזה. בהדגמה זו הוא "מבחן-1".
- תחת בית ה-HTTP, השתמש ב-IP של שרת Ubuntu וביציאת 8086.
- בפרטי InfluxDB, השתמש באותו שם מסד נתונים, "telegraf", וספק את שם המשתמש והסיסמה של שרת אובונטו.
- לחץ על שמור ובדוק. ודא שאתה רואה את ההודעה, "מוצלח".
- לאחר הוספת מקור הנתונים בהצלחה, עבור אל לוחות מחוונים ולחץ על חדש. תן לנו ליצור כמה לוחות מחוונים חיוניים לעומסי עבודה של AI/ML במצב עורך.
Examples של גרפי חיישנים
להלן exampרשימות של כמה מונים עיקריים שחיוניים לניטור רשת AI/ML.
אחוזיםtagשימוש אלקטרוני עבור ממשק כניסה et-0/0/0 בעמוד השדרה-1
- בחר את מקור הנתונים כ-test-1.
- בקטע FROM, בחר את המדידה כ"ממשק". זהו השם הייחודי המשמש לנתיב החיישן הזה.
- בקטע WHERE, בחר מכשיר::tag, וב- tag value, בחר את שם המארח של המתג, כלומר, spine1.
- בקטע SELECT, בחר את ענף החיישן שברצונך לנטר; במקרה זה בחר "eld(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)". כעת באותו קטע, לחץ על "+" והוסף את מתמטיקה החישובית הזו (/50000000000 * 100). אנחנו בעצם מחשבים את האחוזיםtagשימוש בממשק 400G.
- ודא שהפורמט הוא "סדרת זמן", ושם את הגרף בקטע כינוי.
תפוסת חיץ שיא לכל תור
- בחר את מקור הנתונים כ-test-1.
- בקטע FROM, בחר את המדידה בתור "buffer".
- בקטע WHERE, ישנם שלושה שדות למלא. בחר מכשיר::tag, וב- tag value בחר את שם המארח של המתג (כלומר spine-1); ובחר /cos/interfaces/interface/@name::tag ובחר את הממשק (כלומר et- 0/0/0); ובחר גם את התור, /cos/interfaces/interface/queues/queue/@queue::tag ובחר את התור מספר 4.
- בקטע SELECT, בחר את ענף החיישן שברצונך לנטר; במקרה זה בחר "שדה (/cos/interfaces/interface/queues/queue/PeakBuerOccupancy)."
- ודא שהפורמט הוא "סדרת זמן" ושם את הגרף בקטע כינוי.
אתה יכול לאסוף נתונים עבור ממשקים מרובים על אותו גרף כפי שניתן לראות באיור 17 עבור et-0/0/0, et-0/0/1, et-0/0/2 וכו'.
PFC ו-ECN פירושם נגזרת
למציאת הנגזרת הממוצעת (ההבדל בערך בתוך טווח זמן), השתמש במצב השאילתה הגולמית.
זוהי שאילתת הזרימה שבה השתמשנו כדי למצוא את הנגזרת הממוצעת בין שני ערכי PFC ב-et-0/0/0 של Spine-1 תוך שניה.
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') ו-$timeFilter GROUP לפי זמן($interval)
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') ו-$timeFilter GROUP לפי זמן($interval)
שגיאות משאבי קלט פירושן נגזרת
פירוש השאילתה הגולמית עבור שגיאות משאבים הנגזרת היא:
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') ו-$timeFilter GROUP לפי זמן($interval)
טיפות זנב אומרות נגזרת
השאילתה הגולמית עבור נגזרת ממוצעת של נפילות זנב היא:
SELECT derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) FROM “buffer” WHERE (“device”::tag = 'Leaf-1' ו-"/cos/interfaces/interface/@name"::tag = 'et-0/0/0' ו-"/cos/interfaces/interface/queues/queue/@queue"::tag = '4') ו-$timeFilter GROUP BY time($__interval) fill(null)
ניצול מעבד
- בחר את מקור הנתונים כ-test-1.
- בקטע FROM, בחר את המדידה בתור "newcpu"
- ב-WHERE, יש שלושה שדות למלא. בחר מכשיר::tag וב- tag value בחר את שם המארח של המתג (כלומר spine-1). AND ב-/components/component/properties/property/name:tag, ובחר cpuutilization-total AND בשם::tag בחר RE0.
- בקטע SELECT, בחר את ענף החיישן שברצונך לנטר. במקרה זה, בחר "שדה(מצב/ערך)".
השאילתה הגולמית למציאת הנגזרת הלא-שלילית של נפילות זנב עבור מתגים מרובים בממשקים מרובים בסיביות/שנייה.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buffer” WHERE (מכשיר::tag =~ /^Spine-[1-2]$/) ו- ("/cos/interfaces/interface/@name"::tag =~ /et-0\/0\/[0-9]/ או "/cos/interfaces/interface/@name"::tag=~/et-0\/0\/1[0-5]/) ו-$timeFilter GROUP לפי זמן($__interval),device::tag מלא (null)
אלה היו חלק מהאקסיםampחלקים של הגרפים שניתן ליצור לניטור רשת AI/ML.
תַקצִיר
מאמר זה ממחיש את השיטה של שליפת נתוני טלמטריה והצגה שלהם על ידי יצירת גרפים. מאמר זה מדבר באופן ספציפי על חיישני AI/ML, גם מקוריים וגם פתוחים, אך ניתן להשתמש בהגדרה עבור כל מיני חיישנים. כללנו גם פתרונות לבעיות מרובות שאתה עלול להיתקל בהן בעת יצירת ההגדרה. השלבים והפלטים המתוארים במאמר זה הם ספציפיים לגרסאות של ערימת ה-TIG שהוזכרו קודם לכן. זה נתון לשינויים בהתאם לגרסת התוכנה, החיישנים וגרסת Junos.
הפניות
Juniper Yang Data Model Explorer עבור כל אפשרויות החיישנים
https://apps.juniper.net/ydm-explorer/
פורום Openconfig עבור חיישני Openconfig
https://www.openconfig.net/projects/models/
מטה תאגידים ומכירות
Juniper Networks, Inc.
1133 דרך חדשנות
סאניווייל, קליפורניה 94089 ארה"ב
טלפון: 888. JUNIPER (888.586.4737)
או +1.408.745.2000
פקס: 1.408.745.2100+
www.juniper.net
מטה APAC ו-EMEA
Juniper Networks International BV
בואינג אווניו 240
1119 PZ Schiphol-Rijk
אמסטרדם, הולנד
טלפון: 31.207.125.700+
פקס: 31.207.125.701+
זכויות יוצרים 2023 Juniper Networks. Inc. זכויות Ail שמורות. Juniper Networks, הלוגו של Juniper Networks, Juniper, Junos וסימנים מסחריים אחרים הם סימנים מסחריים רשומים של Juniper Networks. Inc. ו/או שלוחותיה בארצות הברית ובמדינות אחרות. שמות אחרים עשויים להיות סימנים מסחריים של בעליהם בהתאמה. ג'וניפר נטוורקס אינה נושאת באחריות לכל אי דיוקים במסמך זה. ג'וניפר נטוורקס שומרת לעצמה את הזכות לשנות. לְשַׁנוֹת. להעביר או לשנות פרסום זה ללא הודעה מוקדמת.
שלח משוב אל: design-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml
מסמכים / משאבים
![]() |
Juniper NETWORKS Telemetry In Junos עבור תוכנת עומסי עבודה של AI ML [pdfמדריך למשתמש טלמטריה ב-Junos עבור תוכנת עומסי עבודה של AI ML, תוכנת עומסי עבודה של Junos עבור תוכנת עומסי עבודה בינה מלאכותית ML, תוכנת עומסי עבודה של AI ML, תוכנת עומסי עבודה, תוכנה |