Содержание
- Присматриваем за окнами. Windows + Zabbix
- Введение
- Практика «Агента»
- Практика SNMP
- Заключение
- Мониторинг производительности дисковой подсистемы при помощи zabbix и block stat
- Небольшое отступление
- Мониторинг дисков в zabbix
- Утилизация дисковой подсистемы
- Время обработки запроса
- Пропускная способность
- Количество операций ввода-вывода в секунду
- Заключение
- Zabbix + Windows
- Windows
- Available solutions
- Windows CPU by Zabbix agent
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows memory by Zabbix agent
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows filesystems by Zabbix agent
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows physical disks by Zabbix agent
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows generic by Zabbix agent
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows network by Zabbix agent
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows services by Zabbix agent
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows by Zabbix agent
- Overview
- Setup
- Zabbix configuration
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows CPU by Zabbix agent active
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows memory by Zabbix agent active
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows filesystems by Zabbix agent active
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows physical disks by Zabbix agent active
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows generic by Zabbix agent active
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows network by Zabbix agent active
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows services by Zabbix agent active
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows by Zabbix agent active
- Overview
- Setup
- Zabbix configuration
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Windows SNMP
- Overview
- Setup
- Zabbix configuration
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- Known Issues
Присматриваем за окнами. Windows + Zabbix
Введение
Практика «Агента»
Если у Вас установлен Zabbix агент, то общаться мы будем с ОС через него.
При просмотра шаблона Template OS Windows обращаем внимание на элемент данных:
Average disk write queue length perf_counter[234(_Total)1404].
Что же означают эти цифры 234(_Total)1404. ?
В ОС Windows эти цифры обозначают внутренние идентификаторы счетчиков производительности. Но если у Вас установленна база Zabbix с кодировкой UTF8, то ничего не мешает нам использовать русские названия в счетчиках
Получаем счетчики следующим образом:
typeperf -q
А если у нас несколько жестких дисков (интерфейсов и т.п.):
typeperf -qx
Слишком много информации? Фильтруем:
typeperf «Физический диск(_Total)»
Другой вариант получить счетчики:
lodctr /s:perfcount.txt
Открыв файл мы увидем идентификаторы и их название в начале на английском, а затем на русском языке.
Практика SNMP
Но что делать, когда нельзя (или нет желания) установить агент?
Для этого, мы будем читать счетчики через SNMP:
snmpwalk -Of -c public -v 2c 192.168.0.1
Если выполнять под ОС Windows, то результат будет вида:
.iso.3.6.1.2.1.1.1.0 = STRING: «Hardware: Intel64 Family 6 Model 44 Stepping 2 AT/AT COMPATIBLE — Software: Windows Version 6.1 (Build 7601 Multiprocessor Free)»
Если выполнять под ОС Linux, то результат будет вида:
.iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0 = STRING: Hardware: Intel64 Family 6 Model 44 Stepping 2 AT/AT COMPATIBLE — Software: Windows Version 6.1 (Build 7601 Multiprocessor Free)
(Также можно поискать соответствие цифр с названиями на http://support.ipmonitor.com/snmp_center.aspx)
Linux вариант более информативный.
Заключение
Осталось подключить необходмые счетки и можно будет следить за производительностью системы.
Мониторинг производительности дисковой подсистемы при помощи zabbix и block stat
Вряд ли кто-то будет спорить, что наблюдение за производительностью дисковой подсистемы — чуть ли не важнейшая задача для всех высоконагруженных систем хранения и баз данных. Я изначально столкнулся с этим давным-давно, еще когда приходилось наблюдать за PostgreSQL. В последнее время вернулся к этому вопросу в связи с необходимостью тестирования различных хранилищ.
Сегодня хочу поделиться с сообществом своим текущим опытом на реальном примере zabbix и его связке с block stat.
Небольшое отступление
Я являюсь архитектором баз данных и систем хранения очень высокой производительности и больших объемов. Поэтому часто сталкиваюсь с задачами оценки, как те или иные параметры настройки системы влияют на работу СХД, какие железные конфигурации СХД лучше.
Да есть куча утилит, которая позволит протестировать диски, например тот же fio. Но ничто не сравнится с тестированием реальной нагрузкой.
Однако прежде чем подавать реальную и настоящую нагрузку, неплохо бы сначала протестировать на синтетике. А наблюдать за синтетикой лучше теми же средствами, что и за боевой системой, просто потому, что даже если ваши метрики не совсем верны методологически – они будут хотя бы те же самые и по ним можно будет делать выводы лучше/хуже.
Когда то давным-давно для этих целей использовал iostat, лютый парсер к нему и gnuplot, и даже написал статейку habr.com/post/165855. Скажу я вам – это жутко неудобно.
Куда как удобнее натравить на систему zabbix и мониторить. А к zabbix можно прикрутить модную Grafana и мониторить красиво. Сразу скажу – выбор zabbix скорее исторический: «потому что он уже был».
Мониторинг дисков в zabbix
Справедливости ради скажу, что в zabbix уже есть встроенные ключи vfs.dev.*, но увы очень мало: скорость чтения и записи, объем.
А что нужно нам?
Практика показывает что ключевые метрики по которым можно оценивать дисковую подсистему это:
- Количество операций в секунду (ops)
- Пропускная способность (throughput)
- Время обработки запроса (latency или правильней svctime)
- Утилизация дисковой подсистемы (utilization)
Так как эти метрики очень зависят друг от друга, то не зная все нельзя сделать правильные выводы.
Все эти метрики есть в iostat. Но как их положить в zabbix?
Легкое гугление приводит нас к различным парсерам iostat, в том числе и здесь.
Но мне по душе другой вариант, а именно парсинг вывода /sys/class/block/*/stat
- это первоисточник данных — iostat так же использует эти данные
- для разбора показателей можно ограничиться только однострочником в UserParameter без дополнительных скриптов.
Но есть и недостатки:
- Некоторые параметры необходимо вычислять делением дельты одного на дельту другого, причем не простой, а временной (скорости). В zabbix это сделать можно, но это будут не одновременные запросы, как если бы это делал сложный скрипт, а отношение последних значений, что в принципе не совсем верно, но в нашем случае довольно точно.
Итак, кроме самого zabbix и zabbix-agent на наблюдаемой машине нам потребуется awk. Мы используем дистрибутив CentOS 7.4 и zabbix 3.4
Данные в zabbix мы будем собирать при помощи zabbix-agent, создав пользовательские ключи. Для этого в /etc/zabbix/zabbix_agentd.d нужно создать файлик userparameter_custom.vfs.conf примерно со следующим содержимым:
UserParameter=custom.vfs.dev.io.ms[*],cat /sys/class/block/$1/stat | awk ‘‘
Тут все просто — создаем пользовательский ключ custom.vfs.dev.io.ms, в качестве параметра передаем туда имя блочного устройства, значением параметра будет 10 колонка файлика stat.
В этом файлике статистики всего 11 колонок, посмотреть их описание можно вот тут.
Колонка №10 это io_tics — количество миллисекунд затраченным устройством на ввод вывод. Как почти все параметры — эта цифра является аккумулятором и постоянно возрастает. Как же получить из них привычные метрики.
Утилизация дисковой подсистемы
Эта метрика аналогична значению поля utils команды iostat -x. Характеризует загрузку дисковой подсистемы. По сути это сколько процентов реального времени система затратила на операции ввода-вывода за интервал между опросами. Как правило при приближении к 100% система начинает все больше простаивать в ожидании когда диски обработают ваши запросы.
Чтобы получить эту цифру — надо взять значение 10 колонки файла статистики и запомнить его в zabbix как скорость изменения в секунду, не забыв умножить на 0.1 так как значение в статистике в миллисекундах, а нам нужны проценты.
Аналогичным образом можно посчитать нагрузку записью/чтением (колонки write_ticks / read_ticks).
Время обработки запроса
Эта метрика аналогична r_svctime и w_svctime для записи и чтения соответственно. По сути это усредненное время обработки запросов за интервал между опросами.
Данная метрика чуть посложнее. Рассмотрим на примере запросов на запись.
Для этого нам понадобится создать три ключа:
- write utils — количество времени потраченное на запись — колонка №8 write_ticks сохраненная, как скорость изменения в секунду между опросами. По сути значение ключа в zabbix будет утилизация записью.
Абсолютно также считается время обработки запросов на чтение, только используя колонки №1 read I/Os и №4 read_ticks.
Пропускная способность
Метрика показывающая с какой скоростью данные были записаны или прочитаны
Для этой метрики используются колонки №3 read sectors и №5 write sectors. Значение сколько было прочитано или записано «секторов». Точно так же в zabbix сохраняем как изменение за секунду.
Единственный ньюанс — значение в файле указанно «в попугаях-секторах», причем размер этого «сектора» фиксирован 512 байт и не зависит от реальных значений ни физического ни логического сектора устройства (проверял на нескольких устройствах с реальным размером физического сектора 4к). Так что чтобы пересчитать в байты — не забудьте умножить на 512.
Количество операций ввода-вывода в секунду
Эта метрика — те самые пресловутые IOPS
Самая простая метрика — мы ее уже записывали для подсчета svc time это значение колонок №5 write I/Os и №1 read I/Os также сохраненные как скорость в секунду.
Заключение
Этих метрик мне как правило достаточно для того чтобы я мог делать обоснованные выводы. Конечно это не все цифры которые можно получить из файла статистики. Например там есть и число текущих обрабатываемых запросов, и количество запросов которые были объеденены. Но полагаю при необходимости вам не составит труда добавить их по аналогии с описанным.
И да не претендую на авторство — сам метод был когда-то давно загуглен, но за давностью лет ссылки конечно затерялись.
Увы NDA заставляет кое-что подчистить из них, но надеюсь на работоспособность шаблона это не повлияет.
А в шапке скриншот из Grafana прикрученной поверх zabbix — демонстрирующий реальные цифры с одной из тестовых инсталляций.
Zabbix + Windows
Windows
Microsoft Windows is a group of several graphical operating system families, all of which are developed, marketed, and sold by Microsoft.
Available solutions
Windows CPU by Zabbix agent
Overview
For Zabbix version: 5.4 and higher
Setup
Refer to the vendor documentation.
Zabbix configuration
No specific Zabbix configuration is required.
Macros used
The critical threshold of the % Interrupt Time counter.
The threshold of the % Privileged Time counter.
The threshold of the Processor Queue Length counter.
The critical threshold of the CPU utilization in %.
Template links
There are no template links in this template.
Discovery rules
Items collected
CPU utilization in %
The Processor Information% Interrupt Time is the time the processor spends receiving and servicing
hardware interrupts during sample intervals. This value is an indirect indicator of the activity of
devices that generate interrupts, such as the system clock, the mouse, disk drivers, data communication
lines, network interface cards and other peripheral devices. This is an easy way to identify a potential
hardware failure. This should never be higher than 20%.
Context Switches/sec is the combined rate at which all processors on the computer are switched from one thread to another.
Context switches occur when a running thread voluntarily relinquishes the processor, is preempted by a higher priority ready thread, or switches between user-mode and privileged (kernel) mode to use an Executive or subsystem service.
It is the sum of ThreadContext Switches/sec for all threads running on all processors in the computer and is measured in numbers of switches.
There are context switch counters on the System and Thread objects. This counter displays the difference between the values observed in the last two samples, divided by the duration of the sample interval.
The Processor Information% Privileged Time counter shows the percent of time that the processor is spent
executing in Kernel (or Privileged) mode. Privileged mode includes services interrupts inside Interrupt
Service Routines (ISRs), executing Deferred Procedure Calls (DPCs), Device Driver calls and other kernel-mode
functions of the Windows® Operating System.
Processor DPC time is the time that a single processor spent receiving and servicing deferred procedure
calls (DPCs). DPCs are interrupts that run at a lower priority than standard interrupts. % DPC Time is a
component of % Privileged Time because DPCs are executed in privileged mode. If a high % DPC Time is
sustained, there may be a processor bottleneck or an application or hardware related issue that can
significantly diminish overall system performance.
The Processor Information% User Time counter shows the percent of time that the processor(s) is spent executing
The number of logical processors available on the computer.
The Processor Queue Length shows the number of threads that are observed as delayed in the processor Ready Queue
and are waiting to be executed.
Group | Name | Description | Type | Key and additional info |
---|---|---|---|---|
CPU | CPU utilization | ZABBIX_PASSIVE | system.cpu.util | |
CPU | CPU interrupt time | ZABBIX_PASSIVE | perf_counter_en[«Processor Information(_total)% Interrupt Time»] | |
CPU | Context switches per second | ZABBIX_PASSIVE | perf_counter_en[«SystemContext Switches/sec»] | |
CPU | CPU privileged time | ZABBIX_PASSIVE | perf_counter_en[«Processor Information(_total)% Privileged Time»] | |
CPU | CPU DPC time | ZABBIX_PASSIVE | perf_counter_en[«Processor Information(_total)% DPC Time»] | |
CPU | CPU user time | ZABBIX_PASSIVE | perf_counter_en[«Processor Information(_total)% User Time»] | |
CPU | Number of cores | ZABBIX_PASSIVE | wmi.get[root/cimv2,»Select NumberOfLogicalProcessors from Win32_ComputerSystem»] | |
CPU | CPU queue length | ZABBIX_PASSIVE | perf_counter_en[«SystemProcessor Queue Length»] |
Triggers
CPU utilization is too high. The system might be slow to respond.
«The CPU Interrupt Time in the last 5 minutes exceeds <$CPU.INTERRUPT.CRIT.MAX>%.»
The Processor Information% Interrupt Time is the time the processor spends receiving and servicing
hardware interrupts during sample intervals. This value is an indirect indicator of the activity of
devices that generate interrupts, such as the system clock, the mouse, disk drivers, data communication
lines, network interface cards and other peripheral devices. This is an easy way to identify a potential
hardware failure. This should never be higher than 20%.
Depends on:
— High CPU utilization (over <$CPU.UTIL.CRIT>% for 5m)
The CPU privileged time in the last 5 minutes exceeds <$CPU.PRIV.CRIT.MAX>%.
Depends on:
— CPU interrupt time is too high (over <$CPU.INTERRUPT.CRIT.MAX>% for 5m)
— High CPU utilization (over <$CPU.UTIL.CRIT>% for 5m)
The CPU Queue Length in the last 5 minutes exceeds <$CPU.QUEUE.CRIT.MAX>. According to actual observations, PQL should not exceed the number of cores * 2. To fine-tune the conditions, use the macro <$CPU.QUEUE.CRIT.MAX >.
Depends on:
— High CPU utilization (over <$CPU.UTIL.CRIT>% for 5m)
Feedback
Please report any issues with the template at https://support.zabbix.com
Windows memory by Zabbix agent
Overview
For Zabbix version: 5.4 and higher
Setup
Refer to the vendor documentation.
Zabbix configuration
No specific Zabbix configuration is required.
Macros used
The warning threshold of the Memory Pages/sec counter.
The warning threshold of the Free System Page Table Entries counter.
The warning threshold of the Memory util item.
The warning threshold of the minimum free swap.
Template links
There are no template links in this template.
Discovery rules
Items collected
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
High CPU utilization (over <$CPU.UTIL.CRIT>% for 5m) | > | WARNING | ||
CPU interrupt time is too high (over <$CPU.INTERRUPT.CRIT.MAX>% for 5m) | ||||
CPU privileged time is too high (over <$CPU.PRIV.CRIT.MAX>% for 5m) | ||||
CPU queue length is too high (over <$CPU.QUEUE.CRIT.MAX>for 5m) |
Used memory in Bytes
Total memory in Bytes
Memory utilization in %
Cache Bytes is the sum of the MemorySystem Cache Resident Bytes, MemorySystem Driver Resident Bytes,
MemorySystem Code Resident Bytes, and MemoryPool Paged Resident Bytes counters. This counter displays
the last observed value only; it is not an average.
The free space of swap volume/file in bytes.
The free space of swap volume/file in percent.
The total space of swap volume/file in bytes.
This indicates the number of page table entries not currently in use by the system. If the number is less
than 5,000, there may well be a memory leak or you running out of memory.
Page Faults/sec is the average number of pages faulted per second. It is measured in number of pages
faulted per second because only one page is faulted in each fault operation, hence this is also equal
to the number of page fault operations. This counter includes both hard faults (those that require
disk access) and soft faults (where the faulted page is found elsewhere in physical memory.) Most
processors can handle large numbers of soft faults without significant consequence. However, hard faults,
which require disk access, can cause significant delays.
This measures the rate at which pages are read from or written to disk to resolve hard page faults.
If the value is greater than 1,000, as a result of excessive paging, there may be a memory leak.
This measures the size, in bytes, of the non-paged pool. This is an area of system memory for objects
that cannot be written to disk but instead must remain in physical memory as long as they are allocated.
There is a possible memory leak if the value is greater than 175MB (or 100MB with the /3GB switch).
A typical Event ID 2019 is recorded in the system event log.
Group | Name | Description | Type | Key and additional info | |
---|---|---|---|---|---|
Memory | Used memory | ZABBIX_PASSIVE | vm.memory.size[used] | ||
Memory | Total memory | ZABBIX_PASSIVE | vm.memory.size[total] | ||
Memory | Memory utilization | CALCULATED | vm.memory.util
Expression: last(«vm.memory.size[used]») / last(«vm.memory.size[total]») * 100 |
||
Memory | Cache bytes | ZABBIX_PASSIVE | perf_counter_en[«MemoryCache Bytes»] | ||
Memory | Free swap space | CALCULATED | system.swap.free
Expression: last(«system.swap.size[,total]») — last(«system.swap.size[,total]») / 100 * last(«perf_counter_en[»Paging file(_Total)% Usage»]») |
||
Memory | Free swap space in % | DEPENDENT | system.swap.pfree
Preprocessing: — JAVASCRIPT: return (100 — value) The used space of swap volume/file in percent. |
ZABBIX_PASSIVE | perf_counter_en[«Paging file(_Total)% Usage»] |
Memory | Total swap space | ZABBIX_PASSIVE | system.swap.size[,total] | ||
Memory | Free system page table entries | ZABBIX_PASSIVE | perf_counter_en[«MemoryFree System Page Table Entries»] | ||
Memory | Memory page faults per second | ZABBIX_PASSIVE | perf_counter_en[«MemoryPage Faults/sec»] | ||
Memory | Memory pages per second | ZABBIX_PASSIVE | perf_counter_en[«MemoryPages/sec»] | ||
Memory | Memory pool non-paged | ZABBIX_PASSIVE | perf_counter_en[«MemoryPool Nonpaged Bytes»] |
Triggers
The system is running out of free memory.
This trigger is ignored, if there is no swap configured
Depends on:
— High memory utilization (><$MEMORY.UTIL.MAX>% for 5m)
The Memory Free System Page Table Entries is less than <$MEM.PAGE_TABLE_CRIT.MIN>for 5 minutes. If the number is less than 5,000, there may well be a memory leak.
Depends on:
— High memory utilization (><$MEMORY.UTIL.MAX>% for 5m)
The Memory Pages/sec in the last 5 minutes exceeds <$MEM.PAGE_SEC.CRIT.MAX>. If the value is greater than 1,000, as a result of excessive paging, there may be a memory leak.
Depends on:
— High memory utilization (><$MEMORY.UTIL.MAX>% for 5m)
Feedback
Please report any issues with the template at https://support.zabbix.com
Windows filesystems by Zabbix agent
Overview
For Zabbix version: 5.4 and higher
Setup
Refer to the vendor documentation.
Zabbix configuration
No specific Zabbix configuration is required.
Macros used
This macro is used in filesystems discovery. Can be overridden on the host or linked template level.
This macro is used in filesystems discovery. Can be overridden on the host or linked template level.
This macro is used in filesystems discovery. Can be overridden on the host or linked template level.
This macro is used in filesystems discovery. Can be overridden on the host or linked template level.
This macro is used in filesystems discovery. Can be overridden on the host or linked template level.
This macro is used in filesystems discovery. Can be overridden on the host or linked template level.
The critical threshold of the filesystem utilization in percent.
The warning threshold of the filesystem utilization in percent.
Template links
There are no template links in this template.
Discovery rules
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
High memory utilization (><$MEMORY.UTIL.MAX>% for 5m) | > | AVERAGE | ||
High swap space usage (less than <$SWAP.PFREE.MIN.WARN>% free) | ||||
Number of free system page table entries is too low (less <$MEM.PAGE_TABLE_CRIT.MIN>for 5m) | ||||
The Memory Pages/sec is too high (over <$MEM.PAGE_SEC.CRIT.MAX>for 5m) |
Discovery of file systems of different types.
Name | Description | Type | Key and additional info | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Mounted filesystem discovery | ZABBIX_PASSIVE | vfs.fs.discovery
Filter: Items collectedUsed storage in Bytes Total space in Bytes Space utilization in % for
TriggersTwo conditions should match: First, space utilization should be above <$VFS.FS.PUSED.MAX.CRIT:»<#FSNAME>«>. Second condition should be one of the following: — The disk free space is less than 5G. — The disk will be full in less than 24 hours. Manual close: YES Two conditions should match: First, space utilization should be above <$VFS.FS.PUSED.MAX.WARN:»<#FSNAME>«>. Second condition should be one of the following: — The disk free space is less than 10G. — The disk will be full in less than 24 hours. Manual close: YES Depends on: FeedbackPlease report any issues with the template at https://support.zabbix.com Windows physical disks by Zabbix agentOverviewFor Zabbix version: 5.4 and higher SetupRefer to the vendor documentation. Zabbix configurationNo specific Zabbix configuration is required. Macros usedThis macro is used in physical disks discovery. Can be overridden on the host or linked template level. This macro is used in physical disks discovery. Can be overridden on the host or linked template level. Disk read average response time (in s) before the trigger would fire. The warning threshold of disk time utilization in percent. Disk write average response time (in s) before the trigger would fire. Template linksThere are no template links in this template. Discovery rules
Discovery of installed physical disks.
|
Для того, чтобы при помощи активного агента Zabbix следить за дисковым пространством компьютера, как оказалось, не нужно писать скриптов. Совсем. 🙂 Все уже умеет делать активный Zabbix-агент “из коробки”. Достаточно создать шаблон и назначить его компьютеру. Всё.
А теперь по порядку.
Дано.
Сферический компьютер в вакууме. Нужно следить за заполненностью системного диска Windows. Предположим, что у нас всё стандартно, поэтому в качестве буквы системного диска используется “C:”.
Решение.
При помощи активного агента Zabbix будем собирать 4 параметра диска “C:”:
- общий размер диска
- размер занятого места
- размер свободного места
- процент свободного места.
На основании этих параметров создадим 4 триггера:
- Предупреждение. Свободно менее 20%
- Средняя важность. Свободно менее 10%
- Высокая важность. Свободно менее 1 Гб.
- Чрезвычайная важность. Свободно менее 100 Мб.
И создадим 2 графика:
- Размер свободного места
- Размер свободного места в процентах.
Создаём шаблон.
Имя шаблона: Active Computer – SystemDrive
Группа данных: Filesystems
Элементы данных:
- SystemDriveSizeFree – vfs.fs.size[“c:”,free]
- SystemDriveSizePFree – vfs.fs.size[“c:”,pfree]
- SystemDriveSizeTotal – vfs.fs.size[“c:”,total]
- SystemDriveSizeUsed – vfs.fs.size[“c:”,used]
Триггеры:
- Предупреждение. Меньше 20% свободно на системном диске компьютера {HOST.NAME} {Active Computer – SystemDrive:vfs.fs.size[“c:”,pfree].last()}<20
- Средняя .Меньше 10% свободно на системном диске компьютера {HOST.NAME} {Active Computer – SystemDrive:vfs.fs.size[“c:”,pfree].last()}<10
- Высокая. Меньше 1ГБ свободно на системном диске компьютера {HOST.NAME} {Active Computer – SystemDrive:vfs.fs.size[“c:”,free].last()}<1073741824
- Чрезвычайная. Меньше 100 Мб свободно на системном диске компьютера {HOST.NAME} {Active Computer – SystemDrive:vfs.fs.size[“c:”,free].last()}<104857600
Теперь то же самое, но в картинках.
Файл с экспортированным шаблоном можно скачать тут: zbx_export_templates_Active_Computer_SystemDrive.xml
Назначаем шаблон компьютеру
И начинаем получать данные… 🙂
Ура!!!
Всё работает.
И есть ли в этом смысл?
Для тех, кто задумался и сомневается, я решил описать кое-что из своего опыта.
Мониторинг вообще штука полезная, бесспорно. У меня лично в какой-то период возникло сразу несколько задач:
-
Круглосуточно и непрерывно мониторить одну специфическую железку по ряду параметров;
-
Мониторить у рабочих станций информацию о температурах, ЦП в первую очередь;
-
Всякие мелочи в связи с широким внедрением удалёнки: количество подключений по VPN, общее состояние дополнительных виртуальных машин.
Подробнее про локальные задачи:
-
Надо было оценить и наглядно представить данные об интернет-канале. Канал на тот момент представлял собой 4G-роутер Huawei. Это устройство было последним, но далеко не первым в огромном количестве плясок с бубном в попытках избавиться от разного рода нестабильностей. Забегая вперёд: забирать с него данные напрямую о качестве сигнала более-менее стандартными средствами оказалось невозможно, и даже добраться до этих данных — отдельный квест. Пришлось городить дендрофекальную конструкцию, которая, на удивление стабильно, и стала в итоге поставлять данные. Данные в динамике и в графическом представлении оказались настолько неутешительными, что позволили убедить всех причастных таки поменять канал, даже и на более дорогой;
-
Данные о температуре процессора дают сразу несколько линий: можно обнаружить шифровальщик в процессе работы, наглядно сделать вывод о недостаточной мощности рабочей станции, найти повод провести плановую чистку, узнать о нарушении условий эксплуатации. Последний пункт особенно хорош: множество отказов оборудования и BSOD’ов в итоге нашли причину в «я ставлю обогреватель под стол, ну и свой баул, ну да, прям к этой решётке. А что? А я канпуктер развернула, а то неудобно»;
-
Интерфейс того же OpenVPN… ну, он в общем даже и не интерфейс и оставляет желать любого другого. Отдельная история.
Как большой любитель велосипедить всё подряд, сначала я решил свелосипедить и это. Уже валялись под рукой всякие скрипты по сбору статистки, и html проекты с графиками на js, и какие-то тестовые БД… Но тут сработала жадность (и лень, чоужтам). А чего это, подумал я, самому опять корячиться, если в том же Zabbix уже куча всяких шаблонов, и помимо задач из списка можно будет видеть много чего ещё? Да и он бесплатный к тому же. Всего-то делов, виртуалку поднять да клиенты централизованно расставить. Потренируюсь с ним, опять же, он много где используется.
Итак, нам понадобятся:
-
Виртуальная машина или физический хост. Zabbix нетребователен к ресурсам при небольшом количестве хостов на мониторинге: мне хватило одного виртуального процессора на 2ГГц и 4 Гб RAM за глаза;
-
Любой инструмент для автоматического раскидывания zabbix-agent. При некотором скилле это можно делать даже через оригинальный WSUS, или просто батником с psexec, вариантов много. Также желательно запилить предварительно сконфигурированный инсталлятор агента — об этом ниже;
-
Много желания пилить напильником. Скажу честно и сразу: из первоначального списка 3 из 3 реализовывалось руками на местности. Zabbix стандартной комплектации в такое не может.
У Zabbix много вариантов установки. В моём случае (я начинал с 4 LTS) сработала только установка руками в чистую, из собственного образа, OC в виртуальной машине на Hyper-V. Так что, коли не получится с первого раза, — не сдавайтесь, пробуйте. Саму процедуру подробнее описывать не буду, есть куча статей и хороший официальный мануал.
Про формирование инсталлятора агента: один из самых простых способов — использовать утилиты наподобие 7zfx Builder . Нужно будет подготовить:
-
файл zabbix_agentd.conf ;
-
файлы сторонних приложений и скриптов, используемых в userParameters (об этом ниже) ;
-
скрипт инсталлятора с кодом наподобие этого:
SETLOCAL ENABLEDELAYEDEXPANSION
SET INSTDR=C:ZabbixAgent
SET IP=192.168.100.10
set ip_address_string="IPv4-адрес"
for /f "usebackq tokens=2 delims=:" %%F in (ipconfig ^| findstr /c:%ip_address_string%) do SET IP=%%F
SET IP=%IP: =%
ECHO SourceIP=%IP%>> "%INSTDR%confzabbix_agentd.conf"
ECHO ListenIP=%IP%>> "%INSTDR%confzabbix_agentd.conf"
ECHO Hostname=%COMPUTERNAME%>> "%INSTDR%confzabbix_agentd.conf"
"%INSTDR%binzabbix_agentd.exe" -c "%INSTDR%confzabbix_agentd.conf" -i
net start "Zabbix Agent"
ENDLOCAL
Кстати, об IP. Адрес в Zabbix является уникальным идентификатором, так что при «свободном» DHCP нужно будет настроить привязки. Впрочем, это и так хорошая практика.
Также могу порекомендовать добавить в инсталлятор следующий код:
sc failure "Zabbix Agent" reset= 30 actions= restart/60000
Как и многие сервисы, Zabbix agent под Windows при загрузке ОС стартует раньше, чем некоторые сетевые адаптеры. Из-за этого агент не может увидеть IP, к которому должен быть привязан, и останавливает службу. В оригинальном дистрибутиве при установке настроек перезапуска нет.
После этого добавляем хосты. Не забудьте выбрать Template – OS Windows. Если сервер не видит клиента — проверяем:
-
IP-адрес;
-
файрвол на клиенте;
-
работу службы на клиенте — смотрим zabbix_agentd.log, он вполне информативный.
По моему опыту, сервер и агенты Zabbix очень стабильны. На сервере, возможно, придётся расширить пул памяти по active checks (уведомление о необходимости такого действия появляется в дашборде), на клиентах донастроить упомянутые выше нюансы с запуском службы, а также, при наличии UserParameters, донастроить параметр timeout (пример будет ниже).
Что видно сразу, без настроек?
Сразу видно, что Zabbix заточен под другое Но и об обычных рабочих станциях в конфигурации «из коробки» можно узнать много: идёт мониторинг оперативной памяти и SWAP, места на жёстких дисках, загрузки ЦП и сетевых адаптеров; будут предупреждения о том, что клиент давно не подключался или недавно перезагружен; агент автоматически создаёт список служб и параметров их работы, и сгенерирует оповещение о «необычном» поведении. Практически из коробки (со скачиванием доп. template’ов с офсайта и небольшой донастройкой) работает всё, что по SNMP: принтеры и МФУ, управляемые свитчи, всякая специфическая мелочь. Иметь алерты по тем же офисным принтерам в едином окне очень удобно.
В общем-то, очень неплохо, но…
Что доделывать?
Оооо. Ну, хотел повелосипедить, так это всегда пожалуйста. Прежде всего, нет алертов на события типа «критические» из системного лога Windows, при том, что механизм доступа к логам Windows встроенный, а не внешний, как Zabbix agent active. Странно, ну штош. Всё придётся добавлять руками.
Например
для записи и оповещения по событию «Система перезагрузилась, завершив работу с ошибками» (Microsoft-Windows-Kernel-Power, коды 41, 1001) нужно создать Item c типом Zabbix agent (active) и кодом в поле Key:
eventlog[System,,,,1001]
По этому же принципу создаём оповещения на другие коды. Странно, но готового template я не нашёл.
Cистема автоматизированной генерации по службам генерирует целую тучу спама. Часть служб в Windows предполагает в качестве нормального поведения тип запуска «авто» и остановку впоследствии. Zabbix в такое не может и будет с упорством пьяного сообщать «а BITS-то остановился!». Есть широко рекомендуемый способ избавления от такого поведения — добавление набора служб в фильтр-лист: нужно добавить в Template «Module Windows services by Zabbix agent», в разделе Macros, в фильтре {$SERVICE.NAME.NOT_MATCHES} имя службы в формате RegExp. Получается список наподобие:
^RemoteRegistry|MMCSS|gupdate|SysmonLog|
clr_optimization_v.+|clr_optimization_v.+|
sppsvc|gpsvc|Pml Driver HPZ12|Net Driver HPZ12|
MapsBroker|IntelAudioService|Intel(R) TPM Provisioning Service|
dbupdate|DoSvc|BITS.*|ShellHWDetection.*$
И он не работает работает с задержкой в 30 дней.
Про службы, автоматически генерируемые в Windows 10, я вообще промолчу.
Нет никаких температур (но это, если подумать, ладно уж), нет SMART и его алертов (тоже отдельная история, конечно). Нет моих любимых UPS.
Некоторые устройства генерируют данные и алерты, работу с которыми надо выстраивать. В частности, например, управляемый свитч Tp-Link генерирует интересный алерт «скорость на порту понизилась». Почти всегда это означает, что рабочая станция просто выключена в штатном режиме (ушла в S3), но сама постановка вопроса заставляет задуматься: сведения, вообще, полезные — м.б. и драйвер глючит, железо дохнет, время странное…
Некоторые встроенные алерты требуют переработки и перенастройки. Часть из них не закрывается в «ручном» режиме по принципу «знаю, не ори, так надо» и создаёт нагромождение информации на дашборде.
Короче говоря, многое требует допиливания напильником под местные реалии и задачи.
О локальных задачах
Всё, что не встроено в Zabbix agent, реализуется через механизм Zabbix agent (active). Суть проста: пишем скрипт, который будет выдавать нужные нам данные. Прописываем наш скрипт в conf:
UserParameter=имя.параметра,путькскрипту
Нюансы:
-
если хотите получать в Zabbix строку на кириллице из cmd — не надо. Только powershell;
-
если параметр специфический – для имени нужно будет придумать и сформулировать дерево параметров, наподобие «hardware.huawei.modem.link.speed» ;
-
отладка и стабильность таких параметров — вопрос и скрипта, и самого Zabbix. Об этом дальше.
Хотелка №1: температуры процессоров рабочих станций
В качестве примера реализуем хотелку «темература ЦП рабочей станции». Вам может встретиться вариант наподобие:
wmic /namespace:rootwmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature
но это не работает (вернее, работает не всегда и не везде).
Самый простой способ, что я нашёл — воспользоваться проектом OpenHardwareMonitor. Он свои результаты выгружает прямо в тот же WMI, так что температуру получим так:
@echo OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET TMPTMP=0
for /f "tokens=* skip=1 delims=" %%I in ('wmic /namespace:rootOpenHardwareMonitor PATH Sensor WHERE Identifier^="/intelcpu/0/temperature/1" get Value') DO (
SET TMPTMP=%%I && GOTO :NXT
)
:NXT
ECHO %TMPTMP%
ENDLOCAL
GOTO :EOF
Конечно, при условии, что OHM запущен. В текущем релизе OHM не умеет работать в качестве Windows service. Так что придётся либо смущать пользователей очередной иконкой в трее, либо снова городить свой инсталлятор и запихивать OHM в сервисы принудительно. Я выбрал поcледнее, создав инсталляционный cmd для всё того же 7zfx Builder наподобие:
nssm install OHMservice "%programfiles%OHMOpenHardwareMonitor.exe"
timeout 3
net start "OHMservice"
del nssm.exe /Q
Два момента:
-
NSSM — простая и достаточно надёжная утилита с многолетней историей. Применяется как раз в случаях, когда ПО не имеет режима работы «сервис», а надо. Во вредоносности утилита не замечена;
-
Обратите внимание на «intelcpu» в скрипте получения температуры от OHM. Т.к. речь идёт о внедрении в малом офисе, можно рассчитывать на единообразие парка техники. Более того, таким образом лично у меня получилось извлечь и температуру ЦП от AMD. Но тем не менее этот пункт требует особого внимания. Возможно, придётся модифицировать и усложнять инсталлятор для большей универсальности.
Работает более чем надёжно, проблем не замечено.
Хотелка № 2: получаем и мониторим температуру чего угодно
Понадобятся нам две вещи:
-
Штука от братского китайского народа: стандартный цифровой термометр DS18B20, совмещённый с USB-UART контроллером. Стоит не сказать что бюджетно, но приемлемо;
-
powershell cкрипт:
param($cPort='COM3')
$port= new-Object System.IO.Ports.SerialPort $cPort,9600,None,8,one
$port.Open()
$tmp = $port.ReadLine()
$port.Close()
$tmp = $tmp -replace "t1="
if (([int]$tmp -lt 1) -or ([int]$tmp -gt 55)){
#echo ("trigg "+$tmp)
$port.Open()
$tmp = $port.ReadLine()
$port.Close()
$tmp = $tmp -replace "t1="
}
echo ($tmp)
Связка работает достаточно надёжно, но есть интересный момент: иногда, бессистемно, появляются провалы или пики на графиках:
Тесты показали, что проблема в самом Zabbix, а данные с китайских датчиков приходят верные. Детальное рассмотрение пиков и провалов выявило неожиданный факт: похоже Zabbix иногда получает и/или записывает в БД не полное значение, а «хвост». Т.е., например, 1.50 от значения 21.50. При этом положение точки не важно — может получить и 1.50, и 50, и даже 0. Как так происходит, мне выяснить пока не удалось. Изменение timeout на поведение не влияет никак, ни в большую, ни в меньшую сторону.
Наверное, стоило бы написать багрепорт. Но уже вышел 6.0 LTS (у меня 5) и обновляться в текущей ситуации, пожалуй, не буду.
Хотелка № 3: OpenVPN подключения
Template’ов для OpenVPN и Zabbix существует довольно много, но все они реализованы на том или ином sh под *nix’ы . В свою очередь, «dashboard» OpenVPN-сервера представляет из себя, по сути, вывод утилиты в консоль, который пишется в файл по событиям. Мне лень было считать трафик по отдельным пользователям и вообще делать их discover, т.к. подключений и пользователей немного. Ограничился текущим количеством подключений:
$openvpnLogPath = "C:OpenVPNconfig"
$openvpnLogName = "openvpn-status.log"
try {
$logData = Get-Content $openvpnLogPath$openvpnLogName -ErrorAction Stop
}
catch{
Write-Host("Missing log file")
exit 1
}
$logHeader = "OpenVPN CLIENT LIST"
$logHeader2 = "Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since"
$logMark1 = "ROUTING TABLE"
if ($logData[0] -ne $logHeader -or $logData[2] -ne $logHeader2 ){
Write-Host("Bad log file")
exit 1
}
$i = 0
foreach ($tmpStr in ($logData | select -skip 3)) {
if ($tmpStr -eq $logMark1) {break}
$i++
}
Write-Host($i)
exit 0
Хотелка № 4: спецжелезка 1
Для большого количества специфического оборудования существуют написанные энтузиастами Template’ы. Обычно они используют и реализуют функционал, уже имеющийся в утилитах к этим железкам.
Боли лирическое отступление
установив один из таких темплейтов, я узнал, что «нормальная рабочая» температура чипа RAID-контроллера в серваке — 65+ градусов. Это, в свою очередь, побудило внимательнее посмотреть и на контроллер, и на сервер в целом. Были найдены косяки и выражены «фи»:
-
Apaptec’у – за игольчатый радиатор из неизвестного крашеного силумина высотой чуть более чем нихрена, поток воздуха к которому закрыт резервной батарейкой с высотой больше, чем радиатор. Особенно мне понравилось потом читать у Adaptec того же «ну, это его нормальная рабочая температура. Не волнуйтесь». Ответственно заявляю: при такой «нормальной рабочей температуре» контроллер безбожно и непредсказуемо-предсказуемо глючил;
-
Одному отечественному сборщику серверов. «Берём толстый жгут проводов. Скрепляем его, чтобы он был толстым, плотным, надёжным. Вешаем это прямо перед забором воздуха вентиляторами продува серверного корпуса. Идеально!». На «полу» сервера было дофига места, длины кабелей тоже хватало, но сделали почему-то так.
Также был замечен интересный нюанс поведения, связанный с Zabbix. Со старым RAID контроллером при наличии в системном логе специфичных репортов, отваливался мониторинг температуры контроллера в Zabbix, но! при запуске руками в консоли скрипта или спец. утилиты температура выводилась корректно и без задержек.
Но полный функционал реализован далеко не всегда. В частности, мне понадобились температуры жёстких дисков с нового RAID-контроллера (ну люблю я температуры, что поделать ), которых в оригинальном темплейте не было. Пришлось самому реализовывать температуры и заодно autodiscover физических дисков: https://github.com/automatize-it/zabbix-lsi-raid/commit/1d3a8b3a0e289b8c2df637028475177a2b940689
Оригинальный репозиторий, вероятно, заброшен, как это довольно часто бывает.
Хотелка № 5, на десерт: спецжелезка 2
Как и обещал, делюсь опытом вырывания данных из беспроводной железки Huawei. Речь о 4G роутере серии B*. Внутри себя железка имеет ПО на ASP, а данные о качестве сигнала — RSSI, SINR и прочее — в пользовательском пространстве показывать не хочет совсем. Смотри, мол, картинку с уровнем сигнала и всё, остальное не твоего юзерского ума дело. К счастью, в ПО остались какие-то хвосты, выводящие нужное в plain JSON. К сожалению, взять да скачать это wget-ом не получается никак: мало того, что авторизация, так ещё и перед генерацией plain json требуется исполнение JS на клиенте. К счастью, существует проект phantomjs. Кроме того, нам понадобится перенесённая руками кука из браузера, где мы единожды авторизовались в веб-интерфейсе, вручную. Кука живёт около полугода, можно было и скрипт написать, но я поленился.
Алгоритм действий и примеры кода:
вызываем phantomjs с кукой и сценарием:
phantomjs.exe --cookies-file=cookie.txt C:cmdyota_signalscenery.js
Примеры сценариев:
//получаем общий уровень сигнала
var url = "http://192.168.2.1/html/home.html";
var page = require('webpage').create();
page.open(url, function(status) {
//console.log("Status: " + status);
if(status === "success") {
var sgnl = page.evaluate(function() {
return document.getElementById("status_img").innerHTML; //
});
var stt = page.evaluate(function() {
return document.getElementById("index_connection_status").innerText; //
});
var sttlclzd = "dis";
var sgnlfnd = "NA";
if (stt.indexOf("Подключено") != -1) {sttlclzd = "conn";}
if (sgnl.indexOf("icon_signal_01") != -1) {sgnlfnd = "1";}
else {
var tmpndx = sgnl.indexOf("icon_signal_0");
sgnlfnd = sgnl.substring(tmpndx+13,tmpndx+14);
}
console.log(sttlclzd+","+sgnlfnd);
var fs = require('fs');
try {
fs.write("C:\cmd\siglvl.txt", sgnlfnd, 'w');
} catch(e) {
console.log(e);
}
}
phantom.exit();
});
//получаем технические параметры сигнала через какбэ предназначенный для этого "API"
var url = "http://192.168.2.1/api/device/signal";
var page = require('webpage').create();
page.onLoadFinished = function() {
//console.log("page load finished");
//page.render('export.png');
console.log(page.content);
parser = new DOMParser();
xmlDoc = parser.parseFromString(page.content,"text/xml");
var rsrq = xmlDoc.getElementsByTagName("rsrq")[0].childNodes[0].nodeValue.replace("dB","");
var rsrp = xmlDoc.getElementsByTagName("rsrp")[0].childNodes[0].nodeValue.replace("dBm","");
var rssi = xmlDoc.getElementsByTagName("rssi")[0].childNodes[0].nodeValue.replace("dBm","").replace(">=","");
var sinr = xmlDoc.getElementsByTagName("sinr")[0].childNodes[0].nodeValue.replace("dB","");
var fs = require('fs');
try {
fs.write("C:\cmd\rsrq.txt", rsrq, 'w');
fs.write("C:\cmd\rsrp.txt", rsrp, 'w');
fs.write("C:\cmd\rssi.txt", rssi, 'w');
fs.write("C:\cmd\sinr.txt", sinr, 'w');
} catch(e) {
console.log(e);
}
phantom.exit();
};
page.open(url, function() {
page.evaluate(function() {
});
});
Конструкция запускается из планировщика задач. В Zabbix-агенте производится лишь чтение соответствующих файлов:
UserParameter=internet.devices.huawei1.signal.level,type C:cmdsiglvl.txt
Требует постоянного присмотра, ручных прибиваний и перезапусков процессов, обновления кук. Но для такого шаткого нагромождения фекалий и палок работает достаточно стабильно.
Итого
Стоит ли заморачиваться на Zabbix, если у вас 20 машин и 1-2 сервера, да ещё и инфраструктура Windows?
Как можно понять из вышеизложенного, работы будет много. Я даже рискну предположить, что объёмы работ и уровень квалификации для них сравнимы с решением «свелосипедить своё с нуля по-быстрому на коленке».
Не стоит рассматривать Zabbix как панацею или серебряную пулю.
Тем не менее, использование уже готового и популярного продукта имеет свои преимущества — в первую очередь, это релевантный опыт для интересных работодателей.
А красивые графики дают усладу глазам и часто — новое видение процессов в динамике.
Если захочется внедрить, то могу пообещать, как минимум — скучно не будет!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Мониторите малые офисы?
59.42%
Мониторю, Заббиксом
41
2.9%
Мониторю, не Заббиксом
2
2.9%
Мониторю, самописной системой
2
24.64%
Не мониторю, но вообще надо бы
17
10.14%
Не мониторю и не надо
7
Проголосовали 69 пользователей.
Воздержались 25 пользователей.
Данная статья рассказывает о мониторинге журналов Windows через Zabbix и служит опорой в виде практических примеров, реализованных мной ранее. Важным моментом здесь является не столько сбор данных самого журнала, сколько правильная настройка триггера.
Шаблон или прототип элемента мониторинга будет выглядеть следующим образом (параметры для удобства пронумерованы):
eventlog[1- имя журнала,2-регулярное выражение,3-важность,4-источник,5-eventid,6-макс кол-во строк, 7-режим]
Тип данных: журнал (лог)
Далее рассмотрим конкретные практические примеры.
1. Ошибки в журнале приложений.
Максимально простой пример сбора ошибок в журнале «Приложение» (события уровня «Ошибка»)
eventlog[Application,,"Error",,,,skip]
2. Ошибки отложенной записи.
eventlog[System,,"Warning",,50,,skip]
краткие пояснения:
System — журнал система
Warning — тип события: предупреждение
50 — id события равно 50
skip — берем только свежие значения (не перечитываем весь лог)
триггер:
count(/Terminal server/eventlog[System,,"Warning",,50,,skip],30m)>7 and nodata(/Terminal server/eventlog[System,,"Warning",,50,,skip],60m)<>1
где Terminal server — это просто имя шаблона, в котором используются элемент данных и триггер
3. Ошибки диска.
eventlog[System,,"Warning",,153,,skip]
триггер:
count(/Template OS Windows by Zabbix agent active/eventlog[System,,"Warning",,153,,skip],30m)>5 and nodata(/Template OS Windows by Zabbix agent active/eventlog[System,,"Warning",,153,,skip],60m)<>1
4. ошибки в журнале событий от службы MSSQLSERVER.
eventlog[Application,,"Error","MSSQLSERVER",,,skip]
триггер:
count(/Template OS Windows SQL for 1C/eventlog[Application,,"Error","MSSQLSERVER",,,skip],8m)>0 and nodata(/Template OS Windows SQL for 1C/eventlog[Application,,"Error","MSSQLSERVER",,,skip],10m)<>1
Полезные ссылки:
https://www.zabbix.com/documentation/5.0/ru/manual/config/items/itemtypes/zabbix_agent/win_keys
Template OS Windows rus
Так же Ниже описания шаблона:
Проверка текущего времени узла сети
Как убрать лишние сетевые интерфейсы
Во 2 сообщении
Автоперезапуск / подъем упавших служб Windows
Автоматический Перезапуск (Перезагрузка) Windows
Завершение Сеанса Пользователей
СКАЧАТЬ
Скачать
Скачать
Скачать Без зависимости NoPingAgent {HOST.NAME}
Присоединенные шаблоны
Template App Zabbix Agent
Изменения
05.08.2020 добавлено сравнение времени расхождение
- Template OS Windows rus
Макросы
{$HOST.PORTS} > 10050
{$IF_ERRORS_WARN} > 2
- Template OS Windows rus Группы
Группы
Центральный процессор Элементы данных 11
Файловая система Элементы данных 4
Службы Элементы данных
Сетевой интерфейс Элементы данных
Процессы Элементы данных 1
Производительность Элементы данных 11
Операционная система Элементы данных 7
Общее Элементы данных 6
Template App Zabbix Agent: Zabbix агент Элементы данных 3
SWAP Память (файл подкачки) Элементы данных 8
RAM Память Элементы данных 18
- Template OS Windows rus Элементы данных
Элементы данных
Template App Zabbix Agent: Имя хоста запущенного zabbix_агентаd Триггеры 1 agent.hostname 1h 1w Zabbix агент Zabbix агент Активировано
Template App Zabbix Agent: Агент пинг ping Триггеры 1 agent.ping 1m 1w 365d Zabbix агент Zabbix агент Активировано
Template App Zabbix Agent: Версия zabbix_агента(d) работает Триггеры 1 agent.version 1h 1w Zabbix агент Zabbix агент Активировано
Файл считывает байты в секунду perf_counter[216] 1m 1w 365d Zabbix агент Производительность, Файловая система Активировано
Запись файла байт в секунду perf_counter[218] 1m 1w 365d Zabbix агент Производительность, Файловая система Активировано
Число потоков perf_counter[2250] 1m 1w 365d Zabbix агент Операционная система Активировано
Память Ошибок страницы/сек Триггеры 1 perf_counter_en[428] 1m 90d 90d Zabbix агент (активный) RAM Память, SWAP Память (файл подкачки), Производительность Активировано
Память и файл подкачки Учитывает промахи подсистемы кэширования обращение к диску не требуется Триггеры 1 perf_counter_en[436] 1m 90d 90d Zabbix агент (активный) SWAP Память (файл подкачки) Активировано
Память и файл подкачки ПамятьОбмен страниц/с Триггеры 1 perf_counter_en[440] 1m 90d 90d Zabbix агент Производительность, Файловая система Активировано
Память и файл подкачки Кол-во операций чтения, совершенных при подкачке Триггеры 1 perf_counter_en[442] 1m 90d 90d Zabbix агент Производительность, Файловая система Активировано
Память и файл подкачки Кол-во страниц, прочитанных с диска Триггеры 1 perf_counter_en[4822] 1m 90d 365d Zabbix агент (активный) SWAP Память (файл подкачки) Активировано
Число процессов Триггеры 1 proc.num[] 1m 1w 90d Zabbix агент Процессы Активировано
Прерывания устройств. system.cpu.intr 1m 1w 365d Zabbix агент Центральный процессор Деактивировано
Загрузка процессора ALL (1 мин в среднем) system.cpu.load[all,avg1] 1m 1w 365d Zabbix агент Производительность, Центральный процессор Активировано
Нагрузка процессора ALL (среднее 5 минут) system.cpu.load[all,avg5] 1m 1w 365d Zabbix агент Производительность, Центральный процессор Активировано
Нагрузка процессора ALL (среднее 15 минут) system.cpu.load[all,avg15] 1m 1w 365d Zabbix агент Производительность, Центральный процессор Активировано
Загрузка процессора (1 мин в среднем) Триггеры 3 system.cpu.load[percpu,avg1] 1m 1w 365d Zabbix агент Производительность, Центральный процессор Активировано
Нагрузка на процессор (в среднем 5 мин ) system.cpu.load[percpu,avg5] 1m 1w 365d Zabbix агент Производительность, Центральный процессор Активировано
Нагрузка процессора (среднее 15 минут) system.cpu.load[percpu,avg15] 1m 1w 365d Zabbix агент Производительность, Центральный процессор Активировано
Общее Число ядер в процессорах CPU онлайн system.cpu.num[] 1h 1w 90d Zabbix агент Центральный процессор Активировано
Все CPU system Время затраченное на выполнение системных вызовов (5 мин в среднем) system.cpu.util[,system,avg5] 1m 1w 365d Zabbix агент Центральный процессор Активировано
Все CPU system Время затраченное на выполнение системных вызовов (15 мин в среднем) system.cpu.util[,system,avg15] 1m 1w 365d Zabbix агент Центральный процессор Активировано
Все CPU system Время затраченное на выполнение системных вызовов (1 мин в среднем) system.cpu.util[,system] 1m 1w 365d Zabbix агент Центральный процессор Активировано
Host name имя хоста Триггеры 1 system.hostname 1h 90d Zabbix агент Общее, Операционная система Активировано
Местное время хоста Триггеры 1 system.localtime 1m 90d 90d Zabbix агент Общее, Операционная система Активировано
Местное время хоста 2 Триггеры 1 system.localtime.fuzzytime 1m 90d 90d Вычисляемое Общее, Операционная система Деактивировано
Архитектура ПО system.sw.arch 6h 90d Zabbix агент Операционная система Активировано
Свободное место подкачки Триггеры 1 system.swap.size[,free] 1m 1w 90d Zabbix агент SWAP Память (файл подкачки) Активировано
Свободное место подкачки в файле % Триггеры 2 system.swap.size[,pfree] 1m 1w 90d Zabbix агент SWAP Память (файл подкачки) Активировано
Используемое место в файле подкачки, в % system.swap.size[,pused] 1m 1w 90d Zabbix агент SWAP Память (файл подкачки) Деактивировано
Общее пространство файла подкачки Триггеры 1 system.swap.size[,total] 1h 1w 90d Zabbix агент SWAP Память (файл подкачки) Активировано
Используется места в файле подкачки Триггеры 1 system.swap.size[,used] 1m 1w 90d Zabbix агент SWAP Память (файл подкачки) Активировано
Системная информация Триггеры 1 system.uname 1h 1w Zabbix агент Общее, Операционная система Активировано
Работоспособность системы Триггеры 1 system.uptime 1m 1w 365d Zabbix агент Общее Активировано
Число пользователей system.users.num 1m 1w 365d Zabbix агент Общее, Операционная система Активировано
Активная память находится в RAM vm.memory.size[active] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Память RAM, не связанная с файлами (повторное чтение из них невозможно). vm.memory.size[anon] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Доступная RAM память Триггеры 1 vm.memory.size[available] 1m 90d 90d Zabbix агент RAM Память Активировано
Буферная RAM память, кэш метаданных файловой системы. vm.memory.size[buffers] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Память RAM кэш для различных вещей vm.memory.size[cached] 1m 90d 90d Zabbix агент RAM Память Активировано
Выполняемая Память RAM, исполняемый код, в основном из (программ) файлов vm.memory.size[exec] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Файловая Память RAM, кэш содержимого наиболее часто используемых файлов. vm.memory.size[file] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Свободная память RAM Триггеры 2 vm.memory.size[free] 1m 1w 90d Zabbix агент RAM Память Активировано
Неактивная память RAM vm.memory.size[inactive] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Закрепленная память в RAM не может быть перемещена на диск. vm.memory.size[pinned] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Используемая память RAM в% Триггеры 2 vm.memory.size[pused] 1m 1w 90d Zabbix агент RAM Память Активировано
Общедоступная память RAM для нескольких процессов vm.memory.size[shared] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Общий объем памяти RAM используемый ядром для кэширования структур данных vm.memory.size[slab] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Общая память RAM Триггеры 1 vm.memory.size[total] 1h 1w 90d Zabbix агент RAM Память Активировано
Используемая память RAM Триггеры 1 vm.memory.size[used] 1m 1w 90d Zabbix агент RAM Память Активировано
Память всегда в RAM не используя диск vm.memory.size[wired] 1m 90d 90d Zabbix агент RAM Память Деактивировано
Свободная виртуальная память RAM, внутри % Триггеры 2 vm.vmemory.size[pavailable] 1m 1w 90d Zabbix агент RAM Память Активировано
Отображено 52 из 52 найденных
- Template OS Windows rus Триггеры
Триггеры
Средняя Template App Zabbix Agent: NoPingAgent {HOST.NAME} {Template OS Windows:agent.ping.nodata(6m)}=1 Активировано
Информационная Template App Zabbix Agent: VersionAgent= {HOST.NAME} {Template OS Windows:agent.version.diff(0)}>0 Активировано
Средняя {HOST.NAME} только что было перезапущено {Template OS Windows:system.uptime.change(0)}<0 Активировано
Информационная Время Windows {HOST.HOST} отличается от времени Zabbix Server {Template OS Windows:system.localtime.fuzzytime(60)}=0 Активировано
Информационная Время Windows {HOST.HOST} отличается от времени Zabbix Server {Template OS Windows:system.localtime.fuzzytime.sum(#3)}=0 Деактивировано
Информационная Template App Zabbix Agent: Имя было изменено на {HOST.NAME} {Template OS Windows:agent.hostname.diff(0)}>0 Активировано
Информационная Имя было изменено на {HOST.NAME} {Template OS Windows:system.hostname.diff(0)}>0 Активировано
Средняя Информация о хосте была изменена на {HOST.NAME} {Template OS Windows:system.uname.diff(0)}>0 Активировано
Внимание/Предупреждение Нагрузка процессора более 70% на {HOST.NAME} {Template OS Windows:system.cpu.load[percpu,avg1].avg(5m)}>0.70 Активировано
Средняя Нагрузка процессора почти 100% на {HOST.NAME} {Template OS Windows:system.cpu.load[percpu,avg1].avg(5m)}>1 Активировано
Высокая Нагрузка процессора слишком высока на {HOST.NAME} {Template OS Windows:system.cpu.load[percpu,avg1].avg(5m)}>5 Активировано
Средняя Отсутствие доступной RAM виртуальной памяти 10% {HOST.NAME} Проблема: {Template OS Windows:vm.vmemory.size[pavailable].min(10m)}<10
Восстановление: {Template OS Windows:vm.vmemory.size[pavailable].min(10m)}>20 Активировано
Средняя Отсутствие свободной RAM памяти menee 5 % {HOST.NAME} {Template OS Windows:vm.memory.size[pused].min(5m)}>=95 or {Template OS Windows:vm.memory.size[total].last(0)}-({Template OS Windows:vm.memory.size[used].min(3m)}*1.06)<=0 or {Template OS Windows:vm.memory.size[total].last(0)}-({Template OS Windows:vm.memory.size[available].min(3m)}*20)>=0 or {Template OS Windows:vm.memory.size[total].last(0)}-({Template OS Windows:vm.memory.size[free].min(3m)}*20)>=0 or {Template OS Windows:vm.vmemory.size[pavailable].min(5m)}<=5 Активировано
Средняя Отсутствие свободной RAM памяти menee 5 % {HOST.NAME} {Template OS Windows:vm.memory.size[pused].min(5m)}>=95 Активировано
Средняя Отсутствие свободной RAM памяти {HOST.NAME} {Template OS Windows:vm.memory.size[free].last(0)}<10000 Активировано
Внимание/Предупреждение Память Обмен страниц/с, Файл подкачки чтение с диска, промахи кеша {Template OS Windows:perf_counter_en[440].min(5)}>2500 or {Template OS Windows:perf_counter_en[440].min(3m)}>{Template OS Windows:perf_counter_en[436].min(3m)} and {Template OS Windows:perf_counter_en[442].min(3)}>{Template OS Windows:perf_counter_en[436].min(3m)} and {Template OS Windows:perf_counter_en[4822].min(3)}>{Template OS Windows:perf_counter_en[436].min(3m)} and {Template OS Windows:perf_counter_en[436].min(5m)}<90 or {Template OS Windows:perf_counter_en[436].min(10m)}>3000 Деактивировано
Информационная Память Ошибок страницы/сек {Template OS Windows:perf_counter_en[428].min(5m)}>1000 Активировано
Внимание/Предупреждение Свободного места swap в файла подкачки менее 50% на {HOST.NAME} {Template OS Windows:system.swap.size[,pfree].min(3m)}<50 Активировано
Высокая Свободного места swap подкачки менее 90% на {HOST.NAME} Проблема: {Template OS Windows:system.swap.size[,total].last(0)}<>0 and {Template OS Windows:system.swap.size[,pfree].max(3m)}<=10 or {Template OS Windows:system.swap.size[,total].last(0)}<>0 and {Template OS Windows:system.swap.size[,total].last(0)}-({Template OS Windows:system.swap.size[,used].min(3m)}*1.12)<=0 or {Template OS Windows:system.swap.size[,total].last(0)}<>0 and {Template OS Windows:system.swap.size[,total].last(0)}-({Template OS Windows:system.swap.size[,free].min(3m)}*10)>=0
Восстановление: {Template OS Windows:system.swap.size[,total].last(0)}=0 Активировано
Средняя Слишком много процессов на {HOST.NAME} {Template OS Windows:proc.num[].avg(5m)}>300 Активировано
- Template OS Windows rus Графики
Графики
Свободная память RAM 900 200 Нормальный
Оперативная RAM память в% 900 200 Стэкируемый
Оперативная RAM память Круговой 900 200 Расширенный круговой
Оперативная RAM память 900 200 Стэкируемый
Использование файла подкачки памяти SWAP Круговой 900 200 Круговой
Использование файла подкачки SWAP % 900 200 Стэкируемый
Использование памяти файла подкачки SWAP 900 200 Нормальный
Загрузка процессора CPU 900 200 Нормальный
Комплексные экраны
Производительность системы
- Template OS Windows rus Правила обнаружения
Правила обнаружения
Обнаружение сетевого интерфейса Прототипы элементов данных 22 Прототипы триггеров 14 Прототипы графиков 4 Прототипы узлов сети net.if.discovery 1h Zabbix агент Активировано
Обнаружение службы Windows Прототипы элементов данных 1 Прототипы триггеров 1 Прототипы графиков Прототипы узлов сети service.discovery 1h Zabbix агент Активировано
Смонтированная файловая система обнаружения Прототипы элементов данных 5 Прототипы триггеров 2 Прототипы графиков 1 Прототипы узлов сети vfs.fs.discovery 1h Zabbix агент Активировано
Список обнаружения Физических дисков Прототипы элементов данных 21 Прототипы триггеров 3 Прототипы графиков 6 Прототипы узлов сети disk.spisok.sh[{HOST.CONN},discovery.physical] 1h Внешняя проверка Деактивировано
Список обнаружения Логических дисков Прототипы элементов данных 21 Прототипы триггеров 3 Прототипы графиков 6 Прототипы узлов сети disk.spisok.sh[{HOST.CONN},discovery.logical] 1h Внешняя проверка Деактивировано
Список найденных CPU/CPU ядер Прототипы элементов данных 3 Прототипы триггеров Прототипы графиков Прототипы узлов сети system.cpu.discovery 6h Zabbix агент Деактивировано
Обнаружение сетевого интерфейса
- Template OS Windows rus Правило Обнаружение сетевого интерфейса
Прототипы элементов данных
- Template OS Windows rus Правило Обнаружение сетевого интерфейса Прототипы Элементов
Коллизии за пределами окна (out-of-window) {#IFNAME} net.if.collisions[{#IFNAME}] 1m 1w 365d Zabbix агент Сетевой интерфейс Нет
Входящий трафик кол-во сжатых пакетов {#IFNAME} net.if.in[{#IFNAME},compressed] 1m 1w 365d Zabbix агент Сетевой интерфейс Нет
Входящий трафик кол-во отброшенных пакетов {#IFNAME} net.if.in[{#IFNAME},dropped] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Входящий трафик кол-во ошибок {#IFNAME} net.if.in[{#IFNAME},errors] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Входящий трафик кол-во ошибок кадрирования пакетов {#IFNAME} net.if.in[{#IFNAME},frame] 1m 1w 365d Zabbix агент Сетевой интерфейс Нет
Входящий трафик кол-во кадров многоадресного вещания {#IFNAME} net.if.in[{#IFNAME},multicast] 1m 1w 365d Zabbix агент Сетевой интерфейс Нет
Входящий трафик кол-во ошибок FIFO буфера {#IFNAME} net.if.in[{#IFNAME},overruns] 1m 1w 365d Zabbix агент Сетевой интерфейс Нет
Входящий сетевой трафик пакетов {#IFNAME} net.if.in[{#IFNAME},packets] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Входящий сетевой трафик {#IFNAME} net.if.in[{#IFNAME}] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Исходящий трафик кол-во потерь несущей {#IFNAME} net.if.out[{#IFNAME},carrier] 1m 1w 365d Zabbix агент Сетевой интерфейс Нет
Исходящий трафик кол-во коллизий обнаруженных на {#IFNAME} net.if.out[{#IFNAME},collisions] 1m 1w 365d Zabbix агент Сетевой интерфейс Нет
Исходящий трафик кол-во отброшенных пакетов {#IFNAME} net.if.out[{#IFNAME},dropped] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Исходящий трафик кол-во ошибок {#IFNAME} net.if.out[{#IFNAME},errors] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Исходящий сетевой трафик пакетов {#IFNAME} net.if.out[{#IFNAME},packets] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Исходящий сетевой трафик {#IFNAME} net.if.out[{#IFNAME}] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Суммарное кол-во сжатых пакетов на {#IFNAME} net.if.total[{#IFNAME},compressed] 1m 1w 365d Zabbix агент Сетевой интерфейс Нет
Суммарное кол-во отброшенных пакетов на {#IFNAME} net.if.total[{#IFNAME},dropped] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Суммарное кол-во ошибок на {#IFNAME} net.if.total[{#IFNAME},errors] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Суммарное кол-во ошибок FIFO буфера на {#IFNAME} net.if.total[{#IFNAME},overruns] 1m 1w 365d Zabbix агент Сетевой интерфейс Нет
Суммарный сетевой трафик пакетов на {#IFNAME} net.if.total[{#IFNAME},packets] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
Суммарный сетевой трафик {#IFNAME} net.if.total[{#IFNAME}] 1m 1w 365d Zabbix агент Сетевой интерфейс Да
MAC адрес {#IFNAME} system.hw.macaddr[{#IFNAME},full] 6h 90d Zabbix агент Сетевой интерфейс Да
Прототипы триггеров
- Template OS Windows rus Правило Обнаружение сетевого интерфейса Прототипы Триггеров
Высокая 95% LAN загрузка входящего трафика {#IFNAME} {Template OS Windows:net.if.in[{#IFNAME}].min(10m)}>=95M and {Template OS Windows:net.if.in[{#IFNAME}].min(10m)}<=100M Да
Высокая 95% LAN загрузка входящего трафика {#IFNAME} {Template OS Windows:net.if.in[{#IFNAME}].min(10m)}>=950M and {Template OS Windows:net.if.in[{#IFNAME}].min(10m)}<=1000M Да
Высокая 95% LAN загрузка исходящего трафика {#IFNAME} {Template OS Windows:net.if.out[{#IFNAME}].min(10m)}>=95M and {Template OS Windows:net.if.out[{#IFNAME}].min(10m)}<=100M Да
Высокая 95% LAN загрузка исходящего трафика {#IFNAME} {Template OS Windows:net.if.out[{#IFNAME}].min(10m)}>=950M and {Template OS Windows:net.if.out[{#IFNAME}].min(10m)}<=1000M Да
Высокая 95% LAN загрузка суммарного трафика {#IFNAME} {Template OS Windows:net.if.total[{#IFNAME}].min(10m)}>=95M and {Template OS Windows:net.if.total[{#IFNAME}].min(10m)}<=100M Да
Высокая 95% LAN загрузка суммарного трафика {#IFNAME} {Template OS Windows:net.if.total[{#IFNAME}].min(10m)}>=950M and {Template OS Windows:net.if.total[{#IFNAME}].min(10m)}<=1000M Да
Чрезвычайная Аварийная 100% LAN загрузка входящего трафика {#IFNAME} {Template OS Windows:net.if.in[{#IFNAME}].min(10m)}>=100M and {Template OS Windows:net.if.in[{#IFNAME}].min(10m)}<=950M Да
Чрезвычайная Аварийная 100% LAN загрузка входящего трафика {#IFNAME} {Template OS Windows:net.if.in[{#IFNAME}].min(10m)}>=1000M Да
Чрезвычайная Аварийная 100% LAN загрузка исходящего трафика {#IFNAME} {Template OS Windows:net.if.out[{#IFNAME}].min(10m)}>=100M and {Template OS Windows:net.if.out[{#IFNAME}].min(10m)}<=950M Да
Чрезвычайная Аварийная 100% LAN загрузка исходящего трафика {#IFNAME} {Template OS Windows:net.if.out[{#IFNAME}].min(10m)}>=1000M Да
Чрезвычайная Аварийная 100% LAN загрузка суммарного трафика {#IFNAME} {Template OS Windows:net.if.total[{#IFNAME}].min(10m)}>=100M and {Template OS Windows:net.if.total[{#IFNAME}].min(10m)}<=950M Да
Чрезвычайная Аварийная 100% LAN загрузка суммарного трафика {#IFNAME} {Template OS Windows:net.if.total[{#IFNAME}].min(10m)}>=1000M Да
Внимание/Предупреждение Интерфейс {#IFNAME}: Высокая частота отброшенных пакетов Проблема: {Template OS Windows:net.if.in[{#IFNAME},dropped].avg(5m)}>{$IF_ERRORS_WARN:»{#IFNAME}»} or {Template OS Windows:net.if.out[{#IFNAME},dropped].avg(5m)}>{$IF_ERRORS_WARN:»{#IFNAME}»}
Восстановление: {Template OS Windows:net.if.in[{#IFNAME},dropped].avg(5m)}<{$IF_ERRORS_WARN:»{#IFNAME}»} * 0.8 and {Template OS Windows:net.if.in[{#IFNAME},dropped].avg(5m)}<{$IF_ERRORS_WARN:»{#IFNAME}»} * 0.8 Нет
Внимание/Предупреждение Интерфейс {#IFNAME}: Высокая частота ошибок Проблема: {Template OS Windows:net.if.in[{#IFNAME},errors].avg(5m)}>{$IF_ERRORS_WARN:»{#IFNAME}»} or {Template OS Windows:net.if.out[{#IFNAME},errors].avg(5m)}>{$IF_ERRORS_WARN:»{#IFNAME}»}
Восстановление: {Template OS Windows:net.if.in[{#IFNAME},errors].avg(5m)}<{$IF_ERRORS_WARN:»{#IFNAME}»} * 0.8 and {Template OS Windows:net.if.in[{#IFNAME},errors].avg(5m)}<{$IF_ERRORS_WARN:»{#IFNAME}»} * 0.8 Да
Прототипы графиков
- Template OS Windows rus Правило Обнаружение сетевого интерфейса Прототипы Графиков
Сетевой трафик на {#IFNAME} 900 200 Нормальный
Пакеты Сетевой трафик на {#IFNAME} 900 200 Нормальный
Ошибки на сетевом интерфейсе {#IFNAME} 900 200 Нормальный
Отброшенные на сетевом интерфейсе {#IFNAME} 900 200 Нормальный
Обнаружение службы Windows
- Template OS Windows rus Правило Обнаружение службы Windows
Прототипы элементов данных
- Template OS Windows rus Правило Обнаружение службы Windows Прототипы Элемента данных
Служба «{#SERVICE.NAME}» ({#SERVICE.DISPLAYNAME}) service.info[{#SERVICE.NAME},state] 1m 1w 365d Zabbix агент Службы Да
Прототипы триггеров
- Template OS Windows rus Правило Обнаружение службы Windows Прототипы Триггеров
Средняя Служба «{#SERVICE.NAME}» ({#SERVICE.DISPLAYNAME}) не работает (тип запуска {#SERVICE.STARTUPNAME}) {Template OS Windows:service.info[{#SERVICE.NAME},state].min(#3)}<>0 Да #SERVICE.NAME: {#SERVICE.NAME}{#SERVICE.NAME}
Смонтированная файловая система обнаружения
- Template OS Windows rus Правило Обнаружение Смонтированная файловая система обнаружения
Прототипы элементов данных
- Template OS Windows rus Правило Обнаружение Смонтированная файловая система обнаружения Прототипы элемента данных
Свободное место на диске {#FSNAME} vfs.fs.size[{#FSNAME},free] 1m 1w 365d Zabbix агент Файловая система Да
Свободное место на диске {#FSNAME} (в процентах) vfs.fs.size[{#FSNAME},pfree] 1m 1w 365d Zabbix агент Файловая система Да
Использовано место на диске {#FSNAME} (в процентах) vfs.fs.size[{#FSNAME},pused] 1m 1w 365d Zabbix агент Файловая система Да
Общее место на диске {#FSNAME} vfs.fs.size[{#FSNAME},total] 1h 1w 365d Zabbix агент Файловая система Да
Использованное место на диске {#FSNAME} vfs.fs.size[{#FSNAME},used] 1m 1w 365d Zabbix агент Файловая система Да
Прототипы триггеров
- Template OS Windows rus Правило Обнаружение Смонтированная файловая система обнаружения Прототипы Триггеров
Внимание/Предупреждение Свободное место на диске меньше 15% на томе {#FSNAME}
Зависит от:
Template OS Windows rus: Свободное место на диске составляет менее 1% на томе {#FSNAME}
Проблема: {Template OS Windows:vfs.fs.size[{#FSNAME},pfree].last(0)}<15
Восстановление: {Template OS Windows:vfs.fs.size[{#FSNAME},pfree].last(0)}<2 or {Template OS Windows:vfs.fs.size[{#FSNAME},pfree].last(0)}>15 Да
Чрезвычайная Аварийная Свободное место на диске составляет менее 1% на томе {#FSNAME} {Template OS Windows:vfs.fs.size[{#FSNAME},pfree].last(0)}<1 Да
Прототипы графиков
Использование дискового пространства {#FSNAME} 600 340 Расширенный круговой
Список найденных CPU/CPU ядер
- Template OS Windows rus Правило Обнаружение Список найденных CPU ядер
Прототипы элементов данных
- Template OS Windows rus Правило Обнаружение Список найденных CPU ядер Прототипы элементов данных
Время system затраченное на выполнение системных вызовов (1 мин в среднем) CPU{#CPU.NUMBER}-{#CPU.STATUS} system.cpu.util[{#CPU.NUMBER},system,avg1] 1m 90d 90d Zabbix агент Центральный процессор Да
Время system затраченное на выполнение системных вызовов (5 мин в среднем) CPU{#CPU.NUMBER}-{#CPU.STATUS} system.cpu.util[{#CPU.NUMBER},system,avg5] 1m 90d 90d Zabbix агент Центральный процессор Да
Время system затраченное на выполнение системных вызовов (15 мин в среднем) CPU{#CPU.NUMBER}-{#CPU.STATUS} system.cpu.util[{#CPU.NUMBER},system,avg15] 1m 90d 90d Zabbix агент Центральный процессор Да
Скрипт для дисков disk.spisok.sh
Код: Выделить всё
#!/bin/bash
#2021/08/19 v1.0
# Автор Мамзиков Артём Андреевич Описание по скрипту
# Получение списка Физических Логических дисков
#./net.if.sh 192.168.ххх.ххх discovery 10050, ключ disk.spisok.sh[{HOST.CONN},discovery,{HOST.PORT}]
# {HOST.HOST} -Имя узла сети; {HOST.CONN} -IP адрес или DNS имя узла сети; {HOST.PORT} -Порт узла сети (агента)
if [[ $2 = "discovery.physical" ]]
then
# Список Физический/Логический диск|Удалить шапку|Удалить пустые строки|Удалить пробелы в конце строки и каретку r|Подстановка макроса|зыкрытие }, кроме последней строки| закрытие последней строки}
DISKNUM=$(zabbix_get -s $1 -k system.run["WMIC.exe /NAMESPACE:\rootCIMV2 PATH win32_PerfFormattedData_PerfDisk_PhysicalDisk GET Name"]|sed -e '/Name/d'|sed -e '/^$/d'| sed 's/[ ]*r//'|sed 's/^/t{"{#DISKNUMLET}":"/'|sed '$!s/.$/"},/'|sed '${s/$/"}/}')
# Вариант с портом
#DISKNUM=$(zabbix_get -s $1 -p $3 -k system.run["WMIC.exe /NAMESPACE:\rootCIMV2 PATH win32_PerfFormattedData_PerfDisk_PhysicalDisk GET Name"]|sed -e '/Name/d'|sed -e '/^$/d'| sed 's/[ ]*r//'|sed 's/^/t{"{#DISKNUMLET}":"/'|sed '$!s/.$/"},/'|sed '${s/$/"}/}')
#echo "${DISKNUM}"
# Проверка что ответ не пустой или не ошибка, если пусто то отправляем _Total
if [ -z "${DISKNUM}" ]; then DISKNUM={"{#DISKNUMLET}":"_Total"}
elif [[ "${DISKNUM}" =~ ZBX_NOTSUPPORTED|Timeout|ERROR|WMIC ]]; then DISKNUM={"{#DISKNUMLET}":"_Total"}
fi
#case $DISKNUM in
# *ZBX_NOTSUPPORTED*|*Timeout*)
# DISKNUM={"{#DISKNUMLET}":"_Total"}
# ;;
#esac
# Формируе Вывод
JSONPHY="[n"$DISKNUM"n]"
echo -e "${JSONPHY}"
fi
if [[ $2 = "discovery.logical" ]]
then
# Список Физический/Логический диск|Удалить шапку|Удаление номеров дисков|Удаление пробелов и каретки r|Диски по строкам|Удаление пустых строк|Подстановка макроса|зыкрытие }, кроме последней строки| закрытие последней строки}
FSNAME=$(zabbix_get -s $1 -k system.run["WMIC.exe /NAMESPACE:\rootCIMV2 PATH win32_PerfFormattedData_PerfDisk_PhysicalDisk GET Name"]|sed -e '/Name/d'|sed 's/^[0-9] *//'|tr -d ' r'|sed 's/:/:n/g'|sed -e '/^$/d'| sed 's/^/t{"{#FSNAME}":"/'|sed '$!s/$/"},/'|sed '${s/$/"}/}')
# Вариант с портом
#FSNAME=$(zabbix_get -s $1 -p $3 -k system.run["WMIC.exe /NAMESPACE:\rootCIMV2 PATH win32_PerfFormattedData_PerfDisk_PhysicalDisk GET Name"]|sed -e '/Name/d'|sed 's/^[0-9] *//'|tr -d ' r'|sed 's/:/:n/g'|sed -e '/^$/d'| sed 's/^/t{"{#FSNAME}":"/'|sed '$!s/$/"},/'|sed '${s/$/"}/}')
# Проверка что ответ не пустой или не ошибка, если пусто то отправляем _Total
if [ -z "${FSNAME}" ]; then FSNAME={"{#FSNAME}":"_Total"}
elif [[ "${FSNAME}" =~ ZBX_NOTSUPPORTED|Timeout|ERROR|WMIC ]]; then FSNAME={"{#FSNAME}":"_Total"}
fi
# Формируе Вывод
JSONLOG="[n"$FSNAME"n]"
echo -e "${JSONLOG}"
fi
Список обнаружения Физических дисков
- Template OS Windows rus Правило Обнаружение Список обнаружения Физических дисков
Прототипы элементов данных
- Template OS Windows rus Правило Обнаружение Список обнаружения Физических дисков Прототипы элементов данных
Текущая длина очереди Физического диска {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})198] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Общей загруженность Физического диска в % {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})200] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Общей загруженность чтением Физического диска в % {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})202] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Общей загруженность записью Физического диска в % {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})204] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Среднее время в сек, выполнения Физическим диском одной операции чтения или записи. {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})206] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический дискСреднее время Чтения с диска (с) % {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})208] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический дискСреднее время Записи на диск (с) {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})210] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Общее кол-во операций вводавывода, обработанных Физическим диском за 1 сек {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})212] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Количество обработанных запросов(обращений) на чтение Физическим диском за 1 сек {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})214] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Количество обработанных запросов(обращений) на запись Физическим диском за 1 сек {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})216] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический диск Скорость обмена (байт/с){#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})218] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический диск Скорость Чтения (байт/с) {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})220] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический диск Скорость Записи (байт/с) {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})222] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Среднее кол-во байт, одной операции ЧтенияЗаписи. Физического диска {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})224] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Кол-во байт при одной операции Чтения Физического диска {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})226] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Кол-тво байт, передаваемое при одной операции Записи. Физического диска {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})228] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический диск Кол-во запросов(средняя длина), стоящих в очереди к диску {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})1400] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический диск Кол-во запросов Чтения(средняя длина), стоящих в очереди к диску {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})1402] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический диск Кол-во запросов Записи(средняя длина), стоящих в очереди к диску {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})1404] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический диск простаивает, в % {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})1482] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Физический диск расщеплений операций ввода-вывода за секунду {#DISKNUMLET} perf_counter_en[234({#DISKNUMLET})1484] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Прототипы триггеров
- Template OS Windows rus Правило Обнаружение Список обнаружения Физических дисков Прототипы Триггеров
Внимание/Предупреждение Утилизация физического диска {#DISKNUMLET} {Template OS Windows:perf_counter_en[234({#DISKNUMLET})1482].last()}<20 Нет
Внимание/Предупреждение Физический дискСреднее время чтения с диска у {#DISKNUMLET} {Template OS Windows:perf_counter_en[234({#DISKNUMLET})208].last()}>12 Да
Внимание/Предупреждение Физический диск Кол-во запросов, стоящих в очереди к диску {#DISKNUMLET} {Template OS Windows:perf_counter_en[234({#DISKNUMLET})1400].min(5)}>8 Да
Прототипы графиков
- Template OS Windows rus Правило Обнаружение Список обнаружения Физических дисков Прототипы Графиков
Средняя Длина Очереди(Запросов) Физического диска {#DISKNUMLET} 900 200 Нормальный
Среднее кол-во байт, одной операции Физического диска {#DISKNUMLET} 900 200 Нормальный
Среднее время сек обращения к Физическим дискам {#DISKNUMLET} 900 200 Нормальный
Скорость обмена (байт/с) Физического диска {#DISKNUMLET} 900 200 Нормальный
Кол-во обращений в секунду Физического диска {#DISKNUMLET} 900 200 Нормальный
Активное Время % Физического диска {#DISKNUMLET} 900 200 Нормальный
Список обнаружения Логических дисков
- Template OS Windows rus Правило Обнаружение Список обнаружения Логических дисков
Прототипы элементов данных
- Template OS Windows rus Правило Обнаружение Список обнаружения Логических дисков Прототипы Элементов данных
Текущая длина очереди Логического диска {#FSNAME} perf_counter_en[236({#FSNAME})198] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Общей загруженность Логического диска в % {#FSNAME} perf_counter_en[236({#FSNAME})200] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Общей загруженность чтением Логического диска в % {#FSNAME} perf_counter_en[236({#FSNAME})202] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Общей загруженность записью Логического диска в % {#FSNAME} perf_counter_en[236({#FSNAME})204] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Среднее время в сек, выполнения Логическим диском одной операции чтения или записи. {#FSNAME} perf_counter_en[236({#FSNAME})206] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический дискСреднее время Чтения с диска (с) % {#FSNAME} perf_counter_en[236({#FSNAME})208] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический дискСреднее время Записи на диск (с) {#FSNAME} perf_counter_en[236({#FSNAME})210] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Общее кол-во операций вводавывода, обработанных Логическим диском за 1 сек {#FSNAME} perf_counter_en[236({#FSNAME})212] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Количество обработанных запросов(обращений) на чтение Логическим диском за 1 сек {#FSNAME} perf_counter_en[236({#FSNAME})214] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Количество обработанных запросов(обращений) на запись Логическим диском за 1 сек {#FSNAME} perf_counter_en[236({#FSNAME})216] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический диск Скорость обмена (байт/с) {#FSNAME} perf_counter_en[236({#FSNAME})218] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический диск Скорость Чтения (байт/с) {#FSNAME} perf_counter_en[236({#FSNAME})220] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический диск Скорость Записи (байт/с) {#FSNAME} perf_counter_en[236({#FSNAME})222] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Среднее кол-во байт, одной операции ЧтенияЗаписи. Логического диска {#FSNAME} perf_counter_en[236({#FSNAME})224] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Кол-во байт при одной операции Чтения Логического диска {#FSNAME} perf_counter_en[236({#FSNAME})226] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Кол-во байт, передаваемое при одной операции Записи Логического диска {#FSNAME} perf_counter_en[236({#FSNAME})228] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический диск Кол-во запросов(средняя длина), стоящих в очереди к диску {#FSNAME} perf_counter_en[236({#FSNAME})1400] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический диск Кол-во запросов Чтения(средняя длина), стоящих в очереди к диску {#FSNAME} perf_counter_en[236({#FSNAME})1402] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический диск Кол-во запросов Записи(средняя длина), стоящих в очереди к диску {#FSNAME} perf_counter_en[236({#FSNAME})1404] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический диск простаивает, в % {#FSNAME} perf_counter_en[236({#FSNAME})1482] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Логический диск расщеплений операций ввода-вывода за секунду {#FSNAME} perf_counter_en[236({#FSNAME})1484] 1m 90d 90d Zabbix агент (активный) Производительность, Файловая система Да
Прототипы триггеров
- Template OS Windows rus Правило Обнаружение Список обнаружения Логических дисков Прототипы Триггеров
Внимание/Предупреждение Логический дискСреднее время записи на диск (с) {#FSNAME} {Template OS Windows:perf_counter_en[236({#FSNAME})210].last()}>0.06 Да
Внимание/Предупреждение Логический дискСреднее время чтения с диска {#FSNAME} {Template OS Windows:perf_counter_en[236({#FSNAME})208].last()}>0.6 Да
Внимание/Предупреждение Логический диск Кол-во запросов, стоящих в очереди к диску {#FSNAME} {Template OS Windows:perf_counter_en[236({#FSNAME})1400].min(5)}>8 Да
Прототипы графиков
- Template OS Windows rus Правило Обнаружение Список обнаружения Логических дисков Прототипы Графиков
Средняя Длина Очереди(Запросов) Логического диска {#FSNAME} 900 200 Нормальный
Среднее кол-во байт, одной операции Логического диска {#FSNAME} 900 200 Нормальный
Среднее время сек обращения к Логическим дискам {#FSNAME} 900 200 Нормальный
Скорость обмена (байт/с) Логического диска {#FSNAME} 900 200 Нормальный
Кол-во обращений в секунду Логического диска {#FSNAME} 900 200 Нормальный
Активное Время % Логического диска {#FSNAME} 900 200 Нормальный
Данные настройки шаблона связаны с настройками шаблона графаны
Внизу поста
Проверка текущего времени узла сети
Проверка расхождения времени влияет на активные проверки и на элементы сравнения по времени.
Системное время.
Ключ system.localtime[<тип>]
utc — (по умолчанию) время с начала Эпохи (00:00:00 UTC, Январь 1, 1970), измеренное в секундах.
local — время в формате ‘гггг-мм-дд,чч:мм:сс.ннн,+чч:мм’
Проверка в терминале заббикс сервера
zabbix_get -s 192.168.175.9 -p 10050 -k system.localtime Ответ 1645882547
zabbix_get -s 192.168.175.9 -p 10050 -k system.localtime[local] Ответ 2022-02-26,16:37:05.397,+03:00
Функция
fuzzytime секунды — Проверка, на сколько отличается штамп времени значения элемента данных от времени Zabbix сервера.
Возвращает:
1 — если разница между штампом времени значения элемента данных и штампом времени Zabbix сервера меньше или равна сек секунд
0 — в противном случае.
Пример: fuzzytime(60)=0 > обнаружение проблемы, если разница во времени больше 60 секунд
Создаем элементы данных:
Имя: Местное время хоста
Тип: Zabbix агент
Ключ: system.localtime
Тип информации: Числовой (целое положительное)
Единица измерения: unixtime
Группа: Операционная система
Интервал обновления: 1m
Описание:
Системное время.
utc — (по умолчанию) время с начала Эпохи (00:00:00 UTC, Январь 1, 1970), измеренное в секундах.
local — время в формате ‘гггг-мм-дд,чч:мм:сс.ннн,+чч:мм’
В данном элементе данных может получаться большая погрешность, если интервал обновления будет большой (несколько минут),
а проверяемая разница небольшая (десятки секунд) в триггере
Еще создадим вычисляемый элемент данных с функцией fuzzytime вычисляемое значение сразу в элементе.
Имя: Местное время хоста 2
Тип: Вычисляемое
Ключ: system.localtime.fuzzytime
Формула: fuzzytime(system.localtime,60)
Тип информации: Числовой (целое положительное)
Единица измерения: unixtime
Группа: Операционная система
Интервал обновления: 1m
Описание:
Системное время.
utc — (по умолчанию) время с начала Эпохи (00:00:00 UTC, Январь 1, 1970), измеренное в секундах.
local — время в формате ‘гггг-мм-дд,чч:мм:сс.ннн,+чч:мм’
В данном случае функция fuzzytime сравнивает время
на сервере zabbix и локальным временем наблюдаемого узла.
Если разница больше 60 секунд,
функция возвратит 0, если меньше, то 1
- Текущее время узла Элемент данных zabbix windows
ТРИГГЕРЫ
Имя: Время Windows {HOST.HOST} отличается от времени Zabbix Server
Важность: Информационная
Выражение: {Template OS Windows:system.localtime.fuzzytime(60)}=0
Разрешить закрывать вручную: V
Описание:
fuzzytime (сек)
1 — если разница между штампом времени значения элемента данных и штампом времени Zabbix сервера меньше или равна сек секунд
0 — в противном случае
Последнее значение:
{ITEM.VALUE}
{ITEM.LASTVALUE}
Имя: Время Windows {HOST.HOST} отличается от времени Zabbix Server
Важность: Информационная
Выражение: {Template OS Windows:system.localtime.fuzzytime.sum(#3)}=0
Разрешить закрывать вручную: V
Описание:
Если 3 последние проверки были с ошибкой, то их сумма будет равно 0.
Триггер сработает.
Как только время будет синхронизировано, триггер выйдет из проблемы
Последнее значение:
{ITEM.VALUE}
{ITEM.LASTVALUE}
Если 3 последних 0 т.е. 0+0+0 = 0 значит триггер срабатывает у нас есть расхождение более чем на 1 минуту
- Проверка времени на узлах триггеры
Действие на синхронизацию времени при срабатывании триггера
- Действие на синхронизацию времени.jpg
Команда net time \192.168.ххх.ххх /set /y
Или стандартные если на них есть доступ
time.windows.com
time.nist.gov
time-nw.nist.gov
time-a.nist.gov
time-b.nist.gov
time-b-wwv.nist.gov
time-e-wwv.nist.gov
time-e-g.nist.gov
time-a-g.nist.gov
utcnist.colorado.edu
ntp-d.nist.gov
ntp-b.nist.gov
Как настроить службу на Windows Пост ВК от 2012г Синхронизация времени в локальной сети
Добавлено Синхронизация даты и сделано 3 попытки через 5 минут
- Синхронизация даты и времени Windows
date /T {$DATEDD.MM.YYYY}
time /t {TIME}
date {$DATEDD.MM.YYYY}
time {TIME}
net time \192.168.***.*** /set /y
net time \192.168.***.*** /set /y
Как сделать текущую дату в глобальный макрос разбирали тут В середине поста ТЕКУЩАЯ ДАТА в Элементе данных , макрос в zabbix
Как убрать лишние сетевые интерфейсы
Например у нас есть 2 интерфейса одного узла
Realtek PCIe GBE Family Controller и
TAP-Windows Adapter V9 for OpenVPN Connect
- Сетевые интерфейсы пример.jpg
Такой список интерфейсов получаем командой net.if.discovery
{«{#IFNAME}»:»RAS Async Adapter»},
{«{#IFNAME}»:»Software Loopback Interface 1″},
Подключение по локальной сети:
{«{#IFNAME}»:»Realtek PCIe GBE Family Controller»},
{«{#IFNAME}»:»Realtek PCIe GBE Family Controller-QoS Packet Scheduler-0000″},
{«{#IFNAME}»:»Realtek PCIe GBE Family Controller-WFP LightWeight Filter-0000″},
Подключение по локальной сети: «От ПО OpenVPN»
{«{#IFNAME}»:»TAP-Windows Adapter V9 for OpenVPN Connect»},
{«{#IFNAME}»:»TAP-Windows Adapter V9 for OpenVPN Connect-QoS Packet Scheduler-0000″},
{«{#IFNAME}»:»TAP-Windows Adapter V9 for OpenVPN Connect-WFP LightWeight Filter-0000″},
Туннельный адаптер Teredo Tunneling Pseudo-Interface:
{«{#IFNAME}»:»Teredo Tunneling Pseudo-Interface»},
Туннельный адаптер isatap:
{«{#IFNAME}»:»Адаптер Microsoft ISATAP»},
{«{#IFNAME}»:»Адаптер Microsoft ISATAP #2″},
{«{#IFNAME}»:»Адаптер Microsoft ISATAP #3″},
Программная реализация сетевых протоколов:
{«{#IFNAME}»:»WAN Miniport (IP)»},
{«{#IFNAME}»:»WAN Miniport (IP)-QoS Packet Scheduler-0000″},
{«{#IFNAME}»:»WAN Miniport (IPv6)»},
{«{#IFNAME}»:»WAN Miniport (IPv6)-QoS Packet Scheduler-0000″},
{«{#IFNAME}»:»WAN Miniport (L2TP)»},
{«{#IFNAME}»:»WAN Miniport (PPPOE)»},
{«{#IFNAME}»:»WAN Miniport (PPTP)»},
{«{#IFNAME}»:»WAN Miniport (SSTP)»},
{«{#IFNAME}»:»WAN Miniport (IKEv2)»},
{«{#IFNAME}»:»WAN Miniport (Network Monitor)»},
{«{#IFNAME}»:»WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000″},
Так же нашлись
Устройства предустановленные в системе,
устройства которые были когда-то подключены,но небыли удалены драйвера после отключения устройства,
так же созданные подключения (VPN PPPOE и тд) или ПО которое создает сетевой интерфейс
{«{#IFNAME}»:»Устройства Bluetooth (личной сети)»},
{«{#IFNAME}»:»Устройство Bluetooth (протокол RFCOMM TDI)»},
{«{#IFNAME}»:»Remote NDIS based Internet Sharing Device»},
{«{#IFNAME}»:»RemoteNDIS based Internet Sharing Device #2″},
{«{#IFNAME}»:»USB-адаптер беспроводных сетей 802.11 USB Wireless LAN»},
{«{#IFNAME}»:»802.11n USB Wireless LAN Card»}
Просмотреть командой через cmd
ipconfig /all
netsh interface show interface
Ключ заббикса net.if.list дает следующий ответ
zabbix_get -s 192.168.xxx.xxx -k net.if.list
Other unknown — Устройство Bluetooth (протокол RFCOMM TDI)
Other unknown — Remote NDIS based Internet Sharing Device #2
Ethernet enabled — WAN Miniport (IPv6)
Ethernet enabled — WAN Miniport (Network Monitor)
Ethernet enabled — Realtek PCIe GBE Family Controller-QoS Packet Scheduler-0000
Ethernet enabled — Realtek PCIe GBE Family Controller-WFP LightWeight Filter-0000
Ethernet enabled — WAN Miniport (IP)
Ethernet enabled — WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000
Ethernet enabled 192.168.xxx.xxx Realtek PCIe GBE Family Controller
Ethernet enabled — WAN Miniport (IP)-QoS Packet Scheduler-0000
Ethernet enabled — WAN Miniport (IPv6)-QoS Packet Scheduler-0000
Ethernet unknown — Устройства Bluetooth (личной сети)
Ethernet unknown — Remote NDIS based Internet Sharing Device
PPP enabled — WAN Miniport (PPPOE)
PPP enabled — RAS Async Adapter
Software Loopback enabled 127.0.0.1 Software Loopback Interface 1
unknown enabled — TAP-Windows Adapter V9 for OpenVPN Connect
unknown enabled — TAP-Windows Adapter V9 for OpenVPN Connect-QoS Packet Scheduler-0000
unknown enabled — TAP-Windows Adapter V9 for OpenVPN Connect-WFP LightWeight Filter-0000
IEEE 802.11 Wireless unknown — USB-адаптер беспроводных сетей 802.11 USB Wireless LAN
IEEE 802.11 Wireless unknown — 802.11n USB Wireless LAN Card
Tunnel type encapsulation enabled — WAN Miniport (SSTP)
Tunnel type encapsulation enabled — WAN Miniport (IKEv2)
Tunnel type encapsulation enabled — WAN Miniport (L2TP)
Tunnel type encapsulation enabled — WAN Miniport (PPTP)
Tunnel type encapsulation enabled — Адаптер Microsoft ISATAP
Tunnel type encapsulation enabled — Teredo Tunneling Pseudo-Interface
Tunnel type encapsulation enabled — Адаптер Microsoft ISATAP #2
Tunnel type encapsulation enabled — Адаптер Microsoft ISATAP #3
В правиле обнаружения вкладка Фильтры
{#IFNAME} совпадает @Network interfaces for discovery
- Фильтр для Обнаружение сетевого интерфейса
Далее идем Администрирование -> Регулярные выражения -> Network interfaces for discovery
- Регулярное выражение Network interfaces for discovery
Далее меняем/добавляем регулярки, для того чтоб убрать лишние сетевые интерфейсы
- Глобальные регулярные выражения
Используется как для Windows так и для Linux! Так же может применятся в других шаблонах таких как SNMP
Стандартно
^Software Loopback Interface [Результат ЛОЖЬ]
^(In)?[Ll]oop[Bb]ack[0-9._]*$ [Результат ЛОЖЬ]
^NULL[0-9.]*$ [Результат ЛОЖЬ]
^[Ll]o[0-9.]*$ [Результат ЛОЖЬ]
^[Ss]ystem$ [Результат ЛОЖЬ]
^Nu[0-9.]*$ [Результат ЛОЖЬ]
Некоторый список для Windows что можно скрыть, стоит учесть если вы начнете пользоватся данным адаптером, а он у вас скрыт для обнаружения и данные для этого интерфейся вы получать не будете!!!
^WAN Miniport [Результат ЛОЖЬ]
^Microsoft Loopback [Результат ЛОЖЬ]
^RAS Async Adapter [Результат ЛОЖЬ]
^MS TCP Loopback interface [Результат ЛОЖЬ]
^WAN Miniport (Network Monitor)-QoS [Результат ЛОЖЬ]
^WAN Miniport (Network Monitor)-Symantec [Результат ЛОЖЬ]
^lo$ [Результат ЛОЖЬ]
^Software Loopback Interface [Результат ЛОЖЬ]
^Teredo Tunneling [Результат ЛОЖЬ]
^Microsoft ISATAP [Результат ЛОЖЬ]
^vmxnet3 Ethernet Adapter-WFP [Результат ЛОЖЬ]
LightWeight Filter [Результат ЛОЖЬ]
QoS Packet Scheduler [Результат ЛОЖЬ]
Symantec Endpoint Protection [Результат ЛОЖЬ]
Microsoft Kernel Debug Network Adapter [Результат ЛОЖЬ]
RAS асинхронный адаптер [Результат ЛОЖЬ]
Адаптер Microsoft ISATAP [Результат ЛОЖЬ]
WFP LightWeight Filter [Результат ЛОЖЬ]
RAS Async Adapter [Результат ЛОЖЬ]
network traffic on WAN Miniport [Результат ЛОЖЬ]
Сетевой адаптер с отладкой ядра [Результат ЛОЖЬ]
Туннельный адаптер Microsoft Teredo [Результат ЛОЖЬ]
Мини-порт глобальной сети [Результат ЛОЖЬ]
Kaspersky Lab NDIS [Результат ЛОЖЬ]
Microsoft Kernel Debug Network Adapter [Результат ЛОЖЬ]
WFP 802.3 MAC Layer LightWeight Filter [Результат ЛОЖЬ]
WFP Native MAC Layer LightWeight Filter [Результат ЛОЖЬ]
QoS Packet Scheduler [Результат ЛОЖЬ]
^Software Loopback Interface [Результат ЛОЖЬ]
^lo$ [Результат ЛОЖЬ]
можно создать регулярное выражение, которое исключает несколько подстрок, так:
^((?!()|()|()).*)$
Сами подстроки пихать в пустые скобки.
Еще варианты переделать ключ с
net.if.discovery на wmi.getll
wmi.getll — работает с версии 4.4 wmi.getall[<пространство_имён>,<запрос>]
Обнаружение с использованием WMI запросов
Исходник агента
{«wmi.get», CF_HAVEPARAMS, WMI_GET, «root\cimv2,select Caption from Win32_OperatingSystem»},
{«wmi.getall», CF_HAVEPARAMS, WMI_GETALL, «root\cimv2,select * from Win32_OperatingSystem»},
Через скрипт powershell
сеть через
Get-WmiObject Win32_NetworkInterface
Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface обнаруживается
Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface | select name |where-object {$_.name -notlike ‘*isatap*’} | Where-Object {$_.name -notlike ‘*Teredo*’}
Еще один запрос обнаружения
LLD. в связи с тем что net.if.discovery уже был занят.
я создал Alias=net.if.discovery.error:net.if.discovery
Alias=net.if.discovery_v:net.if.discovery
На новых версиях 5 Есть Модули
Черз скрипт
net.if.discovery поменять на net.if.sh Внешняя проверка
ключ net.if.sh {HOST.CONN} {HOST.PORT} discovery
Скопировать его в /usr/local/share/zabbix/externalscripts
#!/bin/bash
#2021/07/06 v1.0
# Автор Мамзиков Артём Андреевич Описание по скрипту
# Получение списка Интерфейсов Windows которые в статусе подключены или находятся в папке Сетевые подключения
#./net.if.sh 192.168.221.89 10050 discovery , ключ net.if.sh {HOST.CONN} {HOST.PORT} discovery
# {HOST.HOST} -Имя узла сети; {HOST.CONN} -IP адрес или DNS имя узла сети; {HOST.PORT} -Порт узла сети (агента)
if [[ $3 = «discovery» ]]
then
# Запрос Сетевых интерфейсов
get=`zabbix_get -s $1 -p $2 -k system.run[«netsh interface show interface»]`
#Убрать первые 3 строки|Если коректно не отображается русский перекодируем из cp866 в utf8 или cp1251 в utf8|выбираем включенный|добавление табуляции от 3х пробелов|выводим последний столбец название адаптера|удалить пустую строку|удалить перенос каретки
kodr=$(echo «${get}»|tail -n +4|iconv -f cp866 -t utf8|sed -n ‘/Connected |подключен |enabled |включен /Ip’|sed -E ‘s/ ([^ ])/t1/g; s/^1/1t/;’|awk -F\t ‘{print $4}’|sed -e ‘/^$/d’|tr -d ‘r’)
kodir=$(echo «${get}»|tail -n +4|iconv -f cp1251 -t utf8|grep -i -E -w «Connected|Подключен|enabled|включен»|sed -E ‘s/ ([^ ])/t1/g; s/^1/1t/;’|awk -F\t ‘{print $4}’|sed -e ‘/^$/d’|tr -d ‘r’)
#echo «${kodr}»
#echo «${kodir}»
# Текущие настройки протокола TCP/IP
info=`zabbix_get -s $1 -p $2 -k system.run[«ipconfig /all»]`
# Получаем описание|меняем кодировку|находим строку и выводим еще 4 ниже|выбираем 1 строку|Обрезаем все лишнее
NAME=$(echo «${info}»|iconv -f cp866 -t utf8|grep -i -A 4 -E -w «${kodr}»:|grep -i -E -w «Описание.|Description.»|sed ‘s|.*. : ||’)
NAMEP=$(echo «${info}»|iconv -f cp1251 -t utf8|grep -i -A 4 -E -w «${kodr}»:|grep -i -E -w «Описание.|Description.»|sed ‘s|.*. : ||’)
#echo «${NAME}»
#echo «${NAMEP}»
# Список Интерфейсов| подставить макрос| закрытие скобки| удаление табуляции и переноса строк| удаление последней запятой| Сделаем читаемый вид
obr=`echo «${NAME}»| sed ‘s/^/t{«{#IFNAME}»:»/’| sed ‘s/.$/»},/’| tr -d ‘tn’| sed ‘s/,+$//’| sed ‘s/.*»},/»},n/g’`
obrp=`echo «${NAMEP}»| sed ‘s/^/t{«{#IFNAME}»:»/’| sed ‘s/.$/»},/’| tr -d ‘tn’| sed ‘s/,+$//’| sed ‘s/.*»},/»},n/g’`
# Проверка правильного декодирования, по параметру что чтрока не пустая
# Если данные есть выводим их CP866
if [ -n «${kodr}» ]; then NAMELAN=»${obr}»
# Если данные есть выводим их CP1251
elif [ -n «${kodir}» ]; then NAMELAN=»${obrp}»
fi
# Формируе Вывод
JSON=»{«data»:[n»»${NAMELAN}»»n]}»
fi
echo -e «${JSON}»
Для триггера
Общая скорость 1000 или 100 мбит =100%
нам нужно получить 95% занято или 5% свободно, будем приравнивать к 0
текущую скорость нам необходимо умножить на х% , что бы при показателе 950 или 95 умножив на X получится сумма равная или большая от общей скорости (1000 и 100)
Получаем 1000-(950*Х)<=0
Получим Х
1000/1000=1 (100%)
1000/950=1,052 (95%)
1000/750=1.333 (75%)
1000/500=2 (50%)
1000/300=3,333 (30%)
Получаем
1000-(950*1.053)<=0
100-(95*1.053)<=0
Выходит 1 триггер под оба варианта.
Также нужно сделать чтоб триггер не срабатывал на отключеный порт со скорость 0
{Шаблон:Элемент данных.last(0)}<>0 and
{Шаблон:Элемент данных.last()}-({Шаблон:Элемент данных.min(3m)}*1.053)<=0
Содержание
- Мониторинг smart hdd zabbix windows
- Zabbix: LLD-мониторинг дисков без UserParameter и скриптов на агентах
- Настройка агента
- Smartmontools
- Скрипт
- Шаблон
- S.M.A.R.T + Zabbix | Windows
- Возможности решения
- Подготовка Zabbix-Server
- Подготовка Zabbix-Agent Windows
- Результат
- ТраблШутинг
- Zabbix мониторим жесткие диски Windows при помощи S.M.A.R.T
- Zabbix + S.M.A.R.T.
- S.M.A.R.T.
- Available solutions
- SMART by Zabbix agent 2
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- References
- Template Module SMART by Zabbix agent 2
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- References
- SMART by Zabbix agent 2
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
- References
- Template Module SMART by Zabbix agent 2
- Overview
- Setup
- Zabbix configuration
- Macros used
- Template links
- Discovery rules
- Items collected
- Triggers
- Feedback
Мониторинг smart hdd zabbix windows
Пришла пора брать под контроль рабочие станции обычных пользователей. Поскольку компы работают уже не первый год хотелось бы быть в курсе здоровья жёсткого диска. Это позволит заранее организовать замену при большом количестве сбойных секторов. Представим, что мы находимся в домене, не важно с каким количеством машин. Это позволит нам автоматизировать процесс установки Zabbix-агента на рабочие станции.
Приступим. В первую очередь нам нужно подготовить конфигурацию. Для этого в файле zabbix_agentd.win.conf достаточно поместить содержимое:
Для мониторинга «жизненно важных» значений SMART HDD, достаточно использовать только строки с RAW_VALUE и VALUE. Остальные значения SMART может быть пригодятся, их можно оставить.
Или если на команду
диски определяются как
то в конфигу Zabbix агента нужно добавить строку
Ключ в элементах данных будет выглядеть, например, так:
Об остальных параметрах Zabbix-Агента рассказывать нет смысла, всё должно быть предельно понятно.
Пришло время распространить Zabbix-агент и smartmontools на рабочие станции. Весь этот пакет файлов я запихал в один архив. Кому нравится устанавливать отдельно, милости просим сюда и сюда. Директорию zabbix32 из архива мне показалось правильным запихать в директорию Windows, что бы особо продвинутые пользователи её не удалили. Хотя, с нашим скриптом который будет распространять директорию и запускать службу нам и это не страшно.
Создаём групповую политику для компьютера, которая будет запускать скрипт на рабочих станциях при старте системы. Содержимое скрипта:
Этот скрипт, при запуске на рабочей стануции, проверяет запущена ли служба с именем Zabbix Agent. Если да, то «что-то» незаметно сообщает. Если нет, то запускает копирование директории zabbix32 из директории с GPO в папку Windows на рабочей станции, устанавливает и запускает службу. Уникальный код политики не забываем поменять в пути скрипта.
Если служба установлена, порт TCP 10050 открыт, можно проверить работоспособность схемы. На Zabbix сервере должен быть установлен пакет zabbix-get:
и проверяем работоспособность, например:
Если в ответ получили значение, то всё отлично. Можно приступать к созданию графиков. Их можно создать по аналогии с зарисовкой по настройке мониторинга SMART, но для компов на Linux.
Источник
Zabbix: LLD-мониторинг дисков без UserParameter и скриптов на агентах
В предыдущей статье я описал низкоуровневый мониторинг дисков для Windows-машин. Считаю, что статья получилась достаточно успешная. Поэтому пришло время ее фактически уничтожить. Ниже будет описан универсальный прием для Windows- и Linux-машин, для которых вообще не нужны скрипты и UserParameter’ы.
Идея простая: все необходимое от smartmontools Zabbix-сервер будет получать через внешнюю обработку и zabbix_get, парсить и передавать далее в зависимые элементы (появились в Zabbix 3.4). Такие образом не только сокращается количество обращений к наблюдаемому серверу, но и не расходуются его ресурсы, так как парсинг происходит на стороне Zabbix-сервера.
Одно ограничение на данный момент: мониторинг дисков только формата /dev/sd*. Формат /dev/csmi*,* (Intel Matrix RAID) не поддерживается ввиду того, что zabbix_get считает запятую вторым аргументом. Поправьте меня, если я ошибаюсь.
Что понадобится для реализации:
Настройка агента
Единственное, что заслуживает здесь внимания, это необходимость раскомментировать строку EnableRemoteCommands = 1, иначе агент не сможет принимать команды.
Smartmontools
Установка тривиальна и рассматриваться не будет, однако для Linux есть одна необходимость: для того, чтобы запуск проходил без sudo, необходимо установить бит SUID на файл smartctl. Для Ubuntu это — sudo chmod u+s /usr/sbin/smartctl.
Скрипт
В зависимости от вашего файла конфигурации zabbix_server.conf этот скрипт нужно положить в соответствующую директорию на Zabbix-сервер. По умолчанию для Ubuntu это — /usr/lib/zabbix/externalscripts. Не забывайте дать на файл права на выполнение — sudo chmod 775 /usr/lib/zabbix/externalscripts/smartctl.sh.
Шаблон
Ниже я постараюсь подробно описать что же происходит на каждом этапе.
Первый этап: обнаружение доступных дисков sd* с помощью внешней проверки smartctl.sh с ключами и discovery. В ответ сервер получает JSON с дисками, на которых активирована функция SMART. Диски без SMART’а или не sd* не выводятся.
Третий этап: Info и Attr разбираются на зависимые элементы с помощью предобработки регулярными выражениями. Это самая простая часть. Собственно, вам только останется подогнать под себя «регулярку».
Вот и все. Не нужно держать в голове что и куда положить, отключить ли политику выполнения скриптов PS, отслеживать ту же версию PS. А в случае необходимости все изменения производятся на самом Zabbix’е в веб-интерфейсе.
В итоге хотелось бы просто сказать спасибо Алексею alexvl и его команде за качественный продукт, который не перестает радовать новым функционалом. Особенно за предобработку. Жизнь с ней администратору станет гораздо легче.
Источник
S.M.A.R.T + Zabbix | Windows
Наткнулся на статью сис.админа Zerox на счёт мониторинга S.M.A.R.T. диска средствами Zabbix. Но что-то у меня никак не получалось по его записи. Поэтому я опишу свой опыт настройки это необходимой вещи.
Если вы здесь потому что вы начали майнить Chia можете написать мне все мои Контакты, могу предложить услугу по внедрению этого решения на ваши фермы, уже есть опыт.
Будем разворачивать решение с Github. По сути, эта запись просто перевод с небольшими пояснениями. 🙂
Все необходимые компоненты я сложил в архив, который можно скачать с Я.Диска (если ссылка сломалась пишите к комменты, стучите на почту, смотрите на github).
Возможности решения
Данное решает такие задачи:
Подготовка Zabbix-Server
Всё, что Вам потребуется, это добавить замечательный шаблон в свой Zabbix.
Подготовка Zabbix-Agent Windows
Установка smartmontools
Ничего необычного, просто устанавливаем smartmontools, как обычную программу. Единственный момент, не рекомендую менять путь, иначе его надо будет менять в конфиге агента и в скрипте.
Конфигурирование агента
Создаем папку scripts и помещаем туда наш скрипт smartctl-disks-discovery.ps1
Открываем zabbix_agentd.conf и правим
И добавляем пользовательскую проверку
Осталось перезапустить агента и привязать наш хост к шаблону.
Примерно через час прилетят данные. (Для отладки можно поменять время обнаружения, я обычно ставлю 10 минут, меняем 1h на 10m. Главное, не забыть обратно вернуть).
Результат
Таким образом мы настроили мониторинг SSD и HDD дисков. Данное решение отлично показывает себя в проде. По критически важным дискам можно строить вот такие информативные графики. Мне нравится 🙂
ТраблШутинг
У меня такая проблема возникала, когда забыл ставить smartmontools
Источник
Zabbix мониторим жесткие диски Windows при помощи S.M.A.R.T
В данной статье будем прикручивать к Zabbix мониторинг жестких дисков Windows, для мониторинга жестких дисков Linux (Ubuntu) смотрите в этой статье.
Начнем с установки Smartmontools в Windows, скачиваем smartmontools от сюда выбираем последнюю версию (на момент написания статьи была использована версия smartmontools-5.41-1.win32-setup.exe) и устанавливаем (ничего не меняя, Далее..).
Добавляем строки в C:Program FilesZabbix Agentzabbix-agentd.conf:
Перезапускаем службу zabbix агента в Windows:
Пробуем получить с Zabbix-agent информацию о температуре жесткого диска. Это делается там, где установлен Zabbix сервер.
Остается сделать шаблон на web морде Zabbix сервера, смотрите в этой статье.
При проверке температуры Windows в ключе запроса нужно указывать sda
А можете подсказать немного по коду?
У меня при команде на виндовой машине
smartctl 6.1 2013-03-16 r3800 [i686-w64-mingw32-2008-sp2] (sf-6.1-1)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, http://www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK
А если на сервере с zabbix’ом выполнить команду
То выходит пустая строка.
Что нужно изменить, чтобы исправить это?
необходимо добавь в конфиг агента (zabbix_agentd.conf) параметр UnsafeUserParameters=1
иначе в командах недопустимы символы: ‘ ” ` *? [ ]
Дружище можно вопрос:
В отзывах о жёстком диске WD RE WD2000FYYZ говорится о каком-то TLER, который надо отключать если диск не в Рэйде, вот ссылка: http://www.ulmart.ru/goods/373048
Не подскажете о чём идёт речь, и как это задействовать?
Источник
Zabbix + S.M.A.R.T.
S.M.A.R.T.
S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology; often written as SMART) is a monitoring system included in computer hard disk drives (HDDs), solid-state drives (SSDs), and eMMC drives
Available solutions
Also available for: 5.0
SMART by Zabbix agent 2
Overview
For Zabbix version: 5.4 and higher
The template for monitoring S.M.A.R.T. attributes of physical disk that works without any external scripts.
It collects metrics by Zabbix agent 2 version 5.0 and later with Smartmontools version 7.1 and later.
Disk discovery LLD rule finds all HDD, SSD, NVMe disks with S.M.A.R.T. enabled. Attribute discovery LLD rule finds all Vendor Specific Attributes
for each disk. If you want to skip some attributes, please set regular expressions with disk names in <$SMART.DISK.NAME.MATCHES>
and with attribute IDs in <$SMART.ATTRIBUTE.ID.MATCHES>macros on the host level.
This template was tested on:
Setup
Install the Zabbix agent 2 and Smartmontools 7.1.
Zabbix configuration
No specific Zabbix configuration is required.
Macros used
This macro is used in overrides of attribute discovery for filtering IDs. It can be overridden on the host or linked template level.
This macro is used in overrides of attribute discovery for filtering IDs. It can be overridden on the host or linked template level.
This macro is used for trigger expression. It can be overridden on the host or linked template level.
This macro is used for trigger expression. It can be overridden on the host or linked template level.
Template links
There are no template links in this template.
Discovery rules
Discovery SMART disks.
ZABBIX_PASSIVE smart.disk.discovery
Overrides:
Discovery SMART Vendor Specific Attributes of disks.
ZABBIX_PASSIVE smart.attribute.discovery
Overrides:
Items collected
Group | Name | Description | Type | Key and additional info | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Zabbix_raw_items | SMART: Get attributes | DEPENDENT | smart.disk.model[<#NAME>]
Preprocessing: |
DEPENDENT | smart.disk.sn[<#NAME>]
Preprocessing: The disk is passed the SMART self-test or not. |
DEPENDENT | smart.disk.test[<#NAME>]
Preprocessing: Current drive temperature. |
DEPENDENT | smart.disk.temperature[<#NAME>]
Preprocessing: Count of hours in power-on state. The raw value of this attribute shows total count of hours (or minutes, or seconds, depending on manufacturer) in power-on state. «By default, the total expected lifetime of a hard disk in perfect condition is defined as 5 years (running every day and night on all days). This is equal to 1825 days in 24/7 mode or 43800 hours.» On some pre-2005 drives, this raw value may advance erratically and/or «wrap around» (reset to zero periodically). https://en.wikipedia.org/wiki/S.M.A.R.T.#Known_ATA_S.M.A.R.T._attributes |
DEPENDENT | smart.disk.hours[<#NAME>]
Preprocessing: Contains a vendor specific estimate of the percentage of NVM subsystem life used based on the actual usage and the manufacturer’s prediction of NVM life. A value of 100 indicates that the estimated endurance of the NVM in the NVM subsystem has been consumed, but may not indicate an NVM subsystem failure. The value is allowed to exceed 100. Percentages greater than 254 shall be represented as 255. This value shall be updated once per power-on hour (when the controller is not in a sleep state). |
DEPENDENT | smart.disk.percentage_used[<#NAME>]
Preprocessing: This field indicates critical warnings for the state of the controller. |
DEPENDENT | smart.disk.critical_warning[<#NAME>]
Preprocessing: Contains the number of occurrences where the controller detected an unrecovered data integrity error. Errors such as uncorrectable ECC, CRC checksum failure, or LBA tag mismatch are included in this field. |
DEPENDENT | smart.disk.media_errors[<#NAME>]
Preprocessing: |
DEPENDENT | smart.disk.error[<#NAME>,<#ID>]
Preprocessing: |
DEPENDENT | smart.disk.attr.raw[<#NAME>,<#ID>]
Preprocessing: TriggersDevice serial number has changed. Ack to close. Depends on: — SMART [<#NAME>]: Average disk temperature is critical (over <$SMART.TEMPERATURE.MAX.CRIT>°C for 5m) The value should be greater than THRESH.
FeedbackPlease report any issues with the template at https://support.zabbix.com You can also provide a feedback, discuss the template or ask for help with it at ZABBIX forums. ReferencesAlso available for: 5.4 Template Module SMART by Zabbix agent 2OverviewFor Zabbix version: 5.0 and higher This template was tested on: SetupInstall the Zabbix agent 2 and Smartmontools 7.1. Zabbix configurationNo specific Zabbix configuration is required. Macros usedThis macro is used in overrides of attribute discovery for filtering IDs. It can be overridden on the host or linked template level. This macro is used in overrides of attribute discovery for filtering IDs. It can be overridden on the host or linked template level. This macro is used for trigger expression. It can be overridden on the host or linked template level. This macro is used for trigger expression. It can be overridden on the host or linked template level. Template linksThere are no template links in this template. Discovery rulesDiscovery SMART disks. |
ZABBIX_PASSIVE | smart.disk.discovery
Overrides: Discovery SMART Vendor Specific Attributes of disks. |
ZABBIX_PASSIVE | smart.attribute.discovery
Overrides: Items collected
|
Мониторинг Microsoft Windows на базе Zabbix
03.09.2019 Update
Сегодня мы расскажем о том, как мы ведем мониторинг Windows систем (в скором времени планируем такой же обзор про Linux и как обычно с доступным шаблоном).
Наш путь начался, как часто бывает, со штатного шаблона Zabbix «Template OS Windows Active» для мониторинга Windows-клиентов (рабочие станции и сервера), но ровно через неделю активного использования поняли, в нем много чего не хватает.
Так мы и начали его кардинальную переделку, часть оставили и добавили много чего нового.
Общая концепция
1. Отдельные настройки шаблона в файле os_windows_active.conf
2. Отдельный скрипт PowerShell — os_windows_active.ps1 для работы шаблона, при этом скрипт должен быть универсальным и работать на большинстве операционных систем с минимумом внешних зависимостей.
3. Шаблон должен быть не зависимым от языка операционной системы, поэтому лучше всего снимать данные со счётчиков используя либо WMI, либо скрипт + zabbix trapper.
4. Шаблон должен давать максимум полезной информации по своему назначению, поэтому он объединяется как мониторинг физических параметров оборудования, так и операционной системы и даже инвентаризации.
Основные возможности
- логических дисков;
- физических дисков;
- сетевых адаптеров;
- системных сервисов.
Triggers
Мы включили и оттестировали, только самые критичные триггеры, которые реально показывают проблемы. Но добавили и некоторых других, для более детальной информации.
Physical Memory
Physical disk
Logical disk
Network
- Смена MAC-адреса сетевого адаптера (для виртуальных машин очень актуально, если не поставили статический MAC-адрес);
- Отключение Link-а сетевого адаптера;
- Отброшенные пакеты на сетевом адаптере.
Operation system
Инвентаризация
Так как клиенты имеют разные компьютеры, нам требуется получать краткую инвентаризацию по ним, поэтому мы добавили в шаблон сбор данных о компьютере, и этими данными заполняем стандартные поля Zabbix Inventory:
- OS
- tag
- Chassis
- Desktop
- Model
- HW architecture
- Vendor
- Host networks
Графики
Мы сделали несколько полезных общих графиков, чтобы наглядно видеть общее состояние клиента и отдельных его подсистем.
Где скачать
Данный шаблон и скрипт вы можете бесплатно скачать с GitHub, а также в Zabbix Share.
Наши шаблоны мы продолжим выкладываем в открытый доступ в наш репозитарий Zabbix.
Системное администрирование серверов и DevOps
Источник
Zabbix 2.2: Мониторинг температуры процессора Windows машины
При первом знакомстве с zabbix, меня переполняли эмоции и фантазии о мониторинге всего на свете. Первой была идея предотвращения физических неисправностей путем отслеживания основных показателей железа, например температуру или напряжение, поскольку мне видится весьма логичным и экономически выгодным, поменять термопасту или начать подбирать замену уставшей технике до того как пользователь сообщит о её преждевременной кончине или страшных тормозах.
Система мониторинга Zabbix действительно очень мощная и гибкая, но, к сожалению, далеко не все аспекты для отслеживания доступны из стандартных коробочных шаблонов. Таким образом, моя фантазия с треском разбилась об стену отсутствия штатных инструментов мониторинга температур в Windows.
Процесс поиска в интернете поставил меня перед фактом, что вытащить температуры железа без сторонних средств нельзя. При поиске этих самых средств, я столкнулся с популярной утилитой SpeedFan, которая умеет собирать данные о температуре устройств, скорости вентиляторов, напряжений. Но получить от неё готовые к обработке данные без установки еще одной утилиты нет возможности. Плюс ко всему они не open source и требует активации компонента SNMP протокола. Вывод: попробовать на windows сервере без IMPI можно, но как вариант массового распространения в сети – не годен. Дальнейший поиск навел на программы hwmonitor и aida64 — монстры, крупногабаритные и платные.
OpenHardwareMonitor
Уже почти отчаявшись, зацепился за короткое сообщение на англоязычном форуме zabbix. Рекомендовали небольшую open source утилиту OpenHardwareMonitor — она имеет графический интерфейс и умеет считывать температуру устройств с датчиков. И самое главное её автор, по просьбе трудящихся написал консольную версию(последняя версия 28.10.2012), выводящую информацию в готовой для обработки форме.
Консольная версия состоит из двух файлов, exe исполняемого файла и dll библиотеки.
- OpenHardwareMonitorReport.exe
- OpenHardwareMonitorLib.dll
Где брать данные мы поняли, теперь нужно наладить поставки значений показателей Zabbix серверу.
Настройка сервера
Для начала на сервер для узла сети добавим новый элемент данных:
Назовем его: CPU Temperature. (Температура процессора)
Тип: Zabbix агент
Ключ: Temperature.CPU[0]. (Название не принципиально, главное чтобы с конфигом агента совпадал).
Интерфейс узла сети: ipdns. (Узел, который будем мониторить).
Тип информации: Числовой (целое положительное)
Тип данных: Десятичный
Интервал обновлений (в сек): 3600. (На скриншоте стоит 10 сек, для временной проверки).
На сервере закончили, переходим к конфигурации клиента.
Настройка клиента
Нестандартные данные мы будем отправлять через Zabbix agent в конфиге(zabbix_agentd.conf) которого предусмотрены так называемые пользовательские параметры – UserParameters вида:
Команда, через которую мы получим значение, обрабатывается на стороне клиента. Zabbix сервер будет получать ключ с присвоенным ему значением. В статье имеется в виду, что агент у вас уже установлен в виде службы и дружит с сервером.
В конец конфиг файла агента добавляем:
CPUTemperature.bat — написанный мной batch файл который вытаскивает из OpenHardwareMonitor, среднюю температуру по процессору. В программе эта строка называется CPU Package.
В C:OpenHardwareMonitor лежат 3 файла:
- OpenHardwareMonitorReport.exe
- OpenHardwareMonitorLib.dll
- CPUTemperature.bat
Взываю к habra-сообществу о помощи в преобразовании этого ужаса в нормальный программный код без костылей из текстовых файлов.
Тем не менее, со своей задачей скрипт справляется.
Обновлено: Новый код от уважаемого cawaleb
Для процессоров intel так же справедлив вариант с find вместо findstr и регулярным выражением:
Скрипт возвращает значение в виде десятичного числа.
После этого изменения конфиг файла и размещения всех файлов и скриптов, перезагружаем службу zabbix agent.
Начинаем получать значения на сервер:
Заключение
Решена задача по извлечения температуры CPU. По той же схеме можно получить температуру GPU. Но по-прежнему остро стоят вопросы определения скорости работы вентиляторов, напряжения на бп, а так же вопрос есть ли способ проверки состояния северного и южного мостов.
Источник
Zabbix: LLD-мониторинг железа под Windows на PowerShell
Пришло время и мне собрать свой велосипед для мониторинга физического состояния Windows-железок. Готового решения или хоть более или менее работающего найти не удавалось с момента моего знакомства с Zabbix, а это более 3 лет. А тем более, чтобы оно было… элегантно что ли. Лично мне даже в таких вещах хочется видеть стройность и максимальную функциональность. Именно поэтому далее рассматривается только LLD и PowerShell. Ну и конечно же только бесплатное ПО.
Итак, мониторинг чего будет производиться:
- S.M.A.R.T. дисков (информация, общее состояние и отдельные показатели)
- Температуры, напряжение, обороты кулеров (на ваш выбор)
А выглядеть это все будет примерно так:
Суммарно понадобятся:
Шаблон
Под спойлером находится актуальный шаблон. Просто сохраните содержимое в формате xml и импортируйте в свой Zabbix.
Шаблон создан в Zabbix версии 3.2, возможно, будет работать и в более ранних версиях. Ключи стандартны и имеют вид ZScript[имя_скрипта, параметр1. параметрN]. Параметры передаются непосредственно в сам скрипт.
Надеюсь, шаблон получился максимально простым и понятным.
Скрипты PS
Ниже приведены необходимые скрипты. Внутри уже находятся и обнаружение, и запрос отдельных элементов. Работа проверена на Windows от XP SP3 до 2016. Само собой, решение с Execution Policy остается за вами.
Обнаруживаются только диски с задействованным СМАРТом. Параметры запрашиваются из столбца «RAW_VALUE». Хотите мониторить другой параметр? Просто укажите его номер. По умолчанию скобки и их содержимое отбрасываются. Если нужный вам параметр диск не отдает, то возвращается пустое поле.
По умолчанию скрипт не обнаруживает названия датчиков, в которых есть #. Для чего это нужно, смотрите ниже.
Также зарезервировано одно имя датчика — Vbat. Это напряжение аккумулятора БИОС. Его значение вынесено в отдельный элемент для триггера (срабатывает если менее 2,9V).
Значения температур и оборотов кулеров на выходе целочисленные, значения напряжений передаются как есть.
Теоретически, можно обнаруживать и другие показатели (нагрузки, частоты. ). Используйте для этого соответствующий второй параметр в ключе. К примеру: ZScript[hard,discovery,load].
Подготовка Zabbix-агента
Для максимальной унификации я использую следующий и единственный параметр для своих скриптов:
Это дает максимальную гибкость и однообразность. Если нужно будет добавить еще параметров для каких-либо скриптов, можно просто добавить переменных в кавычках. На текущие работающие скрипты это никак не повлияет. Префикс windows я использую на всякий случай, мне так удобно хранить шаблоны для гарантированной идентификации.
smartmontools
Для мониторинга состояния дисков используется smartmontools (версия 6.5 на момент написания статьи). При установке ПО по умолчанию ставится утилита smartctl-nc — именно она используется в скрипте для облегчения жизни вашего сервера. Также потребуется прописать пусть к папке bin в переменных средах.
Путь просто добавляем в конец переменной Path через точку с запятой. По умолчанию — C:Program Filessmartmontoolsbin
OpenHardwareMonitor
Для датчиков же используется OHM. Софт бесплатный с открытым кодом. Установка тривиальна, но для полноценной работы необходимо запускать программу в качестве службы. Для подобных вещей есть NSSM, я бы все же советовал качать последнюю сборку. А здесь можно посмотреть синтаксис.
Обещанный выбор датчиков обеспечивается за счет того, что названия датчиков можно изменять! Изменяете имена на удобочитаемые (они будут использованы в именах элементов), а ненужные датчики комментируете #.
Не забывайте перезапустить программу/службу для применения переименования.
Источник
Мониторим всё: расширение агентов Windows и Linux при помощи скриптов
Если нам нужно мониторить состояние серверов и прочих компьютеризированных рабочих мест при помощи Zabbix, то это можно сделать двумя способами.
Первый способ — это при помощи SNMP-запросов, с отправкой которых Zabbix замечательно справляется. Так можно вытащить и загрузку сетевых интерфейсов, и загрузку процессора, памяти. Поверх этого, производители сервера могут выдать нам по SNMP еще много информации о состоянии железа.
Второй заключается в использовании Zabbix агента, который мы будем запускать на наблюдаемой системе. Список наблюдаемых параметров включает в себя как и такие простые вещи, как загрузка процессора, использование памяти, так и более хитрые, такие как чтение текстовых лог-файлов с поддержкой ротации или отслеживание факта изменения любого файла. Можно даже в качестве параметра использовать вывод любой произвольной команды на системе. Возможности Zabbix агента растут от версии к версии.
Что делать, если того, что мы хотим контролировать через Zabbix нет в списке возможностей Zabbix агента? Ждать пока это имплементируют разработчики в следующем релизе? Не обязательно.
Нам оставили несколько стандартных интерфейсов для того, чтобы расширить возможности Заббикса по мониторингу серверов настолько, насколько позволит нам наша фантазия и наличие свободного времени на написание скриптов. Интерфейсы эти UserParameter и zabbix_sender. О первом и пойдет речь, а в качестве примеров будет показано как можно собирать состояние S.M.A.R.T жестких дисков и контролировать, когда кто-то удаляет или устанавливает новые программы на своей Windows-машине.
Немного матчасти
Если вы уже хоть раз настраивали Zabbix агент на сервере, то начать использовать UserParameter не составит труда. Чтобы добавить новый параметр нужно сделать несколько вещей:
- Добавить в конце конфигурационного файла zabbix_agentd.conf строчку вида
где:
— уникальное имя, которое мы придумываем сами. Будем его использовать при настройке элемента данных в Zabbix.
— команда, которую нужно выполнить на наблюдаемом узле сети.
А вот сразу очень простой пример, который лежит в каждом стандартном конфиге для Linux:
Итак, ключ здесь system.test, а выполняем команду who | wc -l, которая возвращает нам количество открытых сессий в системе. Добавляем (или раскомментируем данную строчку если уже есть), идем дальше.
- В Веб-консоли Zabbix создать новый элемент данных с ключом, который мы использовали, если брать пример выше, то это system.test.
Для этого нажимаем «Создать элемент данных»
и затем выставляем ключ такой же, как указали в конфиг-файле, а тип Zabbix агент:
- Перезагрузить Zabbix агента, чтобы изменения в конфиг-файле вступили в силу
Наблюдаем результат в последних данных:
Мониторинг SMART через UserParameter
Пример выше имеет мало практического применения, учитывая, что уже итак существует стандартный ключ system.users.num, который делает ровно тоже самое.
Так что теперь рассмотрим пример, который уже больше будет походить на реалистичный.
Если нам интересно мониторить момент, когда пора планово менять жесткие диски, то есть два варианта:
- Если диски за аппаратным RAID-контроллером, то, как правило, сами диски операционная система «не видит». Поэтому ищем способы как вытащить информацию о состоянии жестких дисков через утилиты или SNMP-сабагента, которые нам любезно предоставил(или не предоставил) производитель RAID-контроллера. Для каждой отдельной серии контроллеров свой путь до этой информации.
- Если речь идет о просто рабочих станциях, серверах с софтовом RAID и т.д., то тогда к дискам есть доступ из операционной системы, и мы вольны использовать различные утилиты для чтения их статуса. В случае Zabbix нам подходит утилита smartctl, из пакета SMARTMONTOOLS.
В Debian установка SMARTMONTOOLS сводится к:
и утилита готова к использованию.
Для каждого диска, который есть в системе сначала проверим, что SMART включен:
если вдруг SMART поддерживается диском, но выключен, то активируем его:
Теперь мы можем проверять статус SMART командой:
Именно эту команду мы и запишем в наш zabbix_agentd.conf:
где uHDD.health — ключ.
Мониторинг SMART через Flexible UserParameter
Тут возникает резонный вопрос, как быть если дисков два. Легче всего решить эту проблему поможет способность UserParameter передавать параметры агенту, про которую мы еще не упоминали. Но делается все очень просто, сразу пример:
В веб-интерфейсе Zabbix в ключе мы будем подставлять параметры в квадратные скобки вместо *. Например, для одного элемента данных мы напишем sda, а для другого sdb. В команде этот параметр найдет отражение там, где стоит переменная $1.
Создадим для второго диска элемент данных:
И через некоторое время сможем наблюдать результат в последних данных:
Мониторинг SMART через Flexible UserParameter c Low-level Discovery
Все получилось. Но тут возникает резонный вопрос, как быть если дисков не два, а двадцать два. И тут нам пригодится замечательная возможность низкоуровнего обнаружения (LLD), про которую мы уже говорили.
Низкоуровневое обнаружение позволяет системе мониторинга обнаруживать какое количество однотипных элементов присутствует на узле сети и динамически по шаблону создавать необходимые элементы данных, триггеры и графики для этих элементов. «Из коробки» системе доступна возможность находить файловые системы, сетевые интерфейсы и SNMP OID’ы. Однако, и здесь разработчики оставили возможность дополнить стандартные возможности, нужно просто передать в систему информацию о том, какие элементы обнаружены в формате JSON. Этим и воспользуемся.
Создадим маленький скрипт на perl, smartctl-disks-discovery.pl. Он будет находить все диски в системе и выводить эту информацию в JSON, передавая также информацию, включен ли у диска SMART или нет, а также попытается сам включить SMART, если он выключен:
При запуске скрипт выдает:
Теперь, для того чтобы скрипт автоматически запускался Zabbix’ом, просто добавим еще один UserParameter в zabbix_agentd.conf:
Покончив с настройкой конфига, переходим в веб-интерфейс, где создаем новое правило обнаружения для smartctl:
Обратите внимание на ключ и на фильтр, (<#SMART_ENABLED>=1) благодаря последнему будут добавляться только те обнаруженные диски, которые поддерживают SMART. Теперь мы можем переписать два наших элемента данных для дисков sda и sdb в один прототип элементов данных, просто заменив имя диска на макрос <#DISKNAME>:
Последнее, перед тем, как Zabbix сможет запускать команды, которые мы прописали в zabbix_agentd.conf из-под root и мониторить SMART, нужно добавить разрешения для его пользователя запускать эту команду без ввода пароля, для этого добавим в /etc/sudoers строчку:
Готовый шаблон для мониторинга SMART с остальными элементами данных, триггерами прикладываю, так же как и настроенный под него конфиг.
Контроль за установкой новых программ на Windows
Zabbix агент, установленный на Windows, точно также может быть расширен через UserParameter, только команды будут уже другие. Хотя, например, smartctl — кроссплатформенная утилита, и точно также можно ее использовать для контроля за жесткими дисками в Windows.
Кратко рассмотрим еще другой пример. Задача получать уведомление каждый раз, когда пользователь самостоятельно удаляет или устанавливает программы.
Для этого будем использовать наш vbs-скрипт:
Для его интеграции с Zabbix добавим UserParameter в конфиг-файл:
Добавим элемент данных в шаблон для Windows:
Добавим триггер:
и действие, которое будет отправлять e-mail уведомление:
Весь процесс мониторинга выглядит так: каждый час запускается скрипт Zabbix агентом, который сравнивает два списка программ: текущий и предыдущий. Затем скрипт выписывает все изменения в отдельный файл. Если же изменений нет, то в файл пишется 0x0
Содержимое файла уходит на Zabbix сервер, где поднимается триггер в случае, если значение элемента данных uDiffProgramms отлично от 0x0. Затем отдельное действие отправляет по почте уведомление со списком того, что было установлено или удалено на данном компьютере:
В итоге
UserParameter — отличная и простая возможность расширить функционал системы самостоятельно. Стоит упомянуть и альтернативы: zabbix_sender, который, например, подойдет для тех случаев, когда нужно отправлять данные в Zabbix не по расписанию, (как это делает UserParameter), а по какому-то событию; и system.run[], который похож на UserParameter, но удобнее тем, что не нужно вносить изменения во все конфиги агентов, достаточно просто добавить этот элемент данных в шаблон. Более того, в следующем крупном релизе Zabbix 2.2 нас ожидает еще один новый способ расширить возможности агента- это подключаемые модули. Ждем с нетерпением!
Вот так, считайте, что если вы можете узнать что-то о системе скриптом или командой, значит, вы всегда можете передать это в Zabbix.
Источник
Наткнулся на статью сис.админа Zerox на счёт мониторинга S.M.A.R.T. диска средствами Zabbix. Но что-то у меня никак не получалось по его записи. Поэтому я опишу свой опыт настройки это необходимой вещи.
Если вы здесь потому что вы начали майнить Chia можете написать мне все мои Контакты, могу предложить услугу по внедрению этого решения на ваши фермы, уже есть опыт.
Будем разворачивать решение с Github. По сути, эта запись просто перевод с небольшими пояснениями.
Все необходимые компоненты я сложил в архив, который можно скачать с Я.Диска (если ссылка сломалась пишите к комменты, стучите на почту, смотрите на github).
Возможности решения
Данное решает такие задачи:
- Мониторинг состояние S.M.A.R.T диска (почти всех показателей);
- Мониторинг оставшегося ресурса SSD;
- Мониторинг температуры;
- Мониторинг производителя, партийного номера, серийного номера (Zabbix вас оповестит, если диск был заменен), что позволяет настроить инвентаризацию;
- Мониторинг количество неисправных секторов на диске;
Подготовка Zabbix-Server
Всё, что Вам потребуется, это добавить замечательный шаблон в свой Zabbix.
Подготовка Zabbix-Agent Windows
Установка smartmontools
Ничего необычного, просто устанавливаем smartmontools, как обычную программу. Единственный момент, не рекомендую менять путь, иначе его надо будет менять в конфиге агента и в скрипте.
Конфигурирование агента
Создаем папку scripts и помещаем туда наш скрипт smartctl-disks-discovery.ps1
Открываем zabbix_agentd.conf и правим
#Увеличиваем TimeOut до 30 секунд. Как показывает практика. Если этого будет мало, то потом увеличим. TimeOut = 20 |
И добавляем пользовательскую проверку
UserParameter=uHDD.get[*], for /F «tokens=* usebackq» %a in (`«»%ProgramFiles%smartmontoolsbinsmartctl.exe» -i -H -A -l error -l background $1″`) do @echo %a UserParameter=uHDD.discovery[*],powershell —NoProfile —ExecutionPolicy Bypass —File «%ProgramFiles%Zabbix Agentscriptssmartctl-disks-discovery.ps1» UserParameter=uSSD.get[*], for /F «tokens=* usebackq» %a in (`«»%ProgramFiles%smartmontoolsbinsmartctl.exe» -i -H -A -l error -l background $1″`) do @echo %a UserParameter=uSSD.discovery[*],powershell —NoProfile —ExecutionPolicy Bypass —File «%ProgramFiles%Zabbix Agentscriptssmartctl-disks-discovery.ps1» |
Осталось перезапустить агента и привязать наш хост к шаблону.
Примерно через час прилетят данные. (Для отладки можно поменять время обнаружения, я обычно ставлю 10 минут, меняем 1h на 10m. Главное, не забыть обратно вернуть).
Результат
Таким образом мы настроили мониторинг SSD и HDD дисков. Данное решение отлично показывает себя в проде. По критически важным дискам можно строить вот такие информативные графики. Мне нравится
ТраблШутинг
У меня такая проблема возникала, когда забыл ставить smartmontools
Invalid discovery rule value: cannot parse as a valid JSON object: invalid JSON object value starting character at: ‘????? ?맢??? ??⮤ ??? ??ࠦ???? ? ???祭??? NULL. C:Program FilesZabbix Agentscriptssmartctl—disks—discovery.ps1:34 ????:73 + $disk_name = $smart_scanresul |
Просмотры: 4 005
1
2
Доброго времени суток!
Развернули Zabbix, и почти сразу столкнулись с довольно весомой проблемой.
С машин пользователей в логи (и на почту) валится целая куча мусора, которая не является важной или существенной. К примеру: «Problem started at 16:20:06 on 2020.08.04 Problem name: «sppsvc» (Защита программного обеспечения) is not running (startup type automatic delayed)»
Понятно, что это все можно настроить, вот только как раз с этим проблема и возникла.
За сбор информации сервисов винды отвечает шаблон Template OS Windows by Zabbix agent. Пытаюсь отсечь неугодные мне службы следующим образом:
Макрос: {$SERVICE.NAME.MATCHES}
Значение: ^.*$
Макрос:{$SERVICE.NAME.NOT_MATCHES}
Значение: ^RemoteRegistry|MMCSS|gupdate|SysmonLog|clr_optimization_v.+|clr_optimization_v.+|sppsvc|gpsvc|Pml Driver HPZ12|Net Driver HPZ12|MapsBroker|IntelAudioService|Intel(R) TPM Provisioning Service|dbupdate|DoSvc$ (те самые неважные службы)
Макрос: {$SERVICE.STARTUPNAME.MATCHES}
Значение:^automatic$
Макрос: {$SERVICE.STARTUPNAME.NOT_MATCHES}
Значение: ^manual|disabled$
Но как раз это и не срабатывает. Мусор как валился, так и валится.
Подскажите, что сделано не так? В какую сторону еще копать?
Заранее спасибо.