16 יצירת שמות מוני ביצועים מותאמים אישית VMware

סקירה כללית

נתיב מונה הביצועים של VMware כולל את פורמט קבוצה/מונה[אוסף] שבו:

  • קבוצה - קבוצת מונה הביצועים, למשל מעבד
  • counter - שם מונה הביצועים, למשל usagemhz
  • אוסף - סוג אוסף מונה הביצועים, למשל מְמוּצָע

אז הדוגמה לעיל תיתן את נתיב הנגד הבא: cpu/usagemhz[ממוצע]

תיאורי הקבוצות של מונה הביצועים, שמות המונה והאוסף ניתן למצוא סוגים ב-VMware תיעוד.

ניתן להשיג שמות פנימיים וליצור שמות מונה ביצועים מותאמים אישית באמצעות פריט סקריפט ב- Zabbix.

תצורה

  1. צור פריט סקריפט מושבת במארח VMware הראשי (שם קיים הפריט eventlog[]) עם הפרמטרים הבאים:

  • שם: מדדי VMware
  • סוג: סקריפט
  • מפתח: vmware.metrics
  • סוג מידע: טקסט
  • סקריפט: העתק והדבק את ה-script המופיע למטה
  • פסק זמן: 10
  • תקופת אחסון היסטוריה: אין לשמור היסטוריה
  • מופעל: לא מסומן

סקריפט

 נסה {
            Zabbix.log(4, 'vmware metrics script');
       
            תוצאה של var, resp,
            req = new HttpRequest();
            req.addHeader('Content-Type: application/xml');
            req.addHeader('SOAPAction: "urn:vim25/6.0"');
       
            login = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:vim25">\
            <soapenv:Header/>\
            <soapenv:Body>\
                <urn:Login>\
                    <urn:_this type="SessionManager">SessionManager</urn:_this>\
                    <urn:userName>{$VMWARE.USERNAME}</urn:userName>\
                    <urn:password>{$VMWARE.PASSWORD}</urn:password>\
                </urn:Login>\
            </soapenv:Body>\
        </soapenv:Envelope>'
            resp = req.post("{$VMWARE.URL}", התחברות);
            if (req.getStatus() != 200) {
                throw 'קוד תגובה: '+req.getStatus();
            }
       
            query = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:vim25">\
        <soapenv:Header/>\
            <soapenv:Body>\
                <urn:RetrieveProperties>\
                    <urn:_this type="PropertyCollector">propertyCollector</urn:_this>\
                    <urn:specSet>\
                        <urn:propSet>\
                           <urn:type>PerformanceManager</urn:type>\
                           <urn:pathSet>perfCounter</urn:pathSet>\
                        </urn:propSet>\
                        <urn:objectSet>\
                           <urn:obj type="PerformanceManager">PerfMgr</urn:obj>\
                        </urn:objectSet>\
                    </urn:specSet>\
                </urn:RetrieveProperties>\
            </soapenv:Body>\
        </soapenv:Envelope>'
            resp = req.post("{$VMWARE.URL}", query);
            if (req.getStatus() != 200) {
                throw 'קוד תגובה: '+req.getStatus();
            }
            Zabbix.log(4, 'vmware metrics=' + resp);
            תוצאה = resp;
       
            logout = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:vim25">\
            <soapenv:Header/>\
            <soapenv:Body>\
                <urn:Logout>\
                    <urn:_this type="SessionManager">SessionManager</urn:_this>\
                </urn:Logout>\
            </soapenv:Body>\
        </soapenv:Envelope>'
       
            resp = req.post("{$VMWARE.URL}",logout);
            if (req.getStatus() != 200) {
                throw 'קוד תגובה: '+req.getStatus();
            }
       
        } תפוס (שגיאה) {
            Zabbix.log(4, קריאת vmware נכשלה: '+שגיאה);
            תוצאה = {};
        }
       
        החזרת תוצאה;

לאחר הגדרת הפריט, לחץ על כפתור בדיקה ולאחר מכן לחץ על קבל ערך.

העתק את ה-XML שהתקבל לכל מעצב XML ומצא את המדד הרצוי.

דוגמה ל-XML עבור מדד אחד:

 <PerfCounterInfo xsi:type="PerfCounterInfo">
            <key>6</key>
            <nameInfo>
                <label>שימוש ב-MHz</label>
                <summary>שימוש במעבד במגה הרץ במהלך המרווח</summary>
                <key>usagemhz</key>
            </nameInfo>
            <groupInfo>
                <label>מעבד</label>
                <summary>CPU</summary>
                <key>מעבד</key>
            </groupInfo>
            <unitInfo>
                <label>MHz</label>
                <summary>Megahertz</summary>
                <key>megaHertz</key>
            </unitInfo>
            <rollupType>ממוצע</rollupType>
            <statsType>שיעור</statsType>
            <level>1</level>
            <perDeviceLevel>3</perDeviceLevel>
        </PerfCounterInfo>

השתמש ב-XPath כדי לחלץ את נתיב המונה מ-XML שהתקבל. עבור הדוגמה שלמעלה, ה-XPath יהיה:

field xPath ערך
קבוצה //groupInfo[../key=6]/key מעבד
counter //nameInfo[../key=6]/key usagemhz
rollup //rollupType[../key=6] ממוצע

נתיב מונה הביצועים המתקבל במקרה זה הוא: cpu/usagemhz[average]