В данном решении передача данных из Платформы НЕЙРОСС в Zаbbix осуществляется посредством задания автоматизации путём отправки HTTP PUT-запроса. На сервере Платформы НЕЙРОСС достаточно настроить задание автоматизации (установка Zabbix-агента не требуется). На сервере Zabbix достаточно импортировать шаблон и назначить его соответствующему узлу. Шаблон для мониторинга Платформы НЕЙРОСС может включать широкий круг данных и событий Платформы. В качестве примера мы сформировали шаблон, который позволяет получать следующие данные: Инвентаризационные данные Платформы НЕЙРОСС: Сообщения о ошибках записи отображаются на панели мониторинга. Обработка данных событий осуществляется штатными средствами Zabbix. Вы можете добавить в данный шаблон собственные элементы данных и триггеры к ним самостоятельно или заказать разработку расширенного шаблона специалистам компании ИТРИУМ.Общие сведения
Имя элемента данных Поле инвентаря узла сети Описание Пример NEYROSS Name Псевдоним Имя узла Платформы, заданное в поле имя узла в разделе Сетевые параметры. Платформа НЕЙРОСС Model Модель Модель узла. ULTIMA-VMC Firmware Version Программное обеспечение Версия программных средств Платформы НЕЙРОСС. 20.27.1342.4654 Manufacturer Поставщик Производитель программного обеспечения. ITRIUM-SPb
Подготовка данных
Подготовка файла шаблона
Скопируйте код ниже и сохраните в файл формата YAML. Например, - zbx_neyross_templates.yaml
.
Обратите внимание на кодировку файла, она должна быть Unix (LF) UFT-8. Специалисты компании ИТРИУМ могут предоставить готовый файл по запросу.
zabbix_export: version: '7.0' template_groups: - uuid: d6f5d86bab264a12b4aa138ba3c8fb38 name: 'Templates/Access Control' - uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6 name: Templates/Applications - uuid: d37f71c7e3f7469bab645852a69a2018 name: 'Templates/Video surveillance' templates: - uuid: ccbf9ca58fdf4d92b1743cd8d4f6b715 template: 'NEYROSS by HTTP' name: 'NEYROSS by HTTP' description: | This template is designed for the effortless deployment of NEYROSS information extraction by Zabbix via HTTP and doesn't require any external scripts. Sample device overview page: https://www.itrium.ru/ Setup: 1. (not release) Set the user name and password in the '{$PASSWORD}' and '{$USER}' macros. 2. Change other macros according to your camera configuration if necessary. vendor: name: Itrium version: 7.0-0 groups: - name: 'Templates/Access Control' - name: Templates/Applications - name: 'Templates/Video surveillance' items: - uuid: 1ff632c0068943b89f3a9d55b44a015a name: 'Firmware Version' type: DEPENDENT key: neyross.firmware_version delay: '0' value_type: CHAR trends: '0' description: 'Версия программного обеспечения Платформы' inventory_link: SOFTWARE preprocessing: - type: JSONPATH parameters: - $..device_information.firmware_version.first() error_handler: DISCARD_VALUE master_item: key: neyross.get_info tags: - tag: component value: system - uuid: 3d753783fd174d83b995a13e3fd93b89 name: 'Get NEYROSS info' type: HTTP_AGENT key: neyross.get_info delay: 1d history: '0' value_type: TEXT trends: '0' authtype: BASIC username: '{$USER}' password: '{$PASSWORD}' description: 'Used to get the NEYROSS information' preprocessing: - type: CHECK_NOT_SUPPORTED parameters: - '-1' - type: JSONPATH parameters: - '$.[?(@.ip4address == "{$NEYROSS_HOST}")]' url: 'http://{HOST.IP}/wsdsrv/http/' status_codes: '200,401' tags: - tag: component value: raw - uuid: 02a485add10d47fba9445267e61f5f50 name: 'NEYROSS record status' type: TRAP key: neyross.get_records_status delay: '0' value_type: TEXT trends: '0' description: 'Receive the alarm events of record status from NEYROSS' preprocessing: - type: CHECK_NOT_SUPPORTED parameters: - '-1' tags: - tag: component value: system triggers: - uuid: 8a7024b50f8941168af71b85a86ec462 expression: 'right(last(/NEYROSS by HTTP/neyross.get_records_status,#1),6)="Ошибка"' name: 'Error of record' priority: HIGH manual_close: 'YES' - uuid: f0987a1fd08b4ae9a564c7eaffba7107 expression: 'count(/NEYROSS by HTTP/neyross.get_records_status,10m,"like","Ошибка")>9' name: 'Many errors of records' priority: DISASTER manual_close: 'YES' - uuid: 4088410fcd60494bbde41efd3a36049e name: Manufacturer type: DEPENDENT key: neyross.manufacturer delay: '0' value_type: CHAR trends: '0' description: 'Производитель Платформы' inventory_link: VENDOR preprocessing: - type: JSONPATH parameters: - $..device_information.manufacturer.first() error_handler: DISCARD_VALUE master_item: key: neyross.get_info tags: - tag: component value: system - uuid: 3298e42d227e4d8e8896fc95bea80719 name: Model type: DEPENDENT key: neyross.model delay: '0' value_type: CHAR trends: '0' description: 'Модель Платформы' inventory_link: MODEL preprocessing: - type: JSONPATH parameters: - $..device_information.model.first() error_handler: DISCARD_VALUE master_item: key: neyross.get_info tags: - tag: component value: system - uuid: 99b6fa8770224c199bd91a19ac8c9ab6 name: 'NEYROSS Name' type: DEPENDENT key: neyross.name delay: '0' value_type: CHAR trends: '0' description: 'Название Платформы' inventory_link: ALIAS preprocessing: - type: JSONPATH parameters: - $..name.first() error_handler: DISCARD_VALUE master_item: key: neyross.get_info tags: - tag: component value: system tags: - tag: class value: platform - tag: target value: access - tag: target value: cctv - tag: target value: itrium - tag: target value: neyross macros: - macro: '{$NEYROSS_HOST}' value: '<SET NEYROSS HOST IP>' description: 'The hostname or IP address of the NEYROSS host.' - macro: '{$PASSWORD}' type: SECRET_TEXT - macro: '{$USER}' value: root description: 'The default user name.'
Подготовка файла импорта задания автоматизации
Скопируйте код ниже и сохраните в файл формата JSON. Например, - задание.json
.
Обратите внимание на кодировку файла, она должна быть Unix (LF) UFT-8. Специалисты компании ИТРИУМ могут предоставить готовый файл по запросу.
{ "signalKey": "systemLog", "filterConfig": { "tags": "10,3,4", "message": "Изменился статус задачи на запись" }, "stats": { "failedSignals": 0, "processedSignals": 11375, "lastHandleTimestamp": "2025-02-10T11:48:20.342+03:00" }, "enabled": true, "action": { "key": "userScript", "config": { "body": "import extensions.automation.signals.{AutomationSignal, SystemLogAutomationSignal}\nimport services.logging.web.{LoggerWithWeb => Logger}\nimport play.api.inject.Injector\nimport play.api.libs.ws.WSClient\nimport scala.concurrent.{ExecutionContext, Future}\nimport extensions.automation.scripts.AutomationActionScript\nimport play.api.libs.ws.WSAuthScheme\nclass PostRequest extends AutomationActionScript {\n // @parameter { \"type\": \"string\", \"title\": \"URL сервера ZABBIX\", \"key\": \"zabbixApiUrl\" }\n val zabbixApiUrl = \"http://10.1.29.28/api_jsonrpc.php\"\n // @parameter { \"type\": \"string\", \"title\": \"API token подключения\", \"key\": \"zabbixApiToken\" }\n val zabbixApiToken = \"fb304e4869efa491aa7b9a42a75718492be4b9fcad320a8eb78866d85e232151\"\n // @parameter { \"type\": \"string\", \"title\": \"Имя Платформы в ZABBIX\", \"key\": \"zabbixHost\" }\n val zabbixHost = \"10.1.29.38\"\n val hostKey: String = \"neyross.get_records_status\"\n private val wsClient: WSClient = ctx.injector.instanceOf[WSClient]\n val logger: Logger = Logger(\"PostRequest\")\n private val ec: ExecutionContext = ctx.injector.instanceOf[ExecutionContext]\n //private val url: String = s\"http://10.0.30.57:8080/api_jsonrpc.php\"\n private val headers: List[(String, String)] = List(\n //(\"Authorization\", \"Bearer 4d3de77ce521ccfe8a5eb928b00039f71b7038a00a55b93dd2c0dc29f112a6ab\"),\n (\"Authorization\", s\"Bearer $zabbixApiToken\"),\n (\"Content-Type\", \"application/json-rpc\")\n )\n \n \n override def onSignal(signal: AutomationSignal): Future[Unit] = {\n signal match {\n case SystemLogAutomationSignal(record) =>\n logger.debug(s\"received system log signal with record = $record\")\n //send value to zabbix host item by itemid\n //val body: String = s\"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"history.push\\\",\\\"params\\\":{\\\"itemid\\\":51512,\\\"value\\\":\\\"${record.message}\\\"},\\\"id\\\":1}\"\n //send value to zabbix host item by hostname and key\n val body: String = s\"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"history.push\\\",\\\"params\\\":{\\\"host\\\":\\\"$zabbixHost\\\",\\\"key\\\":\\\"$hostKey\\\",\\\"value\\\":\\\"${record.message}\\\"},\\\"id\\\":1}\"\n wsClient.url(zabbixApiUrl).withHttpHeaders(headers: _*).post(body).map(_ => ())(ec)\n Future.unit\n case _ =>\n logger.info(\"unknown signal, do nothing\")\n Future.unit\n }\n } \n}\nnew PostRequest" } }, "name": "Отправка информации об ошибке записи" }
Настройка Zabbix
Общие сведения по настройке сервера приведена в разделе [Настройка сервера Zabbix]. Ниже даны сведения по настройке для решения конкретной задачи.
Импорт шаблона
Вам потребуется загрузить подготовленный на предыдущем этапе шаблон в Zabbix. Далее вы можете откорректировать формулировки заголовков и описаний будущих данных и событий.
Выберите Сбор данных (Data Collection) > Шаблоны (Templates). Нажмите на кнопку Импорт (Import).
Укажите путь к файлу шаблона, нажмите на кнопку Импорт (Import), расположенную в правом верхнем углу. В отобразившемся окне укажите путь к файлу шаблона. Нажмите на кнопку Импорт.
В следующем окне просмотрите данные шаблона, нажмите на кнопку Импорт (Import). Новый шаблон будет добавлен в список шаблонов.
Найдите шаблон, это удобно путём фильтрации по имени. Выберите Элементы данных (Items).
Вы увидите список данных, собираемых данным шаблоном.
За получение событий о тревогах заданий на запись «отвечает» элемент NEYROSS record status с ключом neyross.get_records_status. Вы можете настроить другие элементы данных для получения сведений о других событиях, фиксируемых в Системном журнале Платформы НЕЙРОСС.
Добавление узла Платформы НЕЙРОСС
Выберите Сбор данных (Data Collection) > Узлы сети (Hosts). Нажмите на кнопку Создать узел сети (Create host).
Задайте параметры узла согласно таблице ниже. Нажмите на кнопку Добавить (Add).
Поле | Комментарий |
---|---|
Имя узла сети (Host name) | Введите уникальное Имя узла. При работающем Zabbix-агенте на настраиваемом вами узле сети, параметр Hostname из файла конфигурации агента должен иметь такое же значение, как и введенное здесь имя узла сети. Имя из этого параметра необходимо для обработки активных проверок. |
Видимое имя (Visible name) | Впишите имя для отображения в интерфейcах Zabbix и Платформы НЕЙРОСС. |
Шаблоны (Templates) | Выберите ранее загруженный шаблон NEYROSS by HTTP. Вы также можете по своему желанию использовать другие шаблоны. |
Группы узлов сети (Host groups) | Для работы с интерфейсом Zabbix вы можете использовать любые группы узлов. При необходимости мониторинга данного узла из АРМ Центр используйте группу NEYROSS. |
Интерфейсы (Interfaces) | Нажмите Добавить (Add) и укажите интерфейс Агент. Укажите IP-адрес или DNS-имя узла. Задайте номер TCP/UDP порта. Значения по умолчанию - 10050. |
Активировано (Enabled) | Оставьте флаг Активировано (Enabled), чтобы узел сети был активным, готовым к мониторингу. Если не отмечено, узел сети неактивен, его состояния не отслеживаются. |
Настройка учётной записи
Для передачи данных с Платформы НЕЙРОСС на узел Zabbix требуется учётная запись с соответствующими правами.
Выберите Пользователи > Роли пользователей. Нажмите на кнопку Создать роль пользователя.
В разделе Доступ к API выберите Список разрешений и выберите метод history.push.
Создайте учётную запись пользователя с данной ролью. Сгенерируйте для этой учётной записи API-токен. Дополнительная информация приведена в разделе [Настройка сервера Zabbix].
Настройка Платформы НЕЙРОСС
Лицензирование
Для обеспечения функции выполнения произвольного скрипта в заданиях автоматизации требуются перечисленные ниже лицензии. Проверьте наличие требуемых лицензий в параметрах лицензии [Основные настройки]. В противном случае требуется приобрести лицензии [Лицензирование | Платформа НЕЙРОСС].
Тип узла | Параметр лицензии | Комментарий |
---|---|---|
Платформа НЕЙРОСС | НЕЙРОСС Автоматика | НЕЙРОСС Автоматика: подсистема организации автоматического управления (включает функцию запуска управляющей команды) |
НЕЙРОСС Скрипт | Использование пользовательского скрипта управления. |
Настройка задания автоматизации
В разделе Автоматизация выполните импорт из файла, подготовленного на предыдущем этапе. Порядок импорта описан в разделе [Автоматизация].
В результате отобразятся настройки, заданные в файле импорта:
- В группе Параметры сигнала заданы условия запуска задания автоматизации — задание выполняется каждый раз при получении в Системном журнале сообщения с текстом «Изменился статус задачи на запись» с указанными метками.
- В группе Параметры действия выбран тип Пользовательский скрипт, указаны параметры скрипта.
Измените параметры скрипта согласно таблице ниже.
Поле | Комментарий |
---|---|
URL сервера ZABBIX. | Укажите URL в формате: http://[ip-адрес Zabbix:порт]/api_jsonrpc.php Где [ip-адрес Zabbix:порт] - ip-адрес сервера Zabbix и используемый порт. Если используется стандартный порт 80, порт можно не указывать. |
API токен подключения | Замените API токен из примера на токен, сгенерированный для учётной записи с правом доступа к API [Настройка учётной записи]. |
Имя Платформы в ZABBIX | Укажите значение в поле Имя узла сети (Host name), которое вы указали при добавлении узла, соответствующего Платформе НЕЙРОСС в Zabbix [Добавление узла Платформы НЕЙРОСС]. |
Нажмите на кнопку Создать новое задание.
Задание автоматизации будет сохранено и запущено. При получении сообщения Системным журналом, задание будет выполнено, будет отправлен запрос за сервер Zabbix. При получении данных сработают настроенные триггеры: одна ошибка записи, много ошибок записи.
Мониторинг других показателей
Данный метод позволяет производить мониторинг любых событий, фиксируемых в Системном журнале: вход в интерфейс, попытки подбора пароля, контроль операторов и многое другое [Системный журнал].
Для каждого нового параметра нужно выполнить следующую последовательность действий.
№ | Задача | Комментарий |
---|---|---|
1 | Создать новое задание на основе старого | Это легко сделать с помощью копирования [Автоматизация]. |
2 | Сформировать новый фильтр записей Системного журнала | Инструкция приведена в разделе [Тип сигнала: по сообщению системного журнала]. |
3 | Изменить в коде скрипта ключ элемента данных, который настроен в шаблоне для получения данных | В примере использован элемент NEYROSS record status с ключом neyross.get_records_status [Импорт шаблона]. Вам потребуется создать новый элемент и указать новый ключ. Затем в коде скрипта neyross.get_records_status замените ключ на новый. Инструкции по редактированию скрипта приведены в разделе [Тип действия: пользовательский скрипт]. |