שליחת מדדי GPU אל Cloud Monitoring

אם באשכול יש צמתים שמשתמשים ביחידות GPU של NVIDIA, אפשר לעקוב אחרי ניצול ה-GPU, הביצועים והתקינות על ידי הגדרת האשכול לשליחת מדדים של NVIDIA Data Center GPU Manager (DCGM) ל-Cloud Monitoring. בפתרון הזה נעשה שימוש בשירות המנוהל של Google Cloud ל-Prometheus כדי לאסוף מדדים מ-NVIDIA DCGM.

הדף הזה מיועד לאדמינים ולמפעילים בתחום ה-IT שמנהלים את מחזור החיים של תשתית טכנולוגית בסיסית. מידע נוסף על תפקידים נפוצים ועל דוגמאות למשימות שאנחנו מתייחסים אליהן בתוכן זמין במאמר תפקידי משתמשים ומשימות נפוצים ב-GKE. Google Cloud

לפני שמתחילים

כדי להשתמש בשירות מנוהל של Google Cloud ל-Prometheus כדי לאסוף מדדים מ-DCGM, הפריסה של Google Distributed Cloud צריכה לעמוד בדרישות הבאות:

הגדרת משאב PodMonitoring

מגדירים משאב PodMonitoring בשירות המנוהל של Google Cloud ל-Prometheus כדי לאסוף את המדדים המיוצאים. אם נתקלתם בבעיה בהתקנת אפליקציה או כלי לייצוא בגלל מדיניות אבטחה או מדיניות ארגונית מגבילה, מומלץ לעיין במסמכי קוד פתוח לקבלת תמיכה.

כדי להטמיע את נתוני המדדים שמופקים על ידי DCGM Exporter Pod ‏(nvidia-dcgm-exporter), השירות המנוהל של Google Cloud ל-Prometheus משתמש בגירוד של יעדים. הגדרת ה-scraping של נתוני היעד וההטמעה של המדדים מתבצעת באמצעות משאבים מותאמים אישית של Kubernetes. השירות המנוהל משתמש במשאבים מותאמים אישית של PodMonitoring.

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

  1. יוצרים קובץ מניפסט עם ההגדרות הבאות:

    הקטע selector במניפסט מציין שה-DCGM Exporter Pod, nvidia-dcgm-exporter, נבחר למעקב. ה-Pod הזה נפרס כשמתקינים את NVIDIA GPU Operator.

    apiVersion: monitoring.googleapis.com/v1
    kind: PodMonitoring
    metadata:
      name: dcgm-gmp
    spec:
      selector:
        matchLabels:
          app: nvidia-dcgm-exporter
      endpoints:
      - port: metrics
        interval: 30s
    
  2. פורסים את המשאב המותאם אישית PodMonitoring:

    kubectl apply -n NAMESPACE -f FILENAME --kubeconfig KUBECONFIG
    

    מחליפים את מה שכתוב בשדות הבאים:

    • NAMESPACE: מרחב השמות שבו אתם פורסים את המשאב המותאם אישית PodMonitoring.

    • FILENAME: הנתיב של קובץ המניפסט של המשאב המותאם אישית PodMonitoring.

    • KUBECONFIG: הנתיב לקובץ kubeconfig של האשכול.

  3. כדי לוודא שהמשאב המותאם אישית PodMonitoring מותקן במרחב השמות הרצוי, מריצים את הפקודה הבאה:

    kubectl get podmonitoring -n NAMESPACE --kubeconfig KUBECONFIG
    

    הפלט אמור להיראות כך:

    NAME       AGE
    dcgm-gmp   3m37s
    

אימות ההגדרה

אתם יכולים להשתמש ב-Metrics Explorer כדי לוודא שהגדרתם את הכלי DCGM exporter בצורה נכונה. יכול להיות שיחלפו דקה או שתיים עד שמדדים ייקלטו ב-Cloud Monitoring.

כדי לוודא שהמדדים נאספים, מבצעים את הפעולות הבאות:

  1. במסוף Google Cloud , עוברים לדף  Metrics explorer:

    כניסה אל Metrics Explorer

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

  2. משתמשים בשפת השאילתות של Prometheus‏ (PromQL) כדי לציין את הנתונים שיוצגו בתרשים:

    1. בסרגל הכלים של החלונית query-builder, לוחצים על < > PromQL.

    2. מזינים את השאילתה בעורך השאילתות. לדוגמה, כדי ליצור תרשים של מספר השניות הממוצע שמעבדי ה-CPU בילו בכל מצב במהלך השעה האחרונה, משתמשים בשאילתה הבאה:

      DCGM_FI_DEV_GPU_UTIL{cluster="CLUSTER_NAME", namespace="NAMESPACE"}
      

    מחליפים את מה שכתוב בשדות הבאים:

    • CLUSTER_NAME: השם של האשכול עם הצמתים שמשתמשים ביחידות GPU.

    • NAMESPACE: מרחב השמות שבו פרסתם את המשאב המותאם אישית PodMonitoring.

    מידע נוסף על השימוש ב-PromQL זמין במאמר PromQL ב-Cloud Monitoring.