
Содержание
Устанавливаем зависимости
apt-get install php
apt-get install php-cli
apt-get install php-common
apt-get install curl
apt-get install php-curl
apt-get install zabbix-sender
Заранее раскажу о своих настройках сервера
/home/administrator# hostname
zabbix
nano /etc/zabbix/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix
Include=/etc/zabbix/zabbix_agentd.d/*.conf
Скачаваем шаблон MSA 2050 для zabbix
Раньше множество шаблонов лежало на Zabbix Community , но теперь большая часть не скачивается , а ссылки отдают 404 . Выложил на облако. https://cloud.mail.ru/public/qW5B/Ghc7JXVqw
Импортируем шаблон
Шаблон что выше я импортировал на версии Zabbix 5.4.4

Закачиваем файлы на сервер
Через программу winscp перекидываем 2 файла к примеру в дерикторию /home/ ваш пользователь

Создаем хост мониторинга на Zabbix

Создаем пару Agent , где каждый ip адрес это адрес

Привязываем шаблон к хосту

Настройка мониторинг файлов
Тут начинается самое интересное.
Изменяем файл hpe_msa2040_stats.php и hpe_msa2040_discovery.php , после внесения информации исполняем их
(Строчки типа array(‘ip1’ => ‘10.130.50.17’, ‘ip2’ => ‘10.130.50.18’, ‘name’ => ‘P2000’), можно удалять и добавлять при большом колличестве схд, единственное что нужно везде создать логин и пароль новый , отличный от manage)
!!! Но самое главное это поле name оно должно совпадать с именем хоста которого мы сделали в zabbix!!!!!!!!!! Host name

rray('ip1' => '10.130.50.17', 'ip2' => '10.130.50.18', 'name' => 'P2000'),
Пример hpe_msa2040_stats.php
<?php
/*=== CONFIG ===*/
$username = 'superuser';
$password = 'megapasswordmsa2050';
$MSAs = array(
array('ip1' => '10.130.50.17', 'ip2' => '10.130.50.18', 'name' => 'P2000'),
array('ip1' => '10.77.90.76', 'ip2' => '10.77.90.77', 'name' => 'P2000_Selectel'),
array('ip1' => '10.77.90.194', 'ip2' => '10.77.90.195', 'name' => 'P2040_Selectel')
);
$zabbix_sender = "/usr/bin/zabbix_sender -z 127.0.0.1 -p 10051 -i -";
/*==============*/
Пример hpe_msa2040_discovery.php
<?php
/*=== CONFIG ===*/
$username = 'superuser';
$password = '!megapasswordmsa2050';
/*
ip1 - MSA Controller A
ip2 - MSA Controller B
name - system name on zabbix
*/
$MSAs = array(
array('ip1' => '10.130.50.17', 'ip2' => '10.130.50.18', 'name' => 'P2000'),
array('ip1' => '10.77.90.76', 'ip2' => '10.77.90.77', 'name' => 'P2000_Selectel'),
array('ip1' => '10.77.90.194', 'ip2' => '10.77.90.195', 'name' => 'P2040_Selectel')
);
$zabbix_sender = "/usr/bin/zabbix_sender -z 127.0.0.1 -p 10051 -i -";
/*==============*/
Исполняем файлы
php hpe_msa2040_discovery.php
php hpe_msa2040_stats.php
Должен появится такой вывод
root@zabbix:/home/administrator# php hpe_msa2040_discovery.php
P2000 10.77.90.76 connected
string(803) "echo 'P2000 msa.hdd.discovery "{\"data\":[]}"
P2000 msa.ssd.discovery "{\"data\":[]}"
P2000 msa.frus.discovery "{\"data\":[]}"
P2000 msa.controllers.discovery "{\"data\":[{\"{#CTRLID}\":\"controller_a\",\"{#CTRLNAME}\":\"Controller A\"},{\"{#CTRLID}\":\"controller_b\",\"{#CTRLNAME}\":\"Controller B\"}]}"
P2000 msa.enclosures.discovery "{\"data\":[{\"{#ENCLID}\":\"1\",\"{#ENCLNAME}\":\"Enclosure 1\"}]}"
P2000 msa.fans.discovery "{\"data\":[{\"{#FANID}\":\"fan_1.1\",\"{#FANNAME}\":\"FAN Enclosure 1 - Left\"},{\"{#FANID}\":\"fan_1.2\",\"{#FANNAME}\":\"FAN Enclosure 1 - Right\"}]}"
P2000 msa.pools.discovery "{\"data\":[]}"
P2000 msa.volumes.discovery "{\"data\":[{\"{#VOLID}\":\"00c0ff15883c0000f8a7275501000000\",\"{#VOLNAME}\":\"vd01_v001\"}]}"' | /usr/bin/zabbix_sender -z 127.0.0.1 -p 10051 -i -"
array(2) {
[0]=>
string(93) "Response from "127.0.0.1:10051": "processed: 8; failed: 0; total: 8; seconds spent: 0.000660""
[1]=>
string(29) "sent: 8; skipped: 0; total: 8"
}
После первого исполнения вывод окажется
root@zabbix:/home/administrator# php hpe_msa2040_discovery.php
P2000 10.77.90.76 connected
string(803) "echo 'P2000 msa.hdd.discovery "{\"data\":[]}"
P2000 msa.ssd.discovery "{\"data\":[]}"
P2000 msa.frus.discovery "{\"data\":[]}"
P2000 msa.controllers.discovery "{\"data\":[{\"{#CTRLID}\":\"controller_a\",\"{#CTRLNAME}\":\"Controller A\"},{\"{#CTRLID}\":\"controller_b\",\"{#CTRLNAME}\":\"Controller B\"}]}"
P2000 msa.enclosures.discovery "{\"data\":[{\"{#ENCLID}\":\"1\",\"{#ENCLNAME}\":\"Enclosure 1\"}]}"
P2000 msa.fans.discovery "{\"data\":[{\"{#FANID}\":\"fan_1.1\",\"{#FANNAME}\":\"FAN Enclosure 1 - Left\"},{\"{#FANID}\":\"fan_1.2\",\"{#FANNAME}\":\"FAN Enclosure 1 - Right\"}]}"
P2000 msa.pools.discovery "{\"data\":[]}"
P2000 msa.volumes.discovery "{\"data\":[{\"{#VOLID}\":\"00c0ff15883c0000f8a7275501000000\",\"{#VOLNAME}\":\"vd01_v001\"}]}"' | /usr/bin/zabbix_sender -z 127.0.0.1 -p 10051 -i -"
array(2) {
[0]=>
string(93) "Response from "127.0.0.1:10051": "processed: 0; failed: 8; total: 8; seconds spent: 0.000261""
Но если его исполнить раз 10 , то появится «processed: 1; failed: 7; , далее исполните stats и еще раз discovery он запроцессится полностью.
В процессе данные будут отображены

Осталось закинуть все в крон
Осталось закинуть все в крон (Замечание , я перенес файлы в /usr/local/bin)
crontab -e
*/1 * * * * php /usr/local/bin/hpe_msa2040_stats.php
Логи крона
grep CRON /var/log/syslog