У меня уже развёрнута связка influxdb + grafana и тут в сетке появился хост с блядской виндой... Под линуксами всякими снимать инфу о состоянии жёстких дисков оказалось прилично легко, но с виндой пришлось покрутиться... Попытка прикрутить smartmontools в конфиг телеграфа в плагин [[inputs.smart]] провалилась успешно высыпанием кучей ошибок и прочего... Придётся ставить костыли и сегодняшний костыль будет писан на powershell (дабы не усложнять ничего в окружении и т.п.).
1. Скачиваем и устанавливаем виндовую версию smartmontools отсюда (все настройки при установке - по умолчанию):
https://builds.smartmontools.org/
2. После того, как smartmontools установлен фигачим скрипт powershell по пути C:\Program Files\telegraf\smartctl.ps1
Содержимое скрипта:
$Getdrives = (cmd.exe /c "c:\Program Files\smartmontools\bin\smartctl.exe" --scan -j) | Out-String | ConvertFrom-Json |select -expand devices|select name,type
foreach ($drive in $Getdrives) {
$dtype = $drive|select -expand type
$drivename = $drive|select -expand name
$driveinfo = (cmd.exe /c "c:\Program Files\smartmontools\bin\smartctl.exe" -a -j -d $dtype $drivename) | Out-String | ConvertFrom-Json
$smart_status = $driveinfo | select -expand smart_status |select -expand passed
$temperature = $driveinfo | select -expand temperature |select -expand current
$drivename = $drivename.replace(',','-')
$temperature = [string]$temperature
if ($temperature -ne "0") {
Write-Output "smartctl,device=$drivename temperature=$temperature"
}
if ($smart_status) {
Write-Output "smartctl,device=$drivename health=1"
} else {
Write-Output "smartctl,device=$drivename health=0"
}
}
Вкратце что делается выше... Забираем перечень дисков и их тип, забираем текущую инфу по каждому винту (состояние здоровья и температуры). У меня оказался один диск, подключенный по usb и по нему инфа о температуре не отдавалась, так что я решил что если нет информации о температуре - не отдавать инфу о температуре по данному жёсткому диску. Что касается здоровья, то шлём 1 если всё в порядке и 0 - если жопа...
3. Правим конфиг телеграфа (telegraf.conf) и дополняем его следующим блоком:
# Get smartctl status of hdd's
[[inputs.exec]]
## Override default gathering interval
interval = "1m"
## Commands array
commands = [
'powershell "C:/\"Program Files\"/telegraf/smartctl.ps1"'
]
## Timeout for each command to complete.
timeout = "20s"
## data format options:
## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
data_format = "influx"
data_type = "string"
Перезапускаем службу телеграфа...
4. Идём в графану и добавляем туда графики... Для начала на состояние здоровья...
И таким образом для остальных дисков (/dev/sdb, /dev/sde...)
Ещё я прикручу алерты (если какой то диск поплохеет - чтобы мне пришло уведомление)...
В итоге получаю вот такую красоту:
Добавляем про температуру...
И так остальные диски... В Unit выставляем что данные идут в градусах цельсия.
В итоге получаю вот такую красоту:
Комментариев нет:
Отправить комментарий