การมอนิเตอร์ที่เก็บข้อมูล IBM Storwize ด้วย Zabbix

ในบทความนี้ เราจะพูดถึงเล็กน้อยเกี่ยวกับการมอนิเตอร์ระบบสตอเรจ IBM Storwize และระบบสตอเรจอื่นๆ ที่สนับสนุนโปรโตคอล CIM / WBEM ความจำเป็นในการตรวจสอบดังกล่าวไม่อยู่ในวงเล็บ เราจะถือว่านี่เป็นสัจพจน์ เราจะใช้ Zabbix เป็นระบบตรวจสอบ

ใน Zabbix เวอร์ชันล่าสุด บริษัท เริ่มให้ความสำคัญกับเทมเพลตมากขึ้น - เทมเพลตเริ่มปรากฏขึ้นสำหรับบริการตรวจสอบ, DBMS, ฮาร์ดแวร์เซิร์ฟเวอร์ (IMM / iBMC) ผ่าน IPMI การตรวจสอบพื้นที่เก็บข้อมูลยังไม่อยู่ในกรอบ ดังนั้นในการรวมข้อมูลเกี่ยวกับสถานะและประสิทธิภาพของส่วนประกอบพื้นที่เก็บข้อมูลใน Zabbix คุณต้องใช้เทมเพลตที่กำหนดเอง ฉันขอแจ้งให้คุณทราบหนึ่งในเทมเพลตเหล่านี้

ก่อนอื่นทฤษฎีเล็กน้อย

ในการเข้าถึงสถานะและสถิติของหน่วยเก็บข้อมูล IBM Storwize คุณสามารถใช้:

  1. โปรโตคอล CIM/WBEM;
  2. RESTful API (สนับสนุนโดย IBM Storwize เริ่มต้นด้วยซอฟต์แวร์เวอร์ชัน 8.1.3)
  3. กับดัก SNMP (ชุดกับดักจำกัด ไม่มีสถิติ);
  4. การเชื่อมต่อ SSH ตามด้วยรีโมต เหมาะสำหรับการเขียนสคริปต์ทุบตีแบบสบาย ๆ.

ผู้ที่สนใจสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการตรวจสอบต่างๆ ได้ในส่วนที่เกี่ยวข้องของเอกสารประกอบของผู้จำหน่าย รวมทั้งในเอกสาร การเขียนสคริปต์ IBM Spectrum Virtualize.

เราจะใช้โปรโตคอล CIM / WBEM ซึ่งช่วยให้เราได้รับพารามิเตอร์ของระบบจัดเก็บข้อมูลโดยไม่มีการเปลี่ยนแปลงที่สำคัญในซอฟต์แวร์สำหรับระบบจัดเก็บข้อมูลต่างๆ โปรโตคอล CIM/WBEM ทำงานตาม ข้อมูลจำเพาะความคิดริเริ่มการจัดการพื้นที่เก็บข้อมูล (SMI-S). การริเริ่มการจัดการพื้นที่เก็บข้อมูล – ข้อมูลจำเพาะเป็นไปตามมาตรฐานเปิด CIM (โมเดลข้อมูลทั่วไป) и WBEM (การจัดการองค์กรบนเว็บ)กำหนดไว้ คณะทำงานเฉพาะกิจ.

WBEM ทำงานบนโปรโตคอล HTTP ด้วย WBEM คุณสามารถทำงานไม่เพียงแค่กับระบบจัดเก็บข้อมูลเท่านั้น แต่ยังสามารถทำงานร่วมกับ HBA สวิตช์ และเทปไลบรารีได้อีกด้วย

ตามที่ สถาปัตยกรรม SMI и กำหนดโครงสร้างพื้นฐานองค์ประกอบหลักของการใช้งาน SMI คือเซิร์ฟเวอร์ WBEM ที่ประมวลผลคำขอ CIM-XML จากไคลเอนต์ WBEM (ในกรณีของเรา จากสคริปต์การตรวจสอบ):

การมอนิเตอร์ที่เก็บข้อมูล IBM Storwize ด้วย Zabbix

CIM เป็นโมเดลเชิงวัตถุที่ใช้ Unified Modeling Language (UML)
รายการที่มีการจัดการถูกกำหนดเป็นคลาส CIM ที่มีคุณสมบัติและวิธีการเพื่อแสดงข้อมูลและฟังก์ชันที่มีการจัดการ

ตามที่ www.snia.org/pywbemในการเข้าถึงที่เก็บข้อมูลผ่าน CIM / WBEM คุณสามารถใช้ PyWBEM ซึ่งเป็นไลบรารีโอเพ่นซอร์สที่เขียนด้วย Python ที่ให้นักพัฒนาและผู้ดูแลระบบใช้งานโปรโตคอล CIM เพื่อเข้าถึงวัตถุ CIM และดำเนินการต่าง ๆ ด้วยเซิร์ฟเวอร์ WBEM ที่ทำงานตาม SMI -S หรือข้อกำหนด CIM อื่น ๆ

ในการเชื่อมต่อกับเซิร์ฟเวอร์ WBEM ให้ใช้ตัวสร้างคลาส การเชื่อมต่อ WBEM:

conn = pywbem.WBEMConnection(server_uri, (self.login, self.password),
            namespace, no_verification=True)

นี่คือการเชื่อมต่อเสมือน เนื่องจาก CIM-XML/WBEM ทำงานผ่าน HTTP การเชื่อมต่อจริงจะเกิดขึ้นเมื่อมีการเรียกใช้เมธอดบนอินสแตนซ์ของคลาส WBEMConnection ตาม IBM System Storage SAN Volume Controller และ Storwize V7000 Best Practices และ Performance Guide (ตัวอย่าง C-8, p. 412) เราจะใช้ "root/ibm" เป็น CIM namespace สำหรับ IBM Storwize storage

โปรดทราบว่าในการเก็บรวบรวมสถิติบนโปรโตคอล CIM-XML/WBEM คุณต้องรวมผู้ใช้ในกลุ่มความปลอดภัยที่เหมาะสม มิฉะนั้น เมื่อเรียกใช้แบบสอบถาม WBEM ผลลัพธ์ของแอตทริบิวต์อินสแตนซ์ของคลาสจะว่างเปล่า.

ในการเข้าถึงสถิติการจัดเก็บ ผู้ใช้ที่อยู่ภายใต้การเรียกตัวสร้าง การเชื่อมต่อ WBEM()ต้องมี RestrictedAdmin เป็นอย่างน้อย (สำหรับ code_level > 7.8.0) หรือ Administrator (ไม่แนะนำด้วยเหตุผลด้านความปลอดภัย)

เราเชื่อมต่อกับระบบจัดเก็บข้อมูลผ่าน SSH และดูหมายเลขกลุ่ม:

> lsusergrp
id name            role            remote
0  SecurityAdmin   SecurityAdmin   no    
1  Administrator   Administrator   no    
2  CopyOperator    CopyOperator    no    
3  Service         Service         no    
4  Monitor         Monitor         no    
5  RestrictedAdmin RestrictedAdmin no    

เพิ่มผู้ใช้ zabbix ลงในกลุ่มที่ต้องการ:

> chuser -usergrp 5 zabbix

นอกจากนี้ ตาม IBM System Storage SAN Volume Controller และ Storwize V7000 Best Practices and Performance Guide (หน้า 415) คุณต้องเปิดใช้งานการรวบรวมสถิติบนระบบหน่วยเก็บข้อมูล เพื่อรวบรวมสถิติทุกนาที:

> startstats -interval 1 

เราตรวจสอบ:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

คุณต้องใช้เมธอด EnumerateClassNames()

ตัวอย่าง:

classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
     print (classname)

วิธีรับค่าพารามิเตอร์ระบบจัดเก็บข้อมูล ระบุอินสแตนซ์ () คลาส WBEMConnection ส่งคืนรายการอินสแตนซ์ CIMอินสแตนซ์().

ตัวอย่าง:

instances = conn.EnumerateInstances(classname,
                   namespace=nd_parameters['name_space'])
for instance in instances:
     for prop_name, prop_value in instance.items():
          print('  %s: %r' % (prop_name, prop_value))

สำหรับบางคลาสที่มีอินสแตนซ์จำนวนมาก เช่น IBMTSSVC_StorageVolume การสืบค้นทั้งหมดของอินสแตนซ์ทั้งหมดอาจค่อนข้างช้า สามารถสร้างข้อมูลจำนวนมากที่ต้องจัดเตรียมโดยระบบจัดเก็บข้อมูล ส่งผ่านเครือข่าย และประมวลผลโดยสคริปต์ สำหรับกรณีดังกล่าวมีวิธีการ เอ็กเซ็กคิวรี่()ซึ่งทำให้คุณได้รับเฉพาะคุณสมบัติของคลาสอินสแตนซ์ที่เราสนใจ วิธีนี้เกี่ยวข้องกับการใช้ภาษาคิวรีที่คล้ายกับ SQL ไม่ว่าจะเป็น CIM Query Language (DMTF:CQL) หรือ WBEM Query Language (WQL) เพื่อเคียวรีออบเจกต์หน่วยเก็บข้อมูล CIM:

request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)

ในการพิจารณาว่าเราต้องการคลาสใดเพื่อรับพารามิเตอร์ของออบเจกต์หน่วยเก็บข้อมูล เราอ่านเอกสารประกอบ เช่น แนวคิดของระบบแมปกับแนวคิด CIM อย่างไร.

ดังนั้น เพื่อรับพารามิเตอร์ (ไม่ใช่ตัวนับประสิทธิภาพ) ของฟิสิคัลดิสก์ (ดิสก์ไดร์ฟ) เราจะสอบถามคลาส IBMTSSVC_DiskDrive เพื่อรับพารามิเตอร์ไดรฟ์ข้อมูล - คลาส IBMTSSVC_StorageVolume เพื่อรับพารามิเตอร์อาร์เรย์ - คลาส IBMTSSVC_Array เพื่อรับพารามิเตอร์ MDisks - คลาส IBMTSSVC_BackendVolume เป็นต้น

คุณสามารถอ่านเกี่ยวกับประสิทธิภาพ ไดอะแกรมการทำงานของตัวแทนแบบจำลองข้อมูลทั่วไป (โดยเฉพาะ - บล็อกโปรไฟล์ย่อยประสิทธิภาพของเซิร์ฟเวอร์) และ IBM System Storage SAN Volume Controller และ Storwize V7000 Best Practices and Performance Guide (ตัวอย่าง C-11, หน้า 415)

ในการรับสถิติการจัดเก็บสำหรับ Volumes คุณต้องระบุ IBMTSSVC_StorageVolumeStatistics เป็นค่าของพารามิเตอร์ ClassName คุณสมบัติของคลาส IBMTSSVC_StorageVolumeStatistics ที่จำเป็นสำหรับการรวบรวมสถิติสามารถพบได้ใน สถิติโหนด.

นอกจากนี้ สำหรับการวิเคราะห์ประสิทธิภาพ คุณสามารถใช้คลาส IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics

ในการเขียนข้อมูลไปยังระบบตรวจสอบเราจะใช้กลไก กับดัก zabbixนำมาใช้ใน python ในโมดูล ไพ-zabbix. โครงสร้างของคลาสพื้นที่เก็บข้อมูลและคุณสมบัติจะถูกวางไว้ในพจนานุกรมในรูปแบบ JSON

เราอัปโหลดเทมเพลตไปยังเซิร์ฟเวอร์ Zabbix ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์การตรวจสอบสามารถเข้าถึงที่เก็บข้อมูลผ่านโปรโตคอล WEB (TCP / 5989) วางไฟล์การกำหนดค่า สคริปต์การตรวจจับและการตรวจสอบบนเซิร์ฟเวอร์การตรวจสอบ ถัดไป เพิ่มสคริปต์ไปยังตัวกำหนดตารางเวลา ผลที่ตามมา: เราค้นพบวัตถุจัดเก็บข้อมูล (อาร์เรย์ ดิสก์จริงและดิสก์เสมือน กล่องหุ้ม และอื่นๆ อีกมากมาย) ส่งต่อไปยังการค้นพบ Zabbix อ่านสถานะของพารามิเตอร์ อ่านสถิติประสิทธิภาพ (ตัวนับประสิทธิภาพ) ส่งทั้งหมดนี้ไปยังที่เกี่ยวข้อง รายการ Zabbix ของเทมเพลตของเรา

เทมเพลต Zabbix, สคริปต์ python, โครงสร้างของคลาสหน่วยเก็บข้อมูลและคุณสมบัติ รวมถึงตัวอย่างไฟล์คอนฟิกูเรชัน ค้นหาที่นี่.

ที่มา: will.com

เพิ่มความคิดเห็น