Как стать автором
Обновить

Комментарии 14

Спасибо, давно не видел дельных статей по zabbix.
Спасибо за статью. Ещё одним из очень полезных применений LLD под Windows является поиск и отслеживание состояния сервисов. Zabbix находит все автоматически запускаемые сервисы и при возникновении проблем оповещает администраторов.
Да, я даже думал о том, чтобы это ввести у себя, но меня смутило, что во время запуска агента не все службы будут доступны и он не будет понимать какое из состояний является ОК. Хотя это тоже можно решить. Мне кажется, лучше смотреть в сторону появления в логах события о неответе службы (она остается запущенной) и о внезапном завершении службы. А просто статус старт-стоп всех служб ИМХО не будет приносить столько пользы, сколько на это рассчитываешь.
По поводу всех служб я погорячился. Безусловно, полезнее будет отслеживать состояние только наиболее важных служб. Для этого создаём общий список служб по которому и фильтруем.
ну это было и раньше :)
Шикарный пост! Спасибо — очень актуальная штука, например, в условиях большого числа виртуальных машин на сервере — до появления этой фичи сделать их автоматическое их добавление было нельзя.
Если будут вопросы по реализации — спрашивайте :)
Статья действительно хорошая, но картинка для завлечения не оправдала ожидания...(

Я надеялся что наконец нашел способ чтобы графики формировались автоматически…
Ну да, это косяк-с. Думаю, при большом свободом времени и гигантском интересе можно это сделать напрямую в БД :)
Но для меня главное, что бы значения собирались. Это те значения, которые главное, что бы они были, и в случае разбирательств они легко находятся, агреггируются в любые нужные графики.
скрипт из примера не подешел для заббикса 2.2, писал что JSON ответ не валидный, jsonlint.com тоже самое говорил

ниже обновленный скрипт который генерирует без пробелов и лишней запятой в конце
$items = Get-WmiObject Win32_PerfFormattedData_PerfOS_Processor | select name  |where-object {$_.name -ne '_Total'}

write-host -NoNewline "{"
write-host -NoNewline "`"data`":["

$line =  "{`"{#PROCNUM}`":`"" + $items[0].Name + "`"}"
write-host -NoNewline $line

for($c = 1; $c -lt $items.Count; ++$c) {
 $line =  ",{`"{#PROCNUM}`":`"" + $items[$c].Name + "`"}"
 write-host -NoNewline $line
}

write-host -NoNewline "]"
write-host -NoNewline "}"

Спасибо за комментарий. Мой скрипт на версии 2.0 работал. На 2.2 еще не пробовал.
А вам спасибо за отличную статью.
Для будущих поколений оставлю это здесь 8)
powershell скрипт для LLD дисков чтобы в JSON ответе не было ни пробелов, ни переносов
zabbix v2.2

$items = Get-WmiObject Win32_PerfRawData_PerfDisk_PhysicalDisk | select name  |where-object {$_.name -ne '_Total'}

write-host -NoNewline "{"
write-host -NoNewline "`"data`":["

if($items.Count -gt 0) {
    $line =  "{`"{#DISKNUM}`":`"" + $items[0].Name + "`"}"
    write-host -NoNewline $line

    for($c = 1; $c -lt $items.Count; ++$c) {
     $line =  ",{`"{#DISKNUM}`":`"" + $items[$c].Name + "`"}"
     write-host -NoNewline $line
    }
}
write-host -NoNewline "]"
write-host -NoNewline "}"
я еще немного скрипт причесал, т.к. если только одно устройство, то в результате получаем не массив, а один объект у которого конечно не будет работать индексация

$items = Get-WmiObject Win32_PerfRawData_PerfDisk_PhysicalDisk | select name  |where-object {$_.name -ne '_Total'}

write-host -NoNewline "{"
write-host -NoNewline "`"data`":["

if($items -ne $null -and $items -is [system.array] -eq $false) {
    $line =  "{`"{#DISKNUM}`":`"" + $items.Name + "`"}"
    write-host -NoNewline $line
} else {
    $line =  "{`"{#DISKNUM}`":`"" + $items[0].Name + "`"}"
    write-host -NoNewline $line
    if($items.Count -gt 1) {
        for($c = 1; $c -lt $items.Count; ++$c) {
         $line =  ",{`"{#DISKNUM}`":`"" + $items[$c].Name + "`"}"
         write-host -NoNewline $line
        }
    }
}
write-host -NoNewline "]"
write-host -NoNewline "}"
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории