Zabbix Documentation 3.0

3.04.04.45.0 (current)| In development:5.2 (devel)| Unsupported:1.82.02.22.43.23.44.2Guidelines

User Tools

Site Tools


ru:manual:discovery:low_level_discovery

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ru:manual:discovery:low_level_discovery [2016/01/07 23:34]
dotneft
ru:manual:discovery:low_level_discovery [2019/11/25 10:09] (current)
dotneft
Line 22: Line 22:
  
 <​note>​Элементы данных низкоуровневого обнаружения - vfs.fs.discovery,​ net.if.discovery поддерживаются Zabbix агентом начиная с версии 2.0.\\ Элемент данных низкоуровневого обнаружения "​system.cpu.discovery"​ поддерживается Zabbix агентом начиная с версии 2.4.\\ Обнаружение SNMP OID'​ов поддерживается Zabbix сервером и прокси начиная с версии 2.0.\\ Обнаружение с использованием SQL запросов ODBC поддерживается Zabbix сервером и прокси начиная с версии 3.0.</​note>​ <​note>​Элементы данных низкоуровневого обнаружения - vfs.fs.discovery,​ net.if.discovery поддерживаются Zabbix агентом начиная с версии 2.0.\\ Элемент данных низкоуровневого обнаружения "​system.cpu.discovery"​ поддерживается Zabbix агентом начиная с версии 2.4.\\ Обнаружение SNMP OID'​ов поддерживается Zabbix сервером и прокси начиная с версии 2.0.\\ Обнаружение с использованием SQL запросов ODBC поддерживается Zabbix сервером и прокси начиная с версии 3.0.</​note>​
- 
-<​note>​Zabbix прокси на IBM DB2 базе данных имеет ограничение в 2048 байт на возвращаемое значение правил низкоуровневого обнаружения. Это ограничение не распространяется на Zabbix сервер,​ так как возвращаемые значения обрабатываются без предварительной записи в базу данных.</​note>​ 
  
 Эти макросы затем используются в именах,​ ключах и в других полях прототипов,​ которые являются основой для создания реальных элементов данных,​ триггеров и графиков каждому обнаруженному объекту. Смотрите полный список [[:​ru/​manual/​appendix/​macros/​supported_by_location#​макросы_используемые_в_низкоуровневых_обнаружениях|опций]] по использованию макросов в низкоуровневом обнаружении. Эти макросы затем используются в именах,​ ключах и в других полях прототипов,​ которые являются основой для создания реальных элементов данных,​ триггеров и графиков каждому обнаруженному объекту. Смотрите полный список [[:​ru/​manual/​appendix/​macros/​supported_by_location#​макросы_используемые_в_низкоуровневых_обнаружениях|опций]] по использованию макросов в низкоуровневом обнаружении.
Line 29: Line 27:
 Когда сервер получает значение элемента данных обнаружения,​ он смотрит на пару макрос -> значение и для каждой пары создает реальные элементы данных,​ триггеров и графиков,​ основанных на их прототипах. В приведенном выше примере с "​net.if.discovery",​ сервер будет создавать один набор элементов данных,​ триггеров и графиков для локального интерфейса "​lo"​ и другой набор для интерфейса "​eth0"​. Когда сервер получает значение элемента данных обнаружения,​ он смотрит на пару макрос -> значение и для каждой пары создает реальные элементы данных,​ триггеров и графиков,​ основанных на их прототипах. В приведенном выше примере с "​net.if.discovery",​ сервер будет создавать один набор элементов данных,​ триггеров и графиков для локального интерфейса "​lo"​ и другой набор для интерфейса "​eth0"​.
  
-Следующий раздел иллюстрирует весь процесс,​ описанный выше, в деталях и служит руководством,​ как осуществлять все упомянутые выше типы обнаружений. ​Последний раздел описывает формат JSON элементов данных обнаружения и дает ​пример того, как реализовать ваш собственный скрипт для обнаружения файловых систем,​ используя Perl скрипт.+Смотрите также: [[#​обнаруженные_объекты|Обнаруженные объекты]] 
 + 
 +Следующие разделы иллюстрируют весь процесс,​ описанный выше, в деталях и служат руководством,​ как осуществлять все упомянутые выше типы обнаружений. ​Смотрите [[#создание_пользовательских_lld_правил|Создание пользовательских LLD правил]] для понимания ​формата JSON элементов данных обнаружения и примера того, как реализовать ваш собственный скрипт для обнаружения файловых систем,​ используя Perl скрипт
 + 
 +== Ограничения данных для возвращаемых значений == 
 + 
 +Ограничения для JSON данных низкоуровневого правила обнаружения отсутствуют,​ если эти данные получены напрямую Zabbix сервером,​ так как полученные значения обрабатываются без сохранения в базу данных. Также ограничения отсутствуют и для пользовательских правил низкоуровневого обнаружения,​ однако,​ если предполагается получение пользовательских LLD данных при помощи пользовательского параметра,​ тогда накладывается ограничение по размеру значения (512 КБ) на сам пользовательский параметр. 
 + 
 +Если данные поступают от Zabbix прокси,​ этот прокси вынужден сначала записать их в базу данных. В таком случае накладываются ​ [[:​ru/​manual/​config/​items/​item#​ограничения_текстовых_данных|ограничения к базе данных]],​ например,​ 2048 байт для Zabbix прокси,​ который работает с IBM DB2 базой данных.
  
 === - Обнаружение файловых систем === === - Обнаружение файловых систем ===
Line 51: Line 57:
 |//​Тип// ​ |Тип проверки выполняемого обнаружения;​ должен быть //Zabbix агент//​ или //Zabbix агент (активный)//​ при обнаружении файловых систем. ​ |  |//​Тип// ​ |Тип проверки выполняемого обнаружения;​ должен быть //Zabbix агент//​ или //Zabbix агент (активный)//​ при обнаружении файловых систем. ​ | 
 |//​Ключ// ​ |Элемент данных "​vfs.fs.discovery"​ уже встроен в Zabbix агент на многих платформах (для получения более детальных сведений смотрите [[ru:​manual:​appendix:​items:​supported_by_platform|список поддерживаемых ключей элементов данных]]),​ который возвращает список файловых систем,​ присутствующих в компьютере,​ и их типы в формате JSON.  |  |//​Ключ// ​ |Элемент данных "​vfs.fs.discovery"​ уже встроен в Zabbix агент на многих платформах (для получения более детальных сведений смотрите [[ru:​manual:​appendix:​items:​supported_by_platform|список поддерживаемых ключей элементов данных]]),​ который возвращает список файловых систем,​ присутствующих в компьютере,​ и их типы в формате JSON.  | 
-|//​Интервал обновления (в сек)// ​ |Этот фильтр задает как часто Zabbix выполняет обнаружение. В начале,​ когда вы только настраиваете обнаружение файловых систем,​ вы можете указать маленький интервал,​ но как только вы удостоверитесь что всё работает,​ вы можете установить его в 30 минут или более, потому что обычно файловые системы не меняются очень часто.\\ //​Обратите внимание//:​ Если укажите значение равное ​'0', элемент данных не будет обрабатываться. Однако,​ если также существует переменный интервал с ненулевым значением,​ элемент данных будет обрабатываться в течении действия переменного интервала. ​ | +|//​Интервал обновления (в сек)// ​ |Этот фильтр задает как часто Zabbix выполняет обнаружение. В начале,​ когда вы только настраиваете обнаружение файловых систем,​ вы можете указать маленький интервал,​ но как только вы удостоверитесь что всё работает,​ вы можете установить его в 30 минут или более, потому что обычно файловые системы не меняются очень часто.\\ //​Обратите внимание//:​ Если укажите значение равное ​%%"%%0%%"%%, элемент данных не будет обрабатываться. Однако,​ если также существует переменный интервал с ненулевым значением,​ элемент данных будет обрабатываться в течении действия переменного интервала. ​ | 
 |//​Пользовательские интервалы// ​ |Вы можете создавать пользовательские правила проверки элемента данных:​\\ **Гибкий** - создание исключений из Интервала обновления (интервал с другой частотой обновления)\\ **По расписанию** - создание пользовательского расписания проверки.\\ Для получения более подробной информации смотрите [[ru:​manual:​config:​items:​item:​custom_intervals|Пользовательские интервалы]]. Проверка по расписанию поддерживается начиная с Zabix 3.0.0. ​ |  |//​Пользовательские интервалы// ​ |Вы можете создавать пользовательские правила проверки элемента данных:​\\ **Гибкий** - создание исключений из Интервала обновления (интервал с другой частотой обновления)\\ **По расписанию** - создание пользовательского расписания проверки.\\ Для получения более подробной информации смотрите [[ru:​manual:​config:​items:​item:​custom_intervals|Пользовательские интервалы]]. Проверка по расписанию поддерживается начиная с Zabix 3.0.0. ​ | 
-|//​Период сохранения потерянных ресурсов (дней)// ​ |Это поле позволяет вам указать как много дней обнаруженный объект будет храниться (не будет удален),​ как только его состояние обнаружения станет "Не обнаруживается более"​ (макс 3650 дней). \\ //​Обратите внимание://​ Если значение равно "​0",​ объекты будут удалены сразу. Использование значения "​0"​ не рекомендуется,​ так как простое ошибочное изменение фильтра может закончится тем, что объект будет удален вместе со всеми данными истории. ​  ​| ​+|//​Период сохранения потерянных ресурсов (дней)// ​ |Это поле позволяет вам указать как много дней обнаруженный объект будет храниться (не будет удален),​ как только его состояние обнаружения станет "Не обнаруживается более"​ (макс 3650 дней). \\ //​Обратите внимание://​ Если значение равно ​%%"%%0%%"%%, объекты будут удалены сразу. Использование значения ​%%"%%0%%"%% не рекомендуется,​ так как простое ошибочное изменение фильтра может закончится тем, что объект будет удален вместе со всеми данными истории. ​  ​| ​
 |//​Описание// ​ |Введите описание. ​ |  |//​Описание// ​ |Введите описание. ​ | 
 |//​Состояние// ​ |Если отмечено,​ правило будет обрабатываться. | |//​Состояние// ​ |Если отмечено,​ правило будет обрабатываться. |
Line 66: Line 72:
  
 <note important>​База данных Zabbix в MySQL должна быть создана чувствительной к регистру,​ если имена файловых систем различаются только по регистру,​ чтобы обнаружение сработало корректно.</​note>​ <note important>​База данных Zabbix в MySQL должна быть создана чувствительной к регистру,​ если имена файловых систем различаются только по регистру,​ чтобы обнаружение сработало корректно.</​note>​
 +
 +<note important>​Ошибка или опечатка в регулярном выражении,​ которое используется в LLD правиле,​ может привести к удалению тысяч элементов конфигурации,​ данных истории и событий на большом количестве узлов сети. Например,​ некорректное регулярное выражение "File systems for discovery"​ может привести к удалению тысяч элементов данных,​ триггеров,​ данных истории и событий.</​note>​
    
 <​note>​История правил обнаружения не сохраняется.</​note>​ <​note>​История правил обнаружения не сохраняется.</​note>​
Line 84: Line 92:
  
 {{manual:​discovery:​low_level_discovery:​trigger_prototype_fs.png|}} {{manual:​discovery:​low_level_discovery:​trigger_prototype_fs.png|}}
 +
 +Когда реальные триггера создаются из прототипов,​ возможно потребуется некая гибкость в отношении того какая константа ('​20'​ в нашем примере) в выражении используется для сравнения. Смотрите как [[:​ru/​manual/​discovery/​low_level_discovery#​Использование_макросов_LLD_в_контекстах_пользовательских_макросов|пользовательские макросы с контекстом]] могут быть полезны для получения подобной гибкости.
  
 Также вы можете задать [[:​ru/​manual/​config/​triggers/​dependencies|зависимости]] между прототипами триггеров (поддерживается начиная с Zabbix 3.0). Чтобы это сделать,​ перейдите на вкладку //​Зависимости//​. Прототип триггеров может зависеть от другого прототипа триггеров из этого же правила низкоуровневого обнаружения (LLD) или от обычного триггера. Прототип триггеров не может зависеть от прототипа триггеров из другого правила LLD и от триггера созданного другим прототипом триггеров. Прототип триггеров узла сети не может зависеть от триггера из шаблона. Также вы можете задать [[:​ru/​manual/​config/​triggers/​dependencies|зависимости]] между прототипами триггеров (поддерживается начиная с Zabbix 3.0). Чтобы это сделать,​ перейдите на вкладку //​Зависимости//​. Прототип триггеров может зависеть от другого прототипа триггеров из этого же правила низкоуровневого обнаружения (LLD) или от обычного триггера. Прототип триггеров не может зависеть от прототипа триггеров из другого правила LLD и от триггера созданного другим прототипом триггеров. Прототип триггеров узла сети не может зависеть от триггера из шаблона.
Line 100: Line 110:
  
 //​Обратите внимание//:​ Для получения информации по настройке прототипов узлов сети, смотрите в разделе мониторинга виртуальных машин о настройке [[:​ru/​manual/​vm_monitoring#​прототипы_узлов_сети|прототипов узлов сети]]. //​Обратите внимание//:​ Для получения информации по настройке прототипов узлов сети, смотрите в разделе мониторинга виртуальных машин о настройке [[:​ru/​manual/​vm_monitoring#​прототипы_узлов_сети|прототипов узлов сети]].
 +
 +== - Обнаруженные объекты ==
  
 Представленные снимки экрана ниже иллюстрируют как выглядят уже обнаруженные элементы данных,​ триггера и графики в настройке узла сети. Обнаруженные объекты имеют префикс ссылку золотистого цвета, которая ведет к правилу обнаружения,​ создавшего эти объекты. Представленные снимки экрана ниже иллюстрируют как выглядят уже обнаруженные элементы данных,​ триггера и графики в настройке узла сети. Обнаруженные объекты имеют префикс ссылку золотистого цвета, которая ведет к правилу обнаружения,​ создавшего эти объекты.
Line 105: Line 117:
 {{manual:​discovery:​low_level_discovery:​discovered_items.png|}} {{manual:​discovery:​low_level_discovery:​discovered_items.png|}}
  
-Обратите внимание,​ что обнаруженные объекты не будут созданы в случае,​ если объекты с такими же условиями уникальности уже существуют,​ например,​ элемент данных с таким же ключем или график с таким же именем.+Обратите внимание,​ что обнаруженные объекты не будут созданы в случае,​ если объекты с такими же условиями уникальности уже существуют,​ например,​ элемент данных с таким же ключом или график с таким же именем. В этом случае в веб-интерфейсе отобразится сообщений об ошибке,​ о том что правило обнаружения не смогло создать конкретные объекты. Однако,​ само правило обнаружение не станет неподдерживаемым поскольку не удалось создать некоторый объект и его пришлось пропустить. Правило обнаружения продолжит создавать/​обновлять другие объекты.
  
-Элементы данных (а также, триггеры и графики) созданые с помощью низкоуровневого правила обнаружения невозможно удалить вручную. Тем не менее, они будут удалены автоматически,​ если обнаруженный объект (файловая система,​ интерфейс и т.д.) более не обнаруживается (или более не попадает под фильтр). В этом случае они будут удалены спустя некоторое количество дней указанное в поле //​Период сохранения потерянных ресурсов//​.+Элементы данных (а также, триггеры и графики) созданные с помощью низкоуровневого правила обнаружения невозможно удалить вручную. Тем не менее, они будут удалены автоматически,​ если обнаруженный объект (файловая система,​ интерфейс и т.д.) более не обнаруживается (или более не попадает под фильтр). В этом случае они будут удалены спустя некоторое количество дней указанное в поле //​Период сохранения потерянных ресурсов//​.
  
 Когда обнаруженный объект становится '​Более не обнаруживается',​ в списке элементов данных будет отображаться оранжевый индикатор времени жизни. Переместите курсор мыши на этот индикатор и вы увидите сообщение с количеством дней до момента удаления элемента данных. Когда обнаруженный объект становится '​Более не обнаруживается',​ в списке элементов данных будет отображаться оранжевый индикатор времени жизни. Переместите курсор мыши на этот индикатор и вы увидите сообщение с количеством дней до момента удаления элемента данных.
Line 114: Line 126:
  
 Если объекты отмечены на удаление,​ но не были удалены в назначенное время (деактивировано правило обнаружения или элемент данных узла сети), они удалятся при следующем выполнении правила обнаружения. Если объекты отмечены на удаление,​ но не были удалены в назначенное время (деактивировано правило обнаружения или элемент данных узла сети), они удалятся при следующем выполнении правила обнаружения.
 +
 +Объекты содержащие другие объекты,​ которые отмечены к удалению,​ не будут обновляться при изменениях на уровне правила обнаружения. Например,​ триггеры обнаруженные при помощи низкоуровневого обнаружения не будут обновляться,​ если они содержат элементы данных,​ которые помечены к удалению.
  
 {{manual:​discovery:​low_level_discovery:​discovered_triggers.png|}} {{manual:​discovery:​low_level_discovery:​discovered_triggers.png|}}
Line 132: Line 146:
 Обнаружение CPU основано на процессе коллектора агента,​ чтобы поддерживать соответствие с данными,​ которые поставляются коллектором и сохранить ресурсы на получение данных. Такое поведение дает эффект,​ что этот ключ элемента данных не работает с флагом командой строки тестирования (-t) бинарного файла, который возвращает состояние NOT_SUPPORTED и сопутствующее сообщение о том, что процесс коллектора не запущен. Обнаружение CPU основано на процессе коллектора агента,​ чтобы поддерживать соответствие с данными,​ которые поставляются коллектором и сохранить ресурсы на получение данных. Такое поведение дает эффект,​ что этот ключ элемента данных не работает с флагом командой строки тестирования (-t) бинарного файла, который возвращает состояние NOT_SUPPORTED и сопутствующее сообщение о том, что процесс коллектора не запущен.
  
-Прототипы элементов данных,​ которые можно создать на основе обнаружения CPU включают в себя "​system.cpu.load[{#​CPU.NUMBER},​ <​режим>​]"​"​system.cpu.util[{#​CPU.NUMBER},​ <тип>, <режим>​]" ​и другие.+Прототипы элементов данных,​ которые можно создать на основе обнаружения CPU включают в себя, например, ​"​system.cpu.util[{#​CPU.NUMBER}, <​тип>​, <​режим>​]" ​и "​system.hw.cpu[{#​CPU.NUMBER},​ <информация>​]"​.
  
 === - Обнаружение SNMP OID'​ов === === - Обнаружение SNMP OID'​ов ===
Line 164: Line 178:
  
 Теперь это правило будет обнаруживать объекты с макросом {#IFDESCR} равным **WAN**, **LAN1** и **LAN2**, макросом {#​IFPHYSADDRESS} равным **8:​0:​27:​90:​7a:​75**,​ **8:​0:​27:​90:​7a:​76**,​ и **8:​0:​27:​2b:​af:​9e**,​ макросом {#​SNMPINDEX} равным индексам обнаруженных OID **1**, **2** и **3**: Теперь это правило будет обнаруживать объекты с макросом {#IFDESCR} равным **WAN**, **LAN1** и **LAN2**, макросом {#​IFPHYSADDRESS} равным **8:​0:​27:​90:​7a:​75**,​ **8:​0:​27:​90:​7a:​76**,​ и **8:​0:​27:​2b:​af:​9e**,​ макросом {#​SNMPINDEX} равным индексам обнаруженных OID **1**, **2** и **3**:
-  ​+ 
-      "​data":​ [ +<code java> 
-          +
-              "​{#​SNMPINDEX}":​ "​1",​ +    "​data":​ [ 
-              "​{#​IFDESCR}":​ "​WAN",​ +        
-              "​{#​IFPHYSADDRESS}":​ "​8:​0:​27:​90:​7a:​75"​ +            "​{#​SNMPINDEX}":​ "​1",​ 
-          }, +            "​{#​IFDESCR}":​ "​WAN",​ 
-          +            "​{#​IFPHYSADDRESS}":​ "​8:​0:​27:​90:​7a:​75"​ 
-              "​{#​SNMPINDEX}":​ "​2",​ +        }, 
-              "​{#​IFDESCR}":​ "​LAN1",​ +        
-              "​{#​IFPHYSADDRESS}":​ "​8:​0:​27:​90:​7a:​75+            "​{#​SNMPINDEX}":​ "​2",​ 
-          }, +            "​{#​IFDESCR}":​ "​LAN1",​ 
-          +            "​{#​IFPHYSADDRESS}":​ "​8:​0:​27:​90:​7a:​76
-              "​{#​SNMPINDEX}":​ "​3",​ +        }, 
-              "​{#​IFDESCR}":​ "​LAN2",​ +        
-              "​{#​IFPHYSADDRESS}":​ "​8:​0:​27:​2b:​af:​9e"​ +            "​{#​SNMPINDEX}":​ "​3",​ 
-          +            "​{#​IFDESCR}":​ "​LAN2",​ 
-      +            "​{#​IFPHYSADDRESS}":​ "​8:​0:​27:​2b:​af:​9e"​ 
-  }+        
 +    
 +} 
 +</​code>​
  
 Если обнаруженный объект не имеет указанный OID, тогда по этому объекту соответстующий макрос пропускается. Например,​ если у нас есть следующие данные:​ Если обнаруженный объект не имеет указанный OID, тогда по этому объекту соответстующий макрос пропускается. Например,​ если у нас есть следующие данные:​
Line 195: Line 212:
    
 Тогда, в случае SNMP обнаружения ''​discovery[{#​IFDESCR},​ ifDescr, {#IFALIAS}, ifAlias]''​ вернется следующая структура:​ Тогда, в случае SNMP обнаружения ''​discovery[{#​IFDESCR},​ ifDescr, {#IFALIAS}, ifAlias]''​ вернется следующая структура:​
-  ​+ 
-      "​data":​ [ +<code java> 
-          +
-              "​{#​SNMPINDEX}":​ 1, +    "​data":​ [ 
-              "​{#​IFDESCR}":​ "​Interface #1", +        
-              "​{#​IFALIAS}":​ "​eth0"​ +            "​{#​SNMPINDEX}":​ 1, 
-          }, +            "​{#​IFDESCR}":​ "​Interface #1", 
-          +            "​{#​IFALIAS}":​ "​eth0"​ 
-              "​{#​SNMPINDEX}":​ 2, +        }, 
-              "​{#​IFDESCR}":​ "​Interface #2", +        
-              "​{#​IFALIAS}":​ "​eth1"​ +            "​{#​SNMPINDEX}":​ 2, 
-          }, +            "​{#​IFDESCR}":​ "​Interface #2", 
-          +            "​{#​IFALIAS}":​ "​eth1"​ 
-              "​{#​SNMPINDEX}":​ 3, +        }, 
-              "​{#​IFALIAS}":​ "​eth2"​ +        
-          }, +            "​{#​SNMPINDEX}":​ 3, 
-          +            "​{#​IFALIAS}":​ "​eth2"​ 
-              "​{#​SNMPINDEX}":​ 4, +        }, 
-              "​{#​IFDESCR}":​ "​Interface #4" +        
-          }, +            "​{#​SNMPINDEX}":​ 4, 
-          +            "​{#​IFDESCR}":​ "​Interface #4" 
-              "​{#​SNMPINDEX}":​ 5, +        }, 
-              "​{#​IFALIAS}":​ "​eth4"​ +        
-          +            "​{#​SNMPINDEX}":​ 5, 
-      +            "​{#​IFALIAS}":​ "​eth4"​ 
-  }  ​+        
 +    
 +}  ​ 
 +</​code>​
  
 {{manual:​discovery:​low_level_discovery:​lld_rule_snmp.png|}} {{manual:​discovery:​low_level_discovery:​lld_rule_snmp.png|}}
Line 282: Line 302:
 Благодаря внутреннему механизму обработки элемента данных "​db.odbc.discovery[]",​ результат этого запроса автоматически преобразуется в следующий JSON: Благодаря внутреннему механизму обработки элемента данных "​db.odbc.discovery[]",​ результат этого запроса автоматически преобразуется в следующий JSON:
  
-<​code ​js>+<​code ​java>
 { {
     "​data":​ [     "​data":​ [
Line 325: Line 345:
 Как только обнаружение будет выполнено,​ элемент данных будет создан по каждому прокси:​ Как только обнаружение будет выполнено,​ элемент данных будет создан по каждому прокси:​
  
-{{manual:​discovery:​low_level_discovery:​discovered_items_odbc.png}}+{{manual:​discovery:​low_level_discovery:​discovered_items_odbc.png?600}}
  
 === - Обнаружение служб Windows === === - Обнаружение служб Windows ===
Line 365: Line 385:
 { {
     ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;     ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
-    $fsname =~ s!/!\\/!g; 
  
     print "​\t,​\n"​ if not $first;     print "​\t,​\n"​ if not $first;
Line 387: Line 406:
     "​data":​[     "​data":​[
     ​     ​
-    { "​{#​FSNAME}":"​\/", ​                          "​{#​FSTYPE}":"​rootfs" ​  }, +    { "​{#​FSNAME}":"/", ​                          "​{#​FSTYPE}":"​rootfs" ​  }, 
-    { "​{#​FSNAME}":"​\/​sys", ​                       "​{#​FSTYPE}":"​sysfs" ​   }, +    { "​{#​FSNAME}":"/​sys", ​                       "​{#​FSTYPE}":"​sysfs" ​   }, 
-    { "​{#​FSNAME}":"​\/​proc", ​                      "​{#​FSTYPE}":"​proc" ​    }, +    { "​{#​FSNAME}":"/​proc", ​                      "​{#​FSTYPE}":"​proc" ​    }, 
-    { "​{#​FSNAME}":"​\/​dev", ​                       "​{#​FSTYPE}":"​devtmpfs"​ }, +    { "​{#​FSNAME}":"/​dev", ​                       "​{#​FSTYPE}":"​devtmpfs"​ }, 
-    { "​{#​FSNAME}":"​\/dev\/​pts", ​                  ​"​{#​FSTYPE}":"​devpts" ​  }, +    { "​{#​FSNAME}":"/​dev/​pts", ​                   "​{#​FSTYPE}":"​devpts" ​  }, 
-    { "​{#​FSNAME}":"​\/", ​                          "​{#​FSTYPE}":"​ext3" ​    }, +    { "​{#​FSNAME}":"/​lib/​init/​rw", ​               "​{#​FSTYPE}":"​tmpfs" ​   }, 
-    { "​{#​FSNAME}":"​\/lib\/init\/​rw", ​             "​{#​FSTYPE}":"​tmpfs" ​   }, +    { "​{#​FSNAME}":"/​dev/​shm", ​                   "​{#​FSTYPE}":"​tmpfs" ​   }, 
-    { "​{#​FSNAME}":"​\/dev\/​shm", ​                  ​"​{#​FSTYPE}":"​tmpfs" ​   }, +    { "​{#​FSNAME}":"/​home", ​                      "​{#​FSTYPE}":"​ext3" ​    }, 
-    { "​{#​FSNAME}":"​\/​home", ​                      "​{#​FSTYPE}":"​ext3" ​    }, +    { "​{#​FSNAME}":"/​tmp", ​                       "​{#​FSTYPE}":"​ext3" ​    }, 
-    { "​{#​FSNAME}":"​\/​tmp", ​                       "​{#​FSTYPE}":"​ext3" ​    }, +    { "​{#​FSNAME}":"/​usr", ​                       "​{#​FSTYPE}":"​ext3" ​    }, 
-    { "​{#​FSNAME}":"​\/​usr", ​                       "​{#​FSTYPE}":"​ext3" ​    }, +    { "​{#​FSNAME}":"/​var", ​                       "​{#​FSTYPE}":"​ext3" ​    }, 
-    { "​{#​FSNAME}":"​\/​var", ​                       "​{#​FSTYPE}":"​ext3" ​    }, +    { "​{#​FSNAME}":"/​sys/​fs/​fuse/​connections", ​   "​{#​FSTYPE}":"​fusectl" ​ }
-    { "​{#​FSNAME}":"​\/sys\/fs\/fuse\/​connections",​ "​{#​FSTYPE}":"​fusectl" ​ }+
     ​     ​
     ]     ]
Line 408: Line 426:
  
 <​note>​Вы не обязаны использовать имена макросов FSNAME/​FSTYPE в пользовательских правилах низкоуровневого обнаружения,​ вы можете использовать любые другие имена, которые вам нравятся.</​note>​ <​note>​Вы не обязаны использовать имена макросов FSNAME/​FSTYPE в пользовательских правилах низкоуровневого обнаружения,​ вы можете использовать любые другие имена, которые вам нравятся.</​note>​
 +
 +Обратите внимание на то, что при использовании пользовательского параметра,​ возвращаемые данные ограничены 512 КБ. Для получения более подробных сведений смотрите [[:​ru/​manual/​discovery/​low_level_discovery#​ограничения_данных_для_возвращаемых_значений|ограничения данных для возвращаемых значений LLD]].
 +
 +=== - Использование макросов LLD в контекстах пользовательских макросов ===
 +
 +Пользовательские макросы [[:​ru/​manual/​config/​macros/​usermacros#​контекст_макросов|с контекстом]] можно использовать для получения более гибких порогов в выражениях триггеров. Можно задать разные пороги на уровне пользовательского макроса и затем использовать в константах триггеров в зависимости от обнаруженного контекста. Обнаруженный контекст появляется тогда, когда [[:​ru/​manual/​appendix/​macros/​supported_by_location#​макросы_используемые_в_низкоуровневых_обнаружениях|макрос низкоуровневого обнаружения]],​ используемый в макросах,​ раскрывается в реальные значения.
 +
 +Для иллюстрации мы модем взять данные из примера выше и предположить,​ что будут обнаружены следующие файловые системы:​ ''/'',​ ''/​home'',​ ''/​tmp'',​ ''/​usr'', ​ ''/​var''​.
 +
 +Мы можем добавить прототип триггера,​ который проверяет свободное место на диске, на узел сети, где порог задается при помощи пользовательского макроса с контекстом:​
 +
 +''​{host:​vfs.fs.size[{#​FSNAME},​pfree].last()}<​**{$LOW_SPACE_LIMIT:<​nowiki>"</​nowiki>​{#​FSNAME}<​nowiki>"</​nowiki>​}**''​
 +
 +Затем добавим пользовательские макросы:​
 +  * ''​{$LOW_SPACE_LIMIT}''​ **10**
 +  * ''​{$LOW_SPACE_LIMIT:/​home}''​ **20**
 +  * ''​{$LOW_SPACE_LIMIT:/​tmp}''​ **50**
 +
 +Теперь,​ когда файловые системы будут обнаружены,​ события будут сгенерированы,​ если файловые системы ''/'',​ ''/​usr''​ и ''/​var''​ имеют менее **10**% свободного места на диске, файловая система ''/​home''​ - менее **20**% свободного места на диске или файловая система ''/​tmp''​ - менее **50**% свободного места на диске.
 +
 +<note important>​LLD макросы не поддерживаются внутри контекстов пользовательских макросов в [[ru:​manual:​config:​triggers:​expression#​параметры_функций|параметрах функций триггеров]].</​note>​