Использование шаблонов для Zabbix на основе MIB-файлов SpaceVM
Установка ZABBIX
Загрузка и установка Zabbix для kubuntu 22.04.1
- zabbix version 6.0
- os distribution Ubuntu
- os version 22.04
- zabbix component: Server,Frontend,Agent
- database PostgreSQL
-
web server Nginx
-
Инсталлируем и конфигурируем репозиторий, устанавливаем Zabbix server, frontend, agent.
- Создаем начальную базу данных.(Необходимо удостовериться что postgresql установлен и работает. Рекомендуется команды postgres выполнять из каталога /tmp).
- Импортируем схему БД и начальные данные.
- Конфигурируем базу данных для сервера.
- Конфигурируем PHP для frontend.
- Запускаем процессы сервера и агента.
Загрузка и проверка базы управляющей информации MIB SNMP для SpaceVM
- Проверяем с помощью MIB-браузера.
- Устанавливаем java-jre (java-sdk).
- Загружаем в MIB-браузер
MIB файлы и шаблоны для Zabbix можно скачать по ссылке.
Создание шаблонов Zabbix из MIB
MIB файлы могут быть проанализированы и конвертированы в шаблоны, содержащие элементы данных, правила обнаружения и типы данных.
- Необходимо загрузить скрипт, доступный по ссылке.
- Установить и сконфигурировать пакеты командой:
apt install snmp snmp-mibs-downloader
-
Отредактировать
/etc/snmp/snmp.conf
4. Необходимо загрузить и распаковать базу управляющей информации MIB SNMP для SpaceVM в каталог /usr/share/snmp/mibs/spacevm (или /root/.snmp/mibs).mibs : mibdirs /root/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/snmp/mibs/spacevm: mibs +DACOM-SPACEVM-ENV-MIB mibs +DACOM-SPACEVM-HADR-MIB mibs +DACOM-SPACEVM-RESOURCES-MIB mibs +DACOM-SPACEVM-ROOT-MIB mibs +DACOM-SPACEVM-SYSTEM-MIB mibs +DACOM-SPACEVM-VMINFO-MIB
-
Выполнить тест командой
snmptranslate 1.3.6.1.4.1.51290
.Ответ должен быть: DACOM-SPACEVM-ROOT-MIB::spacevm
snmptranslate готов транслировать MIB OID между числовым и текстовым представлением.
-
Для корректной работы необходимо установить зависимости для скрипта:
apt install perl libxml-simple-perl libsnmp-perl
- Загрузить скрипт:
wget -O mib2zabbix https://raw.githubusercontent.com/cavaliercoder/mib2zabbix/master/mib2zabbix.pl
-
Настроить права на исполнение:
9. Протестировать скрипт:chmod a+x mib2zabbix
./mib2zabbix -h
Ответ должен быть:
Usage:
mib2zabbix.pl -o <OID> [OPTIONS]...
Export loaded SNMP MIB OIDs to Zabbix Template XML
-f, --filename=PATH output filename (default: stdout)
-N, --name=STRING template name (default: OID label)
-G, --group=STRING template group (default: 'Templates')
-e, --enable-items enable all template items (default: disabled)
-o, --oid=STRING OID tree root to export
-v, --snmpver=1|2|3 SNMP version (default: 2)
-p, --port=PORT SNMP UDP port number (default: 161)
SNMP Version 1 or 2c specific
-c, --community=STRING SNMP community string (default: 'public')
SNMP Version 3 specific
-L, --level=LEVEL security level (noAuthNoPriv|authNoPriv|authPriv)
-n, --context=CONTEXT context name
-u, --username=USERNAME security name
-a, --auth=PROTOCOL authentication protocol (MD5|SHA)
-A, --authpass=PASSPHRASE authentication protocol passphrase
-x, --privacy=PROTOCOL privacy protocol (DES|AES)
-X, --privpass=PASSPHRASE privacy passphrase
Zabbix item configuration
--check-delay=SECONDS check interval in seconds (default: 60)
--disc-delay=SECONDS discovery interval in seconds (default: 3600)
--history=DAYS history retention in days (default: 7)
--trends=DAYS trends retention in days (default: 365)
-h, --help print this message
./mib2zabbix -f spacevm.xml -o .1.3.6.1.4.1.51290 -N SPACEVM -e --check-delay=60
При выполнении данной команды, будет создан файл с именем spacevm.xml. Имя шаблона SPACEVM. Все элементы данных будут иметь статус Enabled. Интервал проверки, по умолчанию, установлен в 60 сек. Типы данных Integer32 преобразуются в Numeric(Float).
Импорт шаблонов SpaceVM в Zabbix
- Для импорта необходимо перейти во вкладку Configuration -> Template -> Import -> Choose File.
- Выбрать xml-файл и нажать на «Import».
После выполнения данных действий, будет создан шаблон с именем, указанным опцией -N.
Присоединение шаблонов к хосту
- Для привязки необходимо перейти во вкладку Configuration -> Hosts -> HOST -> Templates -> Select ->SpaceVM.
- Выбрать шаблон SpaceVM.
Все элементы данных имеют статус Enabled.
Создание графиков и триггеров
- Для создания графиков необходимо перейти во вкладку Configuration -> Hosts -> HOST -> Graphs ->Create graph или Configuration ->Templates -> TEMPLATE -> Graphs ->Create graph.
- Для создания триггеров необходимо перейти во вкладку Configuration -> Hosts -> HOST -> Triggers ->Create Trigger.
Графики и триггеры создаются штатными средствами Zabbix.
Исправление типов данных в MIB
База управляющей информации MIB SNMP SpaceVM содержит описание объектов, по которым могут быть построены графики и созданы триггеры. Для этих объектов должен быть определен числовой тип Unsigned32 или Integer32.
Примечание
Объекты с типом DisplayString не пригодны для построения графиков и триггеров.
Графическое дерево MIB SpaceVM, можно получить с помощью команды:
snmptranslate -Tp .1.3.6.1.4.1.51290
Дерево объектов MIB SPACEVM
+--spacevm(51290)
+--spacevmSystemObjects(10)
| +--spacevmSystemMIB(1)
| |
| +--spacevmSystemScalarObjects(1)
| | |
| | +-- -R-- String spacevmSystemEnv(1)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- String spacevmSystemRole(2)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- String spacevmSystemBaseVersion(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| |
| +--spacevmSystemTableObjects(2)
| |
| +-- -RW- Unsigned spacevmSystemProductVersionsCount(1)
| |
| +--spacevmSystemProductVersionsTable(2)
| |
| +--spacevmSystemProductVersionsEntry(1)
| | Index: spacevmSystemProductIdx
| |
| +-- ---- String spacevmSystemProductIdx(1)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmSystemProductLabel(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmSystemProductVersion(3)
| Textual Convention: DisplayString
| Size: 0..255
|
+--spacevmResourcesObjects(20)
| +--spacevmResourcesMIB(1)
| +--spacevmResourcesCPU(1)
| | +-- -R-- Integer32 spacevmResourcesCPUUsed(1)
| | +-- -RW- Unsigned spacevmResourcesCPUProcUsedCount(2)
| | |
| | +--spacevmResourcesCPUProcUsedTable(3)
| | |
| | +--spacevmResourcesCPUProcUsedEntry(1)
| | | Index: spacevmResourcesCPUIdx
| | |
| | +-- ---- String spacevmResourcesCPUIdx(1)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- String spacevmResourcesCPULabel(2)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- Integer32 spacevmResourcesCPUUsage(3)
| |
| +--spacevmResourcesMemory(2)
| | +-- -R-- Integer32 spacevmResourcesMemCount(1)
| | +-- -R-- Integer32 spacevmResourcesMemFree(2)
| | +-- -R-- Integer32 spacevmResourcesMemUsed(3)
| |
| +--spacevmResourcesDisks(3)
| | +-- -RW- Unsigned spacevmResourcesDisksCount(1)
| | |
| | +--spacevmResourcesDisksTable(2)
| | |
| | +--spacevmResourcesDisksEntry(1)
| | | Index: spacevmResourcesDiskIdx
| | |
| | +-- ---- String spacevmResourcesDiskIdx(1)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- String spacevmResourcesDiskLabel(2)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- Integer32 spacevmResourcesDiskReadRate(3)
| | +-- -R-- Integer32 spacevmResourcesDiskWriteRate(4)
| |
| +--spacevmResourcesNetwork(4)
| | +-- -RW- Unsigned spacevmResourcesNetCount(1)
| | |
| | +--spacevmResourcesNetTable(2)
| | |
| | +--spacevmResourcesNetEntry(1)
| | | Index: spacevmResourcesNetIdx
| | |
| | +-- ---- String spacevmResourcesNetIdx(1)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- String spacevmResourcesNetLabel(2)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- Integer32 spacevmResourcesNetReceiveRate(3)
| | +-- -R-- Integer32 spacevmResourcesNetTransmitRate(4)
| |
| +--spacevmResourcesCluster(5)
| +-- -RW- Unsigned spacevmResourcesClusterCount(1)
| |
| +--spacevmResourcesClusterTable(2)
| |
| +--spacevmResourcesClusterEntry(1)
| | Index: spacevmResourcesClusterIdx
| |
| +-- ---- String spacevmResourcesClusterIdx(1)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmResourcesClusterUuid(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- Integer32 spacevmResourcesClusterMemCount(3)
| +-- -R-- Integer32 spacevmResourcesClusterMemUsed(4)
| +-- -R-- Integer32 spacevmResourcesClusterMemUsedP(5)
| +-- -R-- Integer32 spacevmResourcesClusterMemFree(6)
| +-- -R-- Integer32 spacevmResourcesClusterCPUUsed(7)
| +-- -R-- Unsigned spacevmResourcesClusterCPUCount(8)
| +-- -R-- Unsigned spacevmResourcesClusterCPUHiLevel(9)
| +-- -R-- Unsigned spacevmResourcesClusterCPUHhLevel(10)
| +-- -R-- Unsigned spacevmResourcesClusterMEMHiLevel(11)
| +-- -R-- Unsigned spacevmResourcesClusterMEMHhLevel(12)
|
+--spacevmEnvObjects(30)
| +--spacevmEnvMIB(1)
| |
| +--spacevmEnvTableObjects(1)
| |
| +-- -RW- Unsigned spacevmEnvIPMICount(1)
| |
| +--spacevmEnvIPMITable(2)
| | |
| | +--spacevmEnvIPMIEntry(1)
| | | Index: spacevmEnvIPMIIdx
| | |
| | +-- ---- String spacevmEnvIPMIIdx(1)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- String spacevmEnvIPMIName(2)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- String spacevmEnvIPMIStatus(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| |
| +-- -RW- Unsigned spacevmEnvHDDCount(3)
| |
| +--spacevmEnvHDDTable(4)
| |
| +--spacevmEnvHDDEntry(1)
| | Index: spacevmEnvHDDIdx
| |
| +-- ---- String spacevmEnvHDDIdx(1)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmEnvHDDName(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmEnvHDDStatus(3)
| Textual Convention: DisplayString
| Size: 0..255
|
+--spacevmVmInfoObjects(40)
| +--spacevmVmInfoMIB(1)
| |
| +--spacevmVmTableObjects(1)
| |
| +-- -RW- Unsigned spacevmVmCount(1)
| |
| +--spacevmVmTable(2)
| | |
| | +--spacevmVmEntry(1)
| | | Index: spacevmVmIdx
| | |
| | +-- ---- String spacevmVmIdx(1)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- String spacevmVmUuid(2)
| | | Textual Convention: DisplayString
| | | Size: 0..255
| | +-- -R-- String spacevmVmStatus(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| |
| +-- -RW- Unsigned spacevmVmAggCount(3)
| |
| +--spacevmVmAggTable(4)
| |
| +--spacevmVmAggEntry(1)
| | Index: spacevmVmAggIdx
| |
| +-- ---- String spacevmVmAggIdx(1)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggUuid(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggName(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggStatus(4)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggCpuCount(5)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggMemCount(6)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggNodeUuid(7)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggNodeName(8)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggNodeIp(9)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggPowerState(10)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmVmAggUptime(11)
| Textual Convention: DisplayString
| Size: 0..255
|
+--spacevmHADRObjects(50)
+--spacevmHADRMIB(1)
|
+--spacevmHADRTableObjects(1)
|
+-- -RW- Unsigned spacevmHAVmCount(1)
|
+--spacevmHAVmTable(2)
| |
| +--spacevmHAVmEntry(1)
| | Index: spacevmHAVmIdx
| |
| +-- ---- String spacevmHAVmIdx(1)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmUuid(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmName(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmStatus(4)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmHaStatus(5)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmNodeUuid(6)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmNodeName(7)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmNodeIp(8)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmMigrated(9)
| Textual Convention: DisplayString
| Size: 0..255
|
+-- -RW- Unsigned spacevmHAVmNodesCount(3)
|
+--spacevmHAVmNodesTable(4)
| |
| +--spacevmHAVmNodesEntry(1)
| | Index: spacevmHAVmIdx, spacevmHAVmNodesIdx
| |
| +-- ---- String spacevmHAVmNodesIdx(1)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmNodesUuid(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmNodesName(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmNodesIp(4)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmNodesStatus(5)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAVmNodesClusterUuid(6)
| Textual Convention: DisplayString
| Size: 0..255
|
+-- -RW- Unsigned spacevmHAClusterCount(5)
|
+--spacevmHAClusterTable(6)
| |
| +--spacevmHAClusterEntry(1)
| | Index: spacevmHAClusterIdx
| |
| +-- ---- String spacevmHAClusterIdx(1)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAClusterUuid(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAClusterName(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spacevmHAClusterHaStatus(4)
| Textual Convention: DisplayString
| Size: 0..255
|
+-- -RW- Unsigned spacevmHAClusterNodesCount(7)
|
+--spacevmHAClusterNodesTable(8)
|
+--spacevmHAClusterNodesEntry(1)
| Index: spacevmHAClusterIdx, spacevmHAClusterNodesIdx
|
+-- ---- String spacevmHAClusterNodesIdx(1)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- String spacevmHAClusterNodesUuid(2)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- String spacevmHAClusterNodesName(3)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- String spacevmHAClusterNodesIp(4)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- String spacevmHAClusterNodesStatus(5)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- String spacevmHAClusterNodesClusterUuid(6)
Textual Convention: DisplayString
Size: 0..255
Необходимо учитывать, что Unsigned преобразуется в Numeric(Unsigned), Integer преобразуется в Numeric(Float).
snmpwalk -v1 -c public 192.168.145.10 1.3.6.1.4.1.51290
Дает предупреждение о том, что типы данных не совпадают, например:
DACOM-SPACEVM-RESOURCES-MIB::spacevmResourcesMemCount.0 = Wrong Type (should be IN
TEGER): STRING: "385620.5703125"
DACOM-SPACEVM-RESOURCES-MIB::spacevmResourcesMemFree.0 = Wrong Type (should be INT
EGER): STRING: "285185.12109375"
DACOM-SPACEVM-RESOURCES-MIB::spacevmResourcesMemUsed.0 = Wrong Type (should be INT
EGER): STRING: "63855.69140625"
Для корректной работы требуется соответствие типов данных OID и snmp-agent.