Παρακολούθηση αποθήκευσης 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 και μετά απομακρυσμένα κατάλληλο για χαλαρό σενάριο bash.

Οι ενδιαφερόμενοι μπορούν να μάθουν περισσότερα για διάφορες μεθόδους παρακολούθησης στις σχετικές ενότητες της τεκμηρίωσης του προμηθευτή, καθώς και στο έγγραφο IBM Spectrum Virtualize scripting.

Θα χρησιμοποιήσουμε τα πρωτόκολλα CIM/WBEM, τα οποία μας επιτρέπουν να αποκτήσουμε παραμέτρους λειτουργίας του συστήματος αποθήκευσης χωρίς σημαντικές αλλαγές λογισμικού για διαφορετικά συστήματα αποθήκευσης. Τα πρωτόκολλα CIM/WBEM λειτουργούν σύμφωνα με Προδιαγραφή Πρωτοβουλίας διαχείρισης αποθήκευσης (SMI-S). Πρωτοβουλία διαχείρισης αποθήκευσης – Η προδιαγραφή βασίζεται σε ανοιχτά πρότυπα CIM (Κοινό μοντέλο πληροφοριών) и WBEM (Διαχείριση επιχειρήσεων που βασίζεται στον ιστό), προσδιορίζεται Κατανεμημένη Task Force διαχείρισης.

Το 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 and Performance Guidelines (Παράδειγμα C-8, σελίδα 412), θα χρησιμοποιήσουμε το "root/ibm" ως χώρο ονομάτων CIM για το σύστημα αποθήκευσης IBM Storwize.

Λάβετε υπόψη ότι για τη συλλογή στατιστικών στοιχείων μέσω του πρωτοκόλλου CIM-XML/WBEM, πρέπει να συμπεριλάβετε τον χρήστη στην κατάλληλη ομάδα ασφαλείας. Διαφορετικά, κατά την εκτέλεση ερωτημάτων WBEM, η έξοδος των χαρακτηριστικών παρουσίας κλάσης θα είναι κενή.

Για πρόσβαση στα στατιστικά στοιχεία αποθήκευσης, ο χρήστης από τον οποίο καλείται ο κατασκευαστής WBEMConnection(), πρέπει να έχει τουλάχιστον RestrictedAdmin (διαθέσιμο για code_level > 7.8.0) ή δικαιώματα διαχειριστή (δεν συνιστάται για λόγους ασφαλείας).

Συνδεόμαστε στο σύστημα αποθήκευσης μέσω 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 Guidelines (σελ. 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)

Η μέθοδος χρησιμοποιείται για τη λήψη των τιμών των παραμέτρων του συστήματος αποθήκευσης EnumerateInstances() κλάση WBEMConnection, επιστρέφοντας μια λίστα παρουσιών CIMInstance().

Παράδειγμα:

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, ένα πλήρες ερώτημα όλων των παρουσιών μπορεί να είναι αρκετά αργό. Μπορεί να δημιουργήσει μεγάλους όγκους δεδομένων που πρέπει να προετοιμαστούν από το σύστημα αποθήκευσης, να μεταδοθούν μέσω του δικτύου και να υποβληθούν σε επεξεργασία από το σενάριο. Υπάρχει μέθοδος για μια τέτοια περίπτωση ExecQuery(), το οποίο μας επιτρέπει να λαμβάνουμε μόνο τις ιδιότητες μιας παρουσίας κλάσης που μας ενδιαφέρουν. Αυτή η μέθοδος περιλαμβάνει τη χρήση μιας γλώσσας ερωτήματος τύπου 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.

Έτσι, για να λάβουμε παραμέτρους (όχι μετρητές απόδοσης) φυσικών δίσκων (Disk Drives) θα μετρήσουμε την κλάση IBMTSSVC_DiskDrive, για να λάβουμε παραμέτρους Volumes - Class IBMTSSVC_StorageVolume, για να λάβουμε παραμέτρους πίνακα - Κατηγορία IBMTSSVC_Array, για να λάβουμε -MDisksVC_Array, για να λάβουμε -MDisksVC_MTBeends.

Για απόδοση μπορείτε να διαβάσετε Λειτουργικά διαγράμματα του πράκτορα Common Information Model (ΕΙΔΙΚΑ - Αποκλεισμός υποπροφίλ απόδοσης διακομιστή) και IBM System Storage SAN Volume Controller και Storwize V7000 Best Practices and Performance Guidelines (Παράδειγμα C-11, σελίδα 415).

Για να λάβετε στατιστικά στοιχεία αποθήκευσης για τόμους, πρέπει να καθορίσετε το IBMTSSVC_StorageVolumeStatistics ως την τιμή της παραμέτρου ClassName. Οι ιδιότητες της κλάσης IBMTSSVC_StorageVolumeStatistics που είναι απαραίτητες για τη συλλογή στατιστικών στοιχείων μπορούν να προβληθούν στο Στατιστικά κόμβων.

Επίσης, για ανάλυση απόδοσης μπορείτε να χρησιμοποιήσετε τις κλάσεις IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Για την καταγραφή δεδομένων στο σύστημα παρακολούθησης θα χρησιμοποιήσουμε τον μηχανισμό παγίδες zabbix, υλοποιείται σε python σε μια ενότητα py-zabbix. Θα τοποθετήσουμε τη δομή των κλάσεων συστημάτων αποθήκευσης και τις ιδιότητές τους σε ένα λεξικό σε μορφή JSON.

Ανεβάζουμε το πρότυπο στον διακομιστή Zabbix, βεβαιωνόμαστε ότι ο διακομιστής παρακολούθησης έχει πρόσβαση στο σύστημα αποθήκευσης μέσω του πρωτοκόλλου WEB (TCP/5989) και τοποθετούμε αρχεία διαμόρφωσης, σενάρια ανίχνευσης και παρακολούθησης στον διακομιστή παρακολούθησης. Στη συνέχεια, προσθέστε την εκκίνηση του σεναρίου στον προγραμματιστή. Ως αποτέλεσμα: ανακαλύπτουμε αντικείμενα αποθήκευσης (συστοιχίες, φυσικούς και εικονικούς δίσκους, περιβλήματα και πολλά άλλα), τα μεταφέρουμε σε ανακαλύψεις Zabbix, διαβάζουμε την κατάσταση των παραμέτρων τους, διαβάζουμε στατιστικά στοιχεία απόδοσης (μετρητές απόδοσης), μεταφέρουμε όλα αυτά στο αντίστοιχο Zabbix Στοιχεία του προτύπου μας.

Πρότυπο Zabbix, σενάρια python, δομή των κλάσεων αποθήκευσης και οι ιδιότητές τους, καθώς και παραδείγματα αρχείων διαμόρφωσης, μπορείτε να βρείτε εδώ.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο