Zabbix ile IBM Storwize depolamasını izleme

Bu yazımızda biraz IBM Storwize depolama sistemlerini ve CIM/WBEM protokollerini destekleyen diğer depolama sistemlerini izleme hakkında konuşacağız. Böyle bir izleme ihtiyacı köşeli parantezlerin dışında bırakılmıştır; bunu bir aksiyom olarak ele alacağız. Zabbix'i izleme sistemi olarak kullanacağız.

Zabbix'in son sürümlerinde, şirket şablonlara çok daha fazla dikkat etmeye başladı - IPMI aracılığıyla izleme hizmetleri, DBMS, Sunucu donanımı (IMM / iBMC) için şablonlar görünmeye başladı. Depolama izleme henüz kullanıma hazır değildir, bu nedenle depolama bileşenlerinin durumu ve performansı hakkındaki bilgileri Zabbix'e entegre etmek için özel şablonlar kullanmanız gerekir. Bu şablonlardan birini dikkatinize sunuyorum.

İlk olarak, teori biraz.

IBM Storwize depolamanın durumuna ve istatistiklerine erişmek için şunları kullanabilirsiniz:

  1. CIM/WBEM protokolleri;
  2. RESTful API (8.1.3 yazılım sürümünden itibaren IBM Storwize tarafından desteklenir);
  3. SNMP Tuzakları (sınırlı tuzak seti, istatistik yok);
  4. SSH bağlantısı ve ardından uzaktan kumanda yavaş bash betiği için uygun.

İlgilenenler, satıcı belgelerinin ilgili bölümlerinde ve belgede çeşitli izleme yöntemleri hakkında daha fazla bilgi edinebilir. IBM Spectrum Virtualize komut dosyası oluşturma.

Çeşitli depolama sistemleri için yazılımda önemli değişiklikler olmadan depolama sisteminin parametrelerini elde etmemizi sağlayan CIM / WBEM protokollerini kullanacağız. CIM/WBEM protokolleri şuna göre çalışır: Depolama Yönetimi Girişimi Belirtimi (SMI-S). Depolama Yönetimi Girişimi - Spesifikasyon, açık standartları temel alır CIM (Ortak Bilgi Modeli) и WBEM (Web Tabanlı Kurumsal Yönetim)tanımlanmış Dağıtılmış Yönetim Görev Gücü.

WBEM, HTTP protokolünün üstünde çalışır. WBEM aracılığıyla yalnızca depolama sistemleriyle değil, HBA'lar, anahtarlar ve teyp kitaplıklarıyla da çalışabilirsiniz.

Göre SMI Mimarisi и Altyapıyı Belirle, SMI uygulamasının ana bileşeni, WBEM istemcilerinden gelen CIM-XML isteklerini işleyen WBEM sunucusudur (bizim durumumuzda, izleme betiklerinden):

Zabbix ile IBM Storwize depolamasını izleme

CIM, Birleşik Modelleme Dili'ne (UML) dayalı nesne yönelimli bir modeldir.
Yönetilen öğeler, yönetilen verileri ve işlevselliği temsil eden özelliklere ve yöntemlere sahip CIM sınıfları olarak tanımlanır.

Göre www.snia.org/pywbem, CIM / WBEM yoluyla depolamaya erişmek için, geliştiricilere ve sistem yöneticilerine CIM nesnelerine erişmek ve SMI'ye göre çalışan bir WBEM sunucusuyla çeşitli işlemleri gerçekleştirmek için CIM protokolünün uygulanmasını sağlayan, Python'da yazılmış açık kaynaklı bir kitaplık olan PyWBEM'i kullanabilirsiniz. -S veya diğer CIM özellikleri.

WBEM sunucusuna bağlanmak için sınıf yapıcısını kullanın WBEM Bağlantısı:

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

Bu sanal bir bağlantıdır, çünkü CIM-XML/WBEM HTTP üzerinden çalışır, gerçek bağlantı, yöntemler WBEMConnection sınıfının bir örneğinde çağrıldığında gerçekleşir. IBM System Storage SAN Volume Controller ve Storwize V7000 Best Practices and Performance Guidelines (Örnek C-8, s. 412) uyarınca, IBM Storwize depolaması için CIM ad alanı olarak "root/ibm" kullanacağız.

CIM-XML/WBEM protokolü hakkında istatistik toplamak için kullanıcıyı uygun güvenlik grubuna dahil etmeniz gerektiğini lütfen unutmayın. Aksi takdirde, WBEM sorguları yürütülürken, sınıf örneği özniteliklerinin çıktısı boş olacaktır..

Depolama istatistiklerine erişmek için, altında yapıcının çağrıldığı kullanıcı WBEM Bağlantısı(), en azından RestrictedAdmin'e (code_level > 7.8.0 için mevcuttur) veya Yöneticiye (güvenlik nedeniyle önerilmez) sahip olmalıdır.

Storage sistemine SSH üzerinden bağlanıyoruz ve grup numaralarına bakıyoruz:

> 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 kullanıcısını istenen gruba ekleyin:

> chuser -usergrp 5 zabbix

Ayrıca, IBM System Storage SAN Volume Controller ve Storwize V7000 Best Practices and Performance Guidelines (p. 415) uyarınca, depolama sisteminde istatistik toplamayı etkinleştirmeniz gerekir. Yani, her dakika istatistik toplamak için:

> startstats -interval 1 

Kontrol ediyoruz:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Mevcut tüm depolama sınıflarını almak için EnumerateClassNames() yöntemini kullanmanız gerekir.

Örnek:

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

Depolama sistemi parametrelerinin değerlerini elde etmek için yöntem Örnekleri Numaralandır() Örneklerin bir listesini döndüren WBEMConnection sınıfı CIMI Örneği().

Örnek:

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 gibi çok sayıda eşgörünüm içeren bazı sınıflar için, tüm eşgörünümlerin tam sorgusu oldukça yavaş olabilir. Depolama sistemi tarafından hazırlanması, ağ üzerinden iletilmesi ve bir komut dosyası tarafından işlenmesi gereken büyük miktarda veri üretebilir. Böyle bir durum için bir yöntem var. ExecQuery(), yalnızca bizi ilgilendiren sınıf örneğinin özelliklerini almanıza izin verir. Bu yöntem, CIM depolama nesnelerini sorgulamak için CIM Sorgu Dili (DMTF:CQL) veya WBEM Sorgu Dili (WQL) gibi SQL benzeri bir sorgulama dili kullanmayı içerir:

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

Hangi sınıfların depolama nesnelerinin parametrelerini almamız gerektiğini belirlemek için belgeleri okuruz, örneğin Sistem kavramları CIM kavramlarıyla nasıl eşleşir?.

Bu nedenle, fiziksel disklerin (Disk Sürücüleri) parametrelerini (performans sayaçlarını değil) almak için, Volumes parametrelerini almak için IBMTSSVC_DiskDrive Sınıfını - dizi parametrelerini almak için IBMTSSVC_StorageVolume Sınıfı - MDisks parametrelerini almak için IBMTSSVC_Array Sınıfı - IBMTSSVC_BackendVolume Sınıfı vb.

Performans hakkında okuyabilirsiniz Ortak Bilgi Modeli aracısının işlevsel diyagramları (özellikle - Engelleme sunucusu performans alt profili) ve IBM System Storage SAN Volume Controller ve Storwize V7000 Best Practices and Performance Guidelines (Örnek C-11, sayfa 415).

Birimlere ilişkin depolama istatistiklerini almak için, ClassName parametresinin değeri olarak IBMTSSVC_StorageVolumeStatistics'i belirtmeniz gerekir. İstatistik toplamak için gerekli olan IBMTSSVC_StorageVolumeStatistics sınıfının özellikleri şurada bulunabilir: Düğüm İstatistikleri.

Ayrıca performans analizi için IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics sınıflarını kullanabilirsiniz.

İzleme sistemine veri yazmak için mekanizmayı kullanacağız zabbix tuzakları, bir modülde python'da uygulandı py-zabbix. Depolama sınıflarının yapısı ve özellikleri, JSON formatında bir sözlüğe yerleştirilecektir.

Şablonu Zabbix sunucusuna yüklüyoruz, izleme sunucusunun WEB protokolü (TCP / 5989) aracılığıyla depolamaya erişimi olduğundan emin oluyoruz, yapılandırma dosyalarını, algılama ve izleme komut dosyalarını izleme sunucusuna yerleştiriyoruz. Ardından, zamanlayıcıya komut dosyaları ekleyin. Sonuç olarak: depolama nesnelerini (diziler, fiziksel ve sanal diskler, muhafazalar ve çok daha fazlası) keşfederiz, bunları Zabbix keşiflerine iletiriz, parametrelerinin durumunu okuruz, performans istatistiklerini okuruz (performans sayaçları), tüm bunları ilgili Zabbix Şablonumuzun Öğeleri.

Zabbix şablonu, python betikleri, depolama sınıflarının yapısı ve özellikleri ile yapılandırma dosyalarının örnekleri şunlar olabilir: burada bul.

Kaynak: habr.com

Yorum ekle