Giám sát lưu trữ IBM Storwize với Zabbix

Trong bài viết này, chúng tôi sẽ nói một chút về việc giám sát các hệ thống lưu trữ IBM Storwize và các hệ thống lưu trữ khác hỗ trợ giao thức CIM/WBEM. Nhu cầu giám sát như vậy bị loại khỏi phương trình; chúng tôi sẽ coi đây là một tiên đề. Chúng tôi sẽ sử dụng Zabbix làm hệ thống giám sát.

Trong các phiên bản mới nhất của Zabbix, công ty bắt đầu chú ý nhiều hơn đến các mẫu - các mẫu bắt đầu xuất hiện cho các dịch vụ giám sát, DBMS, phần cứng Máy chủ (IMM/iBMC) qua IPMI. Việc giám sát hệ thống lưu trữ vẫn nằm ngoài các mẫu sẵn có, vì vậy, để tích hợp thông tin về trạng thái và hiệu suất của các thành phần lưu trữ vào Zabbix, bạn cần sử dụng các mẫu tùy chỉnh. Tôi mang đến cho bạn sự chú ý một trong những mẫu này.

Đầu tiên, một chút lý thuyết.

Để truy cập trạng thái và số liệu thống kê của hệ thống lưu trữ IBM Storwize, bạn có thể sử dụng:

  1. giao thức CIM/WBEM;
  2. API RESTful (được hỗ trợ trong IBM Storwize bắt đầu từ phiên bản phần mềm 8.1.3);
  3. Bẫy SNMP (bộ bẫy hạn chế, không có số liệu thống kê);
  4. Kết nối qua SSH và sau đó từ xa thích hợp cho việc viết kịch bản bash nhàn nhã.

Những người quan tâm có thể tìm hiểu thêm về các phương pháp giám sát khác nhau trong các phần liên quan của tài liệu của nhà cung cấp cũng như trong tài liệu Kịch bản ảo hóa IBM Spectrum.

Chúng tôi sẽ sử dụng các giao thức CIM/WBEM, cho phép chúng tôi thu được các thông số vận hành hệ thống lưu trữ mà không cần thay đổi đáng kể phần mềm cho các hệ thống lưu trữ khác nhau. Các giao thức CIM/WBEM hoạt động theo Đặc tả sáng kiến ​​quản lý lưu trữ (SMI-S). Sáng kiến ​​quản lý lưu trữ – Đặc tả dựa trên các tiêu chuẩn mở CIM (Mô hình thông tin chung) и WBEM (Quản lý doanh nghiệp dựa trên web), xác định Lực lượng đặc nhiệm quản lý phân tán.

WBEM chạy trên giao thức HTTP. Thông qua WBEM, bạn không chỉ có thể làm việc với các hệ thống lưu trữ mà còn với HBA, bộ chuyển mạch và thư viện băng từ.

Theo Kiến trúc SMI и Xác định cơ sở hạ tầng, thành phần chính của việc triển khai SMI là máy chủ WBEM, xử lý các yêu cầu CIM-XML từ các máy khách WBEM (trong trường hợp của chúng tôi là từ các tập lệnh giám sát):

Giám sát lưu trữ IBM Storwize với Zabbix

CIM là một mô hình hướng đối tượng dựa trên Ngôn ngữ mô hình hóa thống nhất (UML).
Các phần tử được quản lý được định nghĩa là các lớp CIM có các thuộc tính và phương thức để thể hiện dữ liệu và chức năng được quản lý.

Theo www.snia.org/pywbem, để truy cập các hệ thống lưu trữ qua CIM/WBEM, bạn có thể sử dụng PyWBEM - một thư viện mã nguồn mở được viết bằng Python, cung cấp cho các nhà phát triển và quản trị viên hệ thống cách triển khai giao thức CIM để truy cập các đối tượng CIM và thực hiện các hoạt động khác nhau với máy chủ WBEM hoạt động trong phù hợp với SMI-S hoặc các thông số kỹ thuật CIM khác.

Để kết nối với máy chủ WBEM, chúng tôi sử dụng hàm tạo lớp Kết nối WBEM:

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

Đây là kết nối ảo, do CIM-XML/WBEM chạy trên HTTP nên kết nối thực xảy ra khi các phương thức được gọi trên một phiên bản của lớp WBEMConnection. Theo Bộ điều khiển âm lượng SAN lưu trữ hệ thống của IBM và Nguyên tắc thực hành và hiệu suất tốt nhất của Storwize V7000 (Ví dụ C-8, trang 412), chúng tôi sẽ sử dụng “root/ibm” làm vùng tên CIM cho hệ thống lưu trữ IBM Storwize.

Xin lưu ý rằng để thu thập số liệu thống kê qua giao thức CIM-XML/WBEM, bạn phải đưa người dùng vào nhóm bảo mật thích hợp. Ngược lại, khi thực hiện các truy vấn WBEM, đầu ra của các thuộc tính thể hiện của lớp sẽ trống.

Để truy cập số liệu thống kê lưu trữ, người dùng mà hàm tạo được gọi Kết nối WBEM(), phải có ít nhất quyền Quản trị viên hạn chế (có sẵn cho code_level > 7.8.0) hoặc quyền Quản trị viên (không được khuyến nghị vì lý do bảo mật).

Chúng tôi kết nối với hệ thống lưu trữ thông qua SSH và xem số nhóm:

> 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    

Thêm người dùng zabbix vào nhóm mong muốn:

> chuser -usergrp 5 zabbix

Ngoài ra, theo Bộ điều khiển âm lượng SAN lưu trữ hệ thống của IBM và Nguyên tắc hiệu suất và phương pháp thực hành tốt nhất của Storwize V7000 (tr. 415), bạn phải kích hoạt tính năng thu thập số liệu thống kê trên hệ thống lưu trữ. Vì vậy, để thu thập số liệu thống kê mỗi phút:

> startstats -interval 1 

Chúng tôi kiểm tra:

> lssystem | grep statistics
statistics_status on
statistics_frequency 1

Để lấy tất cả các lớp lưu trữ hiện có, bạn phải sử dụng phương thức EnumerateClassNames().

Ví dụ:

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

Phương pháp được sử dụng để lấy các giá trị của tham số hệ thống lưu trữ Liệt kê các trường hợp() lớp WBEMConnection, trả về danh sách các phiên bản CIMInstance().

Ví dụ:

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))

Đối với một số lớp chứa nhiều phiên bản, chẳng hạn như IBMTSSVC_StorageVolume, truy vấn đầy đủ của tất cả các phiên bản có thể khá chậm. Nó có thể tạo ra khối lượng lớn dữ liệu phải được hệ thống lưu trữ chuẩn bị, truyền qua mạng và xử lý bằng tập lệnh. Có một phương pháp cho trường hợp như vậy Thực thi(), nó cho phép chúng ta chỉ lấy các thuộc tính của một thể hiện của lớp mà chúng ta quan tâm. Phương pháp này liên quan đến việc sử dụng ngôn ngữ truy vấn giống SQL, Ngôn ngữ truy vấn CIM (DMTF:CQL) hoặc Ngôn ngữ truy vấn WBEM (WQL), để truy vấn các đối tượng lưu trữ CIM:

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

Để xác định lớp nào chúng ta cần lấy tham số của đối tượng lưu trữ, hãy đọc tài liệu, ví dụ Cách các khái niệm hệ thống ánh xạ tới các khái niệm CIM.

Vì vậy, để lấy tham số (không phải bộ đếm hiệu suất) của đĩa vật lý (Ổ đĩa), chúng ta sẽ thăm dò Lớp IBMTSSVC_DiskDrive, để lấy tham số Khối - Lớp IBMTSSVC_StorageVolume, để lấy tham số mảng - Lớp IBMTSSVC_Array, để lấy tham số MDisks - Lớp IBMTSSVC_BackendVolume, v.v.

Để biết hiệu suất, bạn có thể đọc Sơ đồ chức năng của tác nhân Common Information Model (đặc biệt - Chặn hồ sơ con hiệu suất máy chủ) và Bộ điều khiển âm lượng SAN lưu trữ hệ thống IBM và Hướng dẫn thực hành tốt nhất và Storwize V7000 (Ví dụ C-11, trang 415).

Để có được số liệu thống kê lưu trữ cho các Tập, bạn phải chỉ định IBMTSSVC_StorageVolumeStatistics làm giá trị của tham số ClassName. Các thuộc tính của lớp IBMTSSVC_StorageVolumeStatistics cần thiết cho việc thu thập số liệu thống kê có thể được xem trong Thống kê nút.

Ngoài ra, để phân tích hiệu suất, bạn có thể sử dụng các lớp IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics.

Để ghi dữ liệu vào hệ thống giám sát chúng ta sẽ sử dụng cơ chế bẫy zabbix, được triển khai bằng python trong một mô-đun py-zabbix. Chúng ta sẽ đặt cấu trúc của các lớp hệ thống lưu trữ và các thuộc tính của chúng vào một từ điển ở định dạng JSON.

Chúng tôi tải mẫu lên máy chủ Zabbix, đảm bảo rằng máy chủ giám sát có quyền truy cập vào hệ thống lưu trữ thông qua giao thức WEB (TCP/5989) và đặt các tệp cấu hình, tập lệnh phát hiện và giám sát trên máy chủ giám sát. Tiếp theo, thêm tập lệnh khởi chạy vào bộ lập lịch. Kết quả là: chúng tôi khám phá các đối tượng lưu trữ (mảng, đĩa vật lý và ảo, vỏ, v.v.), chuyển chúng sang khám phá Zabbix, đọc trạng thái tham số của chúng, đọc thống kê hiệu suất (bộ đếm hiệu suất), chuyển tất cả điều này sang Zabbix tương ứng Các mục của mẫu của chúng tôi.

Bạn có thể sử dụng mẫu Zabbix, tập lệnh python, cấu trúc của các lớp lưu trữ và thuộc tính của chúng, cũng như các ví dụ về tệp cấu hình tìm ở đây.

Nguồn: www.habr.com

Thêm một lời nhận xét