Общие сведенияВ данном решении передача данных из Платформы НЕЙРОСС в Zаbbix осуществляется посредством задания автоматизации путём отправки HTTP PUT-запроса. На сервере Платформы НЕЙРОСС достаточно настроить задание автоматизации (установка Zabbix-агента не требуется). На сервере Zabbix достаточно импортировать шаблон и назначить его соответствующему узлу. Шаблон для мониторинга Платформы НЕЙРОСС может включать широкий круг данных и событий Платформы. В качестве примера мы сформировали шаблон, который позволяет получать следующие данные:
Инвентаризационные данные Платформы НЕЙРОСС:
Сообщения о ошибках записи отображаются на панели мониторинга. Обработка данных событий осуществляется штатными средствами Zabbix.
|
Скопируйте код ниже и сохраните в файл формата 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. Далее вы можете откорректировать формулировки заголовков и описаний будущих данных и событий.
Выберите Сбор данных (Data Collection) > Шаблоны (Templates). Нажмите на кнопку Импорт (Import).
Укажите путь к файлу шаблона, нажмите на кнопку Импорт (Import), расположенную в правом верхнем углу. В отобразившемся окне укажите путь к файлу шаблона. Нажмите на кнопку Импорт.

В следующем окне просмотрите данные шаблона, нажмите на кнопку Импорт (Import). Новый шаблон будет добавлен в список шаблонов.

Найдите шаблон, это удобно путём фильтрации по имени. Выберите Элементы данных (Items).

Вы увидите список данных, собираемых данным шаблоном.

За получение событий о тревогах заданий на запись «отвечает» элемент NEYROSS record status с ключом neyross.get_records_status. Вы можете настроить другие элементы данных для получения сведений о других событиях, фиксируемых в Системном журнале Платформы НЕЙРОСС.

Выберите Сбор данных (Data Collection) > Узлы сети (Hosts). Нажмите на кнопку Создать узел сети (Create host).

Задайте параметры узла согласно таблице ниже. Нажмите на кнопку Добавить (Add).

| Поле | Комментарий | |
|---|---|---|
| Имя узла сети (Host name) | Введите уникальное Имя узла.
| |
| Видимое имя (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 в формате:
Где [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 замените ключ на новый. Инструкции по редактированию скрипта приведены в разделе [Тип действия: пользовательский скрипт].
|