Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools
- Артём Мамзиков
- Admin
- Сообщения: 866
- Стаж: 5 лет 9 месяцев
- Откуда: Вологодская область
- Поблагодарили: 41 раз
- Контактная информация:
Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools
demins, На 5 версии не работал могу предположить что в шаблоне в автообнаружении прописываешь smart.attribute.discovery, smart.disk.discovery с помощью их будут создаваться Элементы данных. тут команда выполнения я так понимаю smart.disk.get.
Надо знать что конкретно отдает каждая команда в каком виде и под эти данные делать шаблон.
Надо знать что конкретно отдает каждая команда в каком виде и под эти данные делать шаблон.
количество слов: 11
- Казак Семён
- Гость
- Сообщения: 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"
Тригер "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 значение
Более подробно распишу про данный триггер!
Командой Диск {#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. или все же нужно с конфигом колдовать.
Сервер выдает следующую ошибку
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
-
- Гость
- Сообщения: 3
- Стаж: 4 года 4 месяца
Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools
Есть одна проблема в данном способе: если у агентов порт не стандартный, то не сработает скрипт (и в нём нет упоминания про порт).
В общем я немного отредактировал шаблон и скрипт, но столкунлся с другой проблемой: Timeout while executing a shell script при обнаружении.
Менял таймаут на 30 в агенте - всё равно тоже самое. может кто сталкивался с подобным?
В общем я немного отредактировал шаблон и скрипт, но столкунлся с другой проблемой: 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.
Серверный вариант
Необходимые компоненты:
smartctl.sh -> /usr/lib/zabbix/externalscripts/
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()}>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()}>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"]
Напрямую с сервера команды нормально отрабатывают ? или так же таймаут.
Пример Команда для Диска 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
-
- Гость
- Сообщения: 3
- Стаж: 4 года 4 месяца
Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools
В том то и дело, что команды и с заббикса отрабатывают, и даже обнаружение работает, когда тестирую правило(т.е.парсит имена дисков и выдает в нужном формате), правда у меня закралась одна мысль:
Если в стандартном шаблоне вывод команды обнаружения с переносом строк, то в моем случае вывод в одну строку. Возможно в этом дело. К сожалению не могу сейчас более наглядно показать о чем речь тк
Если в стандартном шаблоне вывод команды обнаружения с переносом строк, то в моем случае вывод в одну строку. Возможно в этом дело. К сожалению не могу сейчас более наглядно показать о чем речь тк
количество слов: 0
-
- Гость
- Сообщения: 3
- Стаж: 4 года 4 месяца
Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools
Т.к. не на работе.
количество слов: 0