Пришла пора брать под контроль рабочие станции обычных пользователей. Поскольку компы работают уже не первый год хотелось бы быть в курсе здоровья жёсткого диска. Это позволит заранее организовать замену при большом количестве сбойных секторов. Представим, что мы находимся в домене, не важно с каким количеством машин. Это позволит нам автоматизировать процесс установки Zabbix-агента на рабочие станции.
Приступим. В первую очередь нам нужно подготовить конфигурацию. Для этого в файле zabbix_agentd.win.conf достаточно поместить содержимое:
LogFile=c:\windows\zabbix32\zabbix_agentd.log
#
LogFileSize=5
#
EnableRemoteCommands=1
#
LogRemoteCommands=1
#
Server=192.168.50.21
#
ListenPort=10050
#
ServerActive=192.168.50.21
#
HostnameItem=system.hostname[host]
# SMART HDD
# RAW_VALUE
UserParameter=smart.raw.[*], for /F "tokens=10" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
# VALUE
UserParameter=smart.value.[*], for /F "tokens=4" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2^| find "$3"') do @echo %a
# WORST
UserParameter=smart.worst.[*], for /F "tokens=5" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
# THRESOLD
UserParameter=smart.thresh.[*], for /F "tokens=6" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
# WHEN_FAILED
UserParameter=smart.when.failed.[*], for /F "tokens=9" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
# HEALTH Status
UserParameter=smart.health.[*], for /F "tokens=6" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -H $1 -d $2 ^| find "test"') do @echo %a
Для мониторинга "жизненно важных" значений SMART HDD, достаточно использовать только строки с RAW_VALUE и VALUE. Остальные значения SMART может быть пригодятся, их можно оставить.
Или если на команду
C:\Windows\zabbix32\smart\smartctl.exe --scan
диски определяются как
то в конфигу Zabbix агента нужно добавить строку
Ключ в элементах данных будет выглядеть, например, так:
smart.csmi.[/dev/csmi1,0,Airflow_Temperature_Cel]
Об остальных параметрах Zabbix-Агента рассказывать нет смысла, всё должно быть предельно понятно.
Пришло время распространить Zabbix-агент и smartmontools на рабочие станции. Весь этот пакет файлов я запихал в один архив. Кому нравится устанавливать отдельно, милости просим сюда и сюда. Директорию zabbix32 из архива мне показалось правильным запихать в директорию Windows, что бы особо продвинутые пользователи её не удалили. Хотя, с нашим скриптом который будет распространять директорию и запускать службу нам и это не страшно.
Создаём групповую политику для компьютера, которая будет запускать скрипт на рабочих станциях при старте системы. Содержимое скрипта:
@echo off
sc query "Zabbix Agent" | find /i "RUNNING"
if not ERRORLEVEL 1 (
echo service is running
) else (
xcopy /y /s /d \\damain.local\SysVol\domain.local\Policies\{368FA9F7-CE3F-443D-B74F-6762FEAC663C}\Machine\Applications\zabbix32 c:\windows\zabbix32\ && "C:\windows\zabbix32\zabbix_agentd.exe" --config "C:\windows\zabbix32\zabbix_agentd.win.conf" --install && "C:\windows\zabbix32\zabbix_agentd.exe" --config "C:\windows\zabbix32\zabbix_agentd.win.conf" --start
)
Этот скрипт, при запуске на рабочей стануции, проверяет запущена ли служба с именем Zabbix Agent. Если да, то "что-то" незаметно сообщает. Если нет, то запускает копирование директории zabbix32 из директории с GPO в папку Windows на рабочей станции, устанавливает и запускает службу. Уникальный код политики не забываем поменять в пути скрипта.
Если служба установлена, порт TCP 10050 открыт, можно проверить работоспособность схемы. На Zabbix сервере должен быть установлен пакет zabbix-get:
apt-get install zabbix-get
и проверяем работоспособность, например:
zabbix_get -s 192.168.50.233 -k smart.raw.[/dev/sda,ata,Temperature_Celsius]
Если в ответ получили значение, то всё отлично. Можно приступать к созданию графиков. Их можно создать по аналогии с зарисовкой по настройке мониторинга SMART, но для компов на Linux.
P.S: Самый верный способ это LLD, т.е на станции формировать JSON с жесткими дисками и отсылать на zabbix сервер