Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools

Мониторинг Железа
Датчики температур
Кулера
Диски
Напряжение
и т.д.
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools

Сообщение Артём Мамзиков »

demins, На 5 версии не работал могу предположить что в шаблоне в автообнаружении прописываешь smart.attribute.discovery, smart.disk.discovery с помощью их будут создаваться Элементы данных. тут команда выполнения я так понимаю smart.disk.get.
Надо знать что конкретно отдает каждая команда в каком виде и под эти данные делать шаблон.
количество слов: 11
demins
Новичок
Сообщения: 21
Стаж: 4 года 9 месяцев

Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools

Сообщение demins »

Спасибо
количество слов: 0
Аватара пользователя
Казак Семён
Гость
Сообщения: 3
Стаж: 3 года 8 месяцев
Контактная информация:

Скрипт + Шаблон для Windows LLD Open Hardware Monitor

Сообщение Казак Семён »

Дорого дня!
Тригер "SMART диска {#DISKID} не пройден на {HOST.NAME} smartctl.smart.status.[{#DISKID}].regexp(^PASSED $)}=1" не рабочий и не правильный
хотя бы так " {Hardware - HDD:smartctl.smart.status.[{#DISKID}].regexp(^PASSED$,#1)}=0"
количество слов: 21
Аватара пользователя
Казак Семён
Гость
Сообщения: 3
Стаж: 3 года 8 месяцев
Контактная информация:

Скрипт + Шаблон для Windows LLD Open Hardware Monitor

Сообщение Казак Семён »

так даже лучше будет {Hardware - HDD:smartctl.smart.status.[{#DISKID}].regexp(^FAILED,#1)}=1
количество слов: 10
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools

Сообщение Артём Мамзиков »

Казак Семён, Добрый вечер! Да спасибо , на сколько помню на заббикс 3.4 он отрабатывал но что то с ним делал, но посмотрел оригинал там такой же триггер.

Более подробно распишу про данный триггер!

Командой Диск {#DISKID} - Полная информация SMARTCTL текст ключ smartctl.sh[{HOST.CONN},{#DISKID},info]
далее уже из этой инфы ищем строку
ART overall-health self-assessment test result: (.*)
и выдаем все что после нее. Вот тут вроде был пробел в некоторых моментах...

PASSED - означает что все ок (бывает в конце с пробелом бывает без ^PASSED$ или ^PASSED $ , где поиск ^ -начало строки, а $ -конец строки)
и
FAILED! - то что SMART не пройден есть ошибки

regexp (<шаблон>,<сек|#кол-во>)
iregexp (<шаблон>,<сек|#кол-во>) Поддерживаемые типы значений: str, log, text
regexp - совпадение с учетом регистра с регулярным выражением, заданным в шаблон
iregexp - совпадение без учета регистра с регулярным выражением, заданным в шаблон

далее регуляркой .iregexp(^PASSED $)}=1

Результат 1 найдено TRUE ПРАВДА - совпадение с регулярным выражением
Результат 0 в противном случае FALSE ЛОЖЬ - отсутствие совпадения с регулярным выражением

Было что то помню связанное с пробелом. где то он был, а где то нет.


Правильнее наверное сделать так
{Hardware - HDD:smartctl.smart.status.[{#DISKID}].iregexp(^PASSED*$)}=0
{Hardware - HDD:smartctl.smart.status.[{#DISKID}].iregexp(PASSED*)}=0
{Hardware - HDD:smartctl.smart.status.[{#DISKID}].iregexp(PASSED,#1)}=0
или так тоже можно
{Hardware - HDD:smartctl.smart.status.[{#DISKID}].regexp(^FAILED,#1)}=1

Я оставил так, сразу оба варианта через параметр или любой из них может вызвать триггер. (зачем сразу 2 на случай если там есть какой то 3 статус кроме PASSED и FAILED а так же что у нас вообще есть данный параметр для мониторинга , если passed нет сработает триггер)
{Hardware - HDD:smartctl.smart.status.[{#DISKID}].iregexp(PASSED*)}=0 or
{Hardware - HDD:smartctl.smart.status.[{#DISKID}].iregexp(FAILED*)}=1


где
#кол-во #1 - Функция начинает вычисляться с момента получения первого значения (если не пользуется сдвиг_времени параметр).
#3 - полученное 3 значение
количество слов: 101
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools

Сообщение Артём Мамзиков »

Из личного сообщения
Сервер выдает следующую ошибку
discovery rule "komp770:smartctl.sh[{HOST.CONN},discovery]" became not supported: Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: '/usr/lib/zabbix/externalscripts/smartctl.sh: 1: /usr/lib/zabbix/externalscri: not foundl.sh: #!/bin/bash

/usr/lib/zabbix/externalscripts# ./smartctl.sh 10.7.5.69 discovery
Выдал мне следующие
: No such file or directoryin/bash
./smartctl.sh: line 4: $'\r': command not found
./smartctl.sh: line 7: $'\r': command not found
./smartctl.sh: line 12: $'\r': command not found
./smartctl.sh: line 13: syntax error in conditional expression
'/smartctl.sh: line 13: syntax error near `]]
'/smartctl.sh: line 13: `if [[ $2 = "discovery" ]]

Я отредактировал файлы .sh. Возможно через WinSCP не правильно скопировалось. Там были лишние символы.
Тем не менее это не помогло, выдает ошибки по прежнему
/usr/lib/zabbix/externalscripts/smartctl.sh: 13: /usr/lib/zabbix/externalscripts/smartctl.sh: [[: not found
/usr/lib/zabbix/externalscripts/smartctl.sh: 39: /usr/lib/zabbix/externalscripts/smartctl.sh: [[: not found
/usr/lib/zabbix/externalscripts/smartctl.sh: 47: /usr/lib/zabbix/externalscripts/smartctl.sh: [[: not found
Может я что-то ещё не так поставил?

Ответ:
Возможно другой путь #!/bin/bash находится в другом месте bash мало вероятно
можно попробовать вместо bash прописать sh

Возможно неправильный формат скрипта не верно скопировался или создался
Проверь в notepad++ кодировку скрипта должна быть Unix(LF) UTF-8
формат скриптов
формат скриптов
Из личного сообщения
все было гораздо проще.
У меня и до этого выдавало ошибку в обнаружении, что проблема с zabbix get на Дебиан, теперь я его установил. Всё заработало.
Он начал снимать данные


Вопрос
есть ошибки, например набираю когда команду

/usr/lib/zabbix/externalscripts/smartctl.sh 10.7.5.69 discovery
zabbix_get [42818]: Check access restrictions in Zabbix agent configuration
{"data":[
]}
Это речь про агента на забиксе?
В конфиге забикс агента у меня указано AllowKey=system.run[*]
https://www.zabbix.com/documentation/cu ... ict_checks


По части данных выдает "не поддерживается"
Preprocessing failed for: smartctl 7.0 2018-12-30 r4883 [x86_64-w64-mingw32-w10-b18363] (sf-7.0-1)..Copyright (C) 2002-18, ...
1. Failed: cannot perform regular expression "234 .* - (.*)" match for value of type "string": pattern does not match

таких данных - "Не поддерживается", четыре страницы. Я на своем ПК тестирую, в нем 1ssd и 2hdd. На hdd установлены битлокеры, но сейчас ключ введен.

Ответ
Посмотри какие данные приходят с элементов
Диск {#DISKID} - Полная информация SMARTCTL текст
Диск {#DISKID} - Поддерживаемые Атрибуты SMART текст

Далее все остальные элементы ссылаются на эти данные они зависимы от этих 2х элементов
каждый элемент пред обработкой регулярным выражение ищет нужную строку и забирает с ее данные

Некоторые элементы могут не работать это нормально, так как количество кодов смарт на разных дисках разное.

что касаемо 234
Диск {#DISKID} - SMART - Количество неисправимых ошибок ECC [234]
у него регулярка такая 234 .* - (.*)
найти строку 234 любое значение до - и дальше выводим результат для элемента данных у тебя там что то выбирает не числовое может надо поправить регулярку или смотреть что с этой строкой.

Для SSD коды и их значения отличатся немного, по хорошему надо делать в скрипте распознавание обычных дисков hdd от ssd по какому то критерию, и в шаблоне делать 2 правила обнаружения с прототипами для ssd и hdd.


/usr/lib/zabbix/externalscripts/smartctl.sh 10.7.5.69 discovery
zabbix_get [42818]: Check access restrictions in Zabbix agent configuration
{"data":[
]}
Это речь про агента на забиксе?
В конфиге забикс агента у меня указано AllowKey=system.run[*]
https://www.zabbix.com/documentation/cu ... ict_checks

тут да что то с правами заббикс агента. попробуй запусти службу заббикс агента от того же пользователя от которого проверял команды в cmd. или все же нужно с конфигом колдовать.
количество слов: 298
slammer71rus
Гость
Сообщения: 3
Стаж: 4 года 4 месяца

Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools

Сообщение slammer71rus »

Есть одна проблема в данном способе: если у агентов порт не стандартный, то не сработает скрипт (и в нём нет упоминания про порт).
В общем я немного отредактировал шаблон и скрипт, но столкунлся с другой проблемой: Timeout while executing a shell script при обнаружении.
Менял таймаут на 30 в агенте - всё равно тоже самое. может кто сталкивался с подобным?
Спойлер (скрытый свернутый текст)
Показать
Hardware - HDD.xml

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
    <version>3.4</version>
    <date>2017-12-27T05:26:57Z</date>
    <groups>
        <group>
            <name>Templates</name>
        </group>
    </groups>
    <templates>
        <template>
            <template>Hardware - HDD</template>
            <name>Hardware - HDD</name>
            <description>Шаблон мониторинга HDD c LLD.&#13;
Серверный вариант&#13;
&#13;
Необходимые компоненты:&#13;
smartctl.sh -&gt; /usr/lib/zabbix/externalscripts/&#13;
smartmontools</description>
            <groups>
                <group>
                    <name>Templates</name>
                </group>
            </groups>
            <applications>
                <application>
                    <name>Жесткие диски</name>
                </application>
            </applications>
            <items/>
            <discovery_rules>
                <discovery_rule>
                    <name>Обнаружение дисков</name>
                    <type>10</type>
                    <snmp_community/>
                    <snmp_oid/>
                    <key>smartctl.sh[{HOST.IP},{HOST.PORT},discovery]</key>
                    <delay>1h</delay>
                    <status>0</status>
                    <allowed_hosts/>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <params/>
                    <ipmi_sensor/>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <filter>
                        <evaltype>0</evaltype>
                        <formula/>
                        <conditions/>
                    </filter>
                    <lifetime>1d</lifetime>
                    <description>Обнаружение подключенных дисков.</description>
                    <item_prototypes>
                        <item_prototype>
                            <name>Диск {#DISKID} - Номинальная емкость</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.capacity.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>1</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>User Capacity: .*\[(.*)\]
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},info]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - Семейство</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.family.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>1</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>Model Family: (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},info]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - Версия FW</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.fw.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>1</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>Firmware Version: (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},info]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - Модель</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.model.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>1</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>Device Model: (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},info]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - Серийный номер</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.serial.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>1</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>Serial Number: (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},info]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMARTCTL Attr</name>
                            <type>10</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            <delay>10m</delay>
                            <history>1h</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>4</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing/>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype/>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMARTCTL Info</name>
                            <type>10</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},info]</key>
                            <delay>10m</delay>
                            <history>1h</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>4</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing/>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype/>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - Spin-Up Time [3]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.3.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>3 Spin_Up_Time.* - (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - Reallocated Sector Count [5]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.5.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>5 Reallocated_Sector.* - (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - Seek Error Rate [7]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.7.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>7 Seek_Error_Rate.* - (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - Power-on Time Count [9]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.9.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>9 Power_On_Hours.* - (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - Spin-Up Retry Count [10]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.10.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>10 Spin_Retry_Count.* - (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - Temperature [190-194]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.190-194.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units>°C</units>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>(190 Airflow_Temperature_Cel|194 Temperature_Celsius).* - *([0-9]+).*
\2</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - Reallocated Event Count [196]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.196.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>196 Reallocated_Event_Count.* - (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - Current Pending Sector Count [197]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.197.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>197 Current_Pending_Sector.* - (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - Uncorrectable Sector Count [198]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.198.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>198 Offline_Uncorrectable.* - (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - SMART - UltraDMA CRC Error Count [199]</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.199.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>365d</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>199 UDMA_CRC_Error_Count.* - (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},attr]</key>
                            </master_item_prototype>
                        </item_prototype>
                        <item_prototype>
                            <name>Диск {#DISKID} - Статус SMART</name>
                            <type>18</type>
                            <snmp_community/>
                            <snmp_oid/>
                            <key>smartctl.smart.status.[{#DISKID}]</key>
                            <delay>0</delay>
                            <history>90d</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>1</value_type>
                            <allowed_hosts/>
                            <units/>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <params/>
                            <ipmi_sensor/>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Жесткие диски</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <preprocessing>
                                <step>
                                    <type>5</type>
                                    <params>SMART overall-health self-assessment test result: (.*)
\1</params>
                                </step>
                            </preprocessing>
                            <jmx_endpoint/>
                            <application_prototypes/>
                            <master_item_prototype>
                                <key>smartctl.sh[{HOST.IP},{HOST.PORT},{#DISKID},info]</key>
                            </master_item_prototype>
                        </item_prototype>
                    </item_prototypes>
                    <trigger_prototypes>
                        <trigger_prototype>
                            <expression>{Hardware - HDD:smartctl.smart.status.[{#DISKID}].regexp(^PASSED$)}=1</expression>
                            <recovery_mode>0</recovery_mode>
                            <recovery_expression/>
                            <name>SMART диска {#DISKID} не пройден на {HOST.NAME}</name>
                            <correlation_mode>0</correlation_mode>
                            <correlation_tag/>
                            <url/>
                            <status>0</status>
                            <priority>4</priority>
                            <description/>
                            <type>0</type>
                            <manual_close>0</manual_close>
                            <dependencies/>
                            <tags/>
                        </trigger_prototype>
                        <trigger_prototype>
                            <expression>{Hardware - HDD:smartctl.smart.190-194.[{#DISKID}].last()}&gt;50</expression>
                            <recovery_mode>0</recovery_mode>
                            <recovery_expression/>
                            <name>Высокая температура диска {#DISKID} на {HOST.NAME}</name>
                            <correlation_mode>0</correlation_mode>
                            <correlation_tag/>
                            <url/>
                            <status>0</status>
                            <priority>3</priority>
                            <description/>
                            <type>0</type>
                            <manual_close>0</manual_close>
                            <dependencies/>
                            <tags/>
                        </trigger_prototype>
                        <trigger_prototype>
                            <expression>{Hardware - HDD:smartctl.smart.190-194.[{#DISKID}].last()}&gt;60</expression>
                            <recovery_mode>0</recovery_mode>
                            <recovery_expression/>
                            <name>Опасная температура диска {#DISKID} на {HOST.NAME}</name>
                            <correlation_mode>0</correlation_mode>
                            <correlation_tag/>
                            <url/>
                            <status>0</status>
                            <priority>4</priority>
                            <description/>
                            <type>0</type>
                            <manual_close>0</manual_close>
                            <dependencies/>
                            <tags/>
                        </trigger_prototype>
                    </trigger_prototypes>
                    <graph_prototypes/>
                    <host_prototypes/>
                    <jmx_endpoint/>
                </discovery_rule>
            </discovery_rules>
            <httptests/>
            <macros/>
            <templates/>
            <screens/>
        </template>
    </templates>
</zabbix_export>
Спойлер (скрытый свернутый текст)
Показать

Код: Выделить всё

#!/bin/bash
# 2017/12/07 AcidVenom v1.0
# Скрипт мониторинга HDD с LLD для Zabbix (серверный вариант)

# Автообнаружение дисков
# Ключ: discovery

IFS=$'\n'
JSON="{\"data\":["
SEP=""

if [[ $3 = "discovery" ]]
then
get=`zabbix_get -s $1 -p $2 -k system.run["smartctl --scan-open"] | grep "/dev/sd"`
for hdd in $get
do
DISKID=`echo $hdd | grep "/dev/sd" | sed "s/\/dev\///" | cut -c 1-3`
        if [[ `zabbix_get -s $1 -p $2 -k system.run["smartctl -i /dev/$DISKID"] | grep "SMART support is: Enabled"` != "" ]]
        then
        JSON=$JSON"$SEP{\"{#DISKID}\":\"$DISKID\"}"
        SEP=", "
        fi
done
JSON=$JSON"]}"
echo $JSON

# Получение информации о дисках
# Ключи: info и attr

else
        if [[ $4 = "info" ]]
        then
        get=`zabbix_get -s $1 -p $2 -k system.run["smartctl -x /dev/$3"]`
        for out in $get
        do
        echo $out
        done
        elif [[ $4 = "attr" ]]
        then
        get=`zabbix_get -s $1 -p $2 -k system.run["smartctl -A /dev/$3"]`
        for out in $get
        do
        echo $out
        done
        fi
fi
количество слов: 2690
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools

Сообщение Артём Мамзиков »

slammer71rus, Порты добавлялись в некоторых других шаблонах тут про порты никто не спрашивал, так же тут есть нюанс hdd и ssd по идее надо делать разбивку по обнаружению так как в ssd параметры некоторые отличаются смарта.

Напрямую с сервера команды нормально отрабатывают ? или так же таймаут.
Пример Команда для Диска SDA пример
zabbix_get -s 192.168.561.9 -p 10050-k system.run["smartctl -i /dev/sda"]
Проверяем что включен smart на данном диске
zabbix_get -s 192.168.561.9 -p 10050 -k system.run["smartctl -i /dev/sda"] | grep "SMART support is: Enabled"
SMART support is: Enabled
Информация
zabbix_get -s $1 -p 10050 -k system.run["smartctl -x /dev/sda"]
Атрибуты
zabbix_get -s $1 -p 10050 -k system.run["smartctl -A /dev/sda"]
количество слов: 73
slammer71rus
Гость
Сообщения: 3
Стаж: 4 года 4 месяца

Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools

Сообщение slammer71rus »

В том то и дело, что команды и с заббикса отрабатывают, и даже обнаружение работает, когда тестирую правило(т.е.парсит имена дисков и выдает в нужном формате), правда у меня закралась одна мысль:
Если в стандартном шаблоне вывод команды обнаружения с переносом строк, то в моем случае вывод в одну строку. Возможно в этом дело. К сожалению не могу сейчас более наглядно показать о чем речь тк
количество слов: 0
slammer71rus
Гость
Сообщения: 3
Стаж: 4 года 4 месяца

Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools

Сообщение slammer71rus »

Т.к. не на работе.
количество слов: 0
Ответить Вложения 11 Пред. темаСлед. тема

Вернуться в «Аппаратное обеспечение Общее для всех систем»