WSFC عامل منجم
هذه مساعدة بسيطة لبرنامج Powershell النصي لجلب قيم القياس من Windows Server Failover Cluster (WSFC).
الإصدار الفعلي 1.2.3
تم اختباره على:
- وضع الإنتاج: Windows Server 2008 R2 SP1، Powershell 2؛
- الوضع غير الإنتاجي: Windows Server 2012 R2، Powershell 4؛
- الوضع غير الإنتاجي: Windows Server 2016، Powershell 5.1.
الكائنات المدعومة:
- الكتلة - مجموعة تجاوز فشل Windows Server (WSFC)؛
- ClusterNode - عقدة WSFC؛
- الشبكة العنقودية - شبكة WSFC؛
- ClusterNetworkInterface - محول شبكة نظام مجموعة تجاوز الفشل؛
- ClusterAvailableDisk - WSFC موارد القرص المتوفرة (غير المستخدمة). يمكن لهذا القرص أن يدعم نظام تجاوز الفشل ويكون مرئيًا لجميع العقد، ولكنه ليس جزءًا من مجموعة الأقراص المجمعة بعد.
- ClusterResourceDHCPService - مورد WSFC "خدمة DHCP"؛
- ClusterResourceGenericService - مورد WSFC "الخدمة العامة"؛
- ClusterResourceVirtualMachine - مورد WSFC "الجهاز الظاهري"؛
- ClusterResourceVirtualMachineConfiguration - مورد WSFC "تكوين الجهاز الظاهري"؛
- ClusterResourceIPAddress - مورد WSFC "عنوان IP"؛
- ClusterResourceNetworkName - مورد WSFC "اسم الشبكة"؛
- ClusterResourcePhysicalDisk - مورد WSFC "القرص الفعلي"؛
- ClusterResourceSQLServer - مورد WSFC "SQL Server"؛
- ClusterResourceSQLServerAgent - مورد WSFC "SQL Server Agent"؛
- ClusterSharedVolume - وحدات التخزين المشتركة WSFC؛
- ClusterQuorum - النصاب القانوني لمجموعة WSFC.
المفاتيح الافتراضية لكائنات "Cluster" و"ClusterNode":
- VirtualMachine.Online - مورد نظام مجموعة تجاوز الفشل "Virtual Machine" في حالة الاتصال بالإنترنت؛
- VirtualMachine.Offline - ... في حالة عدم الاتصال؛
- VirtualMachine.OnlinePending - ... في حالة OnlinePending؛
- VirtualMachine.OfflinePending - ... في حالة OfflinePending؛
- VirtualMachine.SummaryInformation - مجموعة من المقاييس المتعلقة بمورد المجموعة "Virtual Machine" والتي تم جلبها من فئة MsVM_virtualSystemManagementService باستخدام استعلام WMI
- GenericService.Online - مورد نظام مجموعة تجاوز الفشل "الخدمة العامة" في حالة الاتصال بالإنترنت؛
- GenericService.Offline - ... في حالة عدم الاتصال؛
المفاتيح الافتراضية لجميع الكائنات التي تحتوي على ClusterParameter (راجع جدول Get-ClusterParameter cndlet)
- ClusterParameter.<metric> - قياس الكائن من جدول ClusterParameter.
الإجراءات
- الاكتشاف - اجعل Zabbix's LLD JSON؛
- الحصول على - الحصول على المقياس من عنصر المجموعة؛
- Sum - مجموع مقاييس عناصر المجموعة؛
- عد - عد عناصر المجموعة.
كيفية استخدام مستقل
# Get Cluster name
powershell -NoProfile -ExecutionPolicy "RemoteSigned" -File "wsfc.ps1" -Action "Get" -ObjectType "Cluster" -Key "Name" -Id "f4479814-35d4-41c5-babd-c0697769ac31"
# Get PercentFree metric value from SharedVolumeInfo.Partition table for volume with ID=b8b67dbf-e66f-443e-926e-be1d1621ece5
..."wsfc.ps1" -Action "Get" -ObjectType "ClusterSharedVolume" -Key "SharedVolumeInfo.Partition.PercentFree" -Id "b8b67dbf-e66f-443e-926e-be1d1621ece5"
# Get total number of vCPUs assigned to all clustered VMs which hosted on Node with ID=00000000-0000-0000-0000-000000000001
... "wsfc.ps1" -Action "Sum" -ObjectType "ClusterNode" -Key "SummaryInformation.VirtualMachine.NumberOfProcessors" -Id "00000000-0000-0000-0000-000000000001"
# Get total number of Memory assigned (dynamically for WS2008 R2 SP1+) to all clustered VMs which placed in Cluster with ID=f4479814-35d4-41c5-babd-c0697769ac31
... "wsfc.ps1" -Action "Sum" -ObjectType "Cluster" -Key "SummaryInformation.VirtualMachine.NumberOfProcessors" -Id "00000000-0000-0000-0000-000000000001"
# Get formatted list of 'ClusterSharedVolume' object metrics accessed with property 'SharedVolumeInfo.Partition'. Verbose messages is enabled.
... "wsfc.ps1" -Action "Get" -ObjectType "ClusterSharedVolume" -Key "SharedVolumeInfo.Partition" -ID "8e8fb118-2601-4a06-ab9a-f0a1260bd247" -DefaultConsoleWidth -Verbose
كيفية الاستخدام مع Zabbix
أوصي بالبدء في استخدام WSFC Miner كخدمة غير مجمعة، وضبطها باستخدام Zabbix وجعلها مجمعة بعد ذلك.
####الاستخدام كخدمة غير مجمعة
- قم بتضمين zbx_wsfc.conf في تكوين Zabbix Agent على أي عقدة نظام المجموعة؛
- ضع wsfc.ps1 في المسار C:zabbixscripts dir. إذا كنت تريد وضع البرنامج النصي في دليل آخر، فيجب عليك تحرير zbx_wsfc.conf لتعيين مسار البرنامج النصي بشكل صحيح؛
- اضبط مهلة Zabbix Agent/Server على أكثر من 3 ثوانٍ (قد تكون 10 أو 30)؛
- إذا كنت بحاجة إلى استخدام .SummaryInformation. المقاييس - يجب عليك تغيير حساب خدمة Zabbix من "النظام المحلي" إلى أي حساب لديه حقوق المسؤول المحلي لاستخدام FailoverClusters Cmdlet ولديه حقوق إجراء استعلامات WMI لجميع عقد المجموعة عبر الشبكة. وإلا فسوف تحصل على خطأ في البرنامج النصي.
- استيراد القالب إلى خادم Zabbix؛
- فكر مرتين قبل ربط القالب لاستضافة وتعطيل قواعد الاكتشاف غير المهمة (قد تكون "الأجهزة الافتراضية" أو "الخدمات العامة" أو "الشبكات العنقودية"). وإلا يمكنك الحصول على ما يزيد عن 9000% من حمل وحدة المعالجة المركزية باستخدام مكالمات PowerShell؛
- قالب الصلاة والارتباط؛
- يتمتع.
استخدم كخدمة عامة لتجاوز الفشل
- إذا كنت تريد استخدام وكيل Zabbix المحلي (غير المجمع) وتجاوز الفشل (مجمع) في نفس الوقت - فيجب عليك تغيير الاستماع لتوجيه Zabbix Agent في تكوين "الوكيل المجمع" من الافتراضي إلى آخر غير مستخدم (قد يكون 16092 أو نحو ذلك). وإلا فقد تحصل في وقت ما على الخطأ 1067 عندما يتم ترحيل وكيل Zabbix المجمع. ويرجع ذلك إلى بدء المثيل الأول لربط الوكيل بجميع عناوين المضيف المتاحة والمثيل الثاني الذي يتم الخروج منه عند البدء؛
- قم بإنشاء نسخة من تكوين Zabbix Agent (أطلق عليه zabbix_agentd_WSFC-A.conf على سبيل المثال) على عقدة نظام المجموعة الواحدة؛
- قم بتضمين zbx_wsfc.conf في تكوين Zabbix Agent، إذا لم تقم بذلك من قبل؛
- اختر عنوان IP واسم المجال الجديد لاستخدامهما مع الخدمة العامة. لا ينبغي أن يكون عنوان IP واسم المضيف الخاصين بـ Cluster. قم بتغيير توجيه الاستماع IP واسم المضيف إلى قيم جديدة في zabbix_agentd_WSFC-A.conf ؛
- ضع wsfc.ps1 و zabbix_agentd_WSFC-A.conf على كل عقدة في المجموعة (أو حاول استخدام Windows Shares)؛
- في كل عقدة، قم بإلغاء تثبيت خدمة Zabbix Agent المحلية وتثبيتها مرة أخرى باستخدام المفتاح -m (zabbix_agentd.exe -c ... -x, zabbix_agentd.exe -c ... -d, zabbix_agentd.exe -c ... -i -m, zabbix_agentd.exe -c... -s -m);
- في كل عقدة، قم بتثبيت خدمة Zabbix Agent الثانية باستخدام zabbix_agentd_WSFC-A.conf ومفتاح -m (zabbix_agentd.exe -c... zabbix_agentd_WSFC-A.conf -i -m). لا تبدأ هذه الخدمة يدويًا - سيتم تشغيلها تلقائيًا بواسطة WSFC على عقدة مالك الخدمة؛
- إذا كنت بحاجة إلى استخدام .SummaryInformation. المقاييس - يجب عليك تغيير حساب خدمة Zabbix من "النظام المحلي" إلى أي حساب لديه حقوق المسؤول المحلي لاستخدام FailoverClusters Cmdlet ولديه حقوق إجراء استعلامات WMI لجميع عقد المجموعة عبر الشبكة. وإلا فسوف تحصل على خطأ في البرنامج النصي.
- قم بإنشاء "خدمة عامة" جديدة لمجموعتك باستخدام Failover Cluster MMC، وقم بتعيين عنوان IP واسم المضيف الخاص بها، والذي تم تعريفه في الخطوة 4؛
- استيراد القالب إلى خادم Zabbix؛
- فكر مرتين قبل ربط القالب لاستضافة وتعطيل قواعد الاكتشاف غير المهمة (قد تكون "الأجهزة الافتراضية" أو "الخدمات العامة" أو "الشبكات العنقودية"). وإلا يمكنك الحصول على ما يزيد عن 9000% من حمل وحدة المعالجة المركزية باستخدام مكالمات PowerShell؛
- على خادم Zabbix، أنشئ مضيفًا جديدًا بعنوان IP واسم المضيف من الخطوة 4؛
- قالب الصلاة والارتباط؛
- ابدأ الخدمة العامة، التي قمت بإنشائها في الخطوة 9 باستخدام Failover Cluster MMC؛
- يتمتع. ربما.
ملاحظة: لا تحاول استيراد قالب Zabbix v2.4 إلى Zabbix pre v2.4. تحتاج إلى تحرير ملف .xml وإجراء بعض التغييرات في Discover_rule - منطقة علامات التصفية وتغيير # إلى <> في تعبيرات التشغيل. سأحاول إنشاء قالب لـ Zabbix القديم.
ملاحظة: في القالب المستخدم، نوع العنصر Zabbix Agent (active) . يجب عليك إعداد توجيه ServerActive لـ Zabbix Agent أو تغيير نوع العنصر إلى Zabbix Agent . في هذه الحالة، يجب زيادة عدد أدوات الاستقصاء في Zabbix Server، لأن أي تشغيل لبرنامج PowerShell النصي سيؤدي إلى تجميد مؤشر ترابط أداة الاستقصاء لمدة ثانيتين (على أجهزتي).
تلميحات
- لرؤية المفاتيح، قم بتشغيل البرنامج النصي بدون خيار -Key : ... "wsfc.ps1" -Action "Get" -Object " Object " [-Key "{SummaryInformation.VirtualMachine | ClusterParameter}"]. لاحظ أنه ليست كل الكائنات لها مقاييس مرتبطة في جداول ClusterParameter وSummaryInformation (حاول استخدام هذه المفاتيح مع كائن 'ClusterResourceVirtualMachine' للاختبار). يمكنك الرجوع إلى MSDN للحصول على معلومات؛)
- يرجى قراءة وصف قواعد وعناصر الاكتشاف للعثور على معلومات مفيدة (روابط لصفحات MSDN، التي تصف المقاييس)؛
- إذا كنت تستخدم رموزًا غير إنجليزية (على سبيل المثال السيريلية الروسية) في أسماء الأجهزة الافتراضية وتريد الحصول على UTF-8 الصحيح على جانب خادم Zabbix، فيجب عليك إضافة -consoleCP معلمة your_native_codepage إلى سطر الأوامر. على سبيل المثال، للتحويل من صفحة الرموز السيريلية الروسية (CP866)، استخدم ... "wsfc.ps1" ... -consoleCP CP866
- لتصحيح الأخطاء في الوضع المستقل، استخدم الخيار -defaultConsoleWidth لترك العرض الافتراضي لوحدة التحكم أثناء تشغيل البرنامج النصي و- Verbose للحصول على معلومات معالجة إضافية؛
- إذا حصلت على "يجب أن يكون JSON" الخاص بـ Zabbix - فحاول زيادة قيمة الرقم في المتغير الثابت CONSOLE_WIDTH داخل wsfc.ps1 . يستخدم Powershell عرض وحدة التحكم لتنسيق خطوط إخراج JSON ويمكنه كسرها.
- باستخدام اكتشاف ClusterNetworkInterface، يمكنك استخدام {#NETWORKADDRESS} لتصفية الشبكات غير القابلة للتوجيه لاستبعاد عناوين IP غير القابلة للفحص لتجنب تحويل العناصر ذات الصلة إلى حالة غير مدعومة.
احذر من أن الطلبات المتكررة للبرنامج النصي PowerShell تأكل وحدة المعالجة المركزية وتزيد التحميل. لتجنب ذلك - لا تستخدم فترات تحديث صغيرة مع عناصر بيانات Zabbix وقم بتعطيل العناصر غير المستخدمة.