Перейти к концу метаданных
Переход к началу метаданных

Часто на объекте или в обслуживающей организации используется Zabbix для контроля технического состояние серверов и сетевого оборудования. При этом бывает удобно получать дополнительно инвентаризационные данные по Платформе НЕЙРОСС или уведомления о любых событиях Платформы НЕЙРОСС прямо в Zabbix. В данном разделе приведены сведения о настройке Платформы НЕЙРОСС и Zabbix для обеспечения такого взаимодействия.

Приведены скриншоты приложения Zabbix версии 7.0. При несовпадении интерфейсов следуйте документации от производителя.

Инструкция по передаче любых данных из Zabbix на Платформу НЕЙРОСС для мониторинга через АРМ Центр приведена в разделе [Мониторинг серверов и сетей: интеграция с Zabbix (агент, SNMP, JMX, IPMI)].

 Содержание:

Общие сведения

В данном решении передача данных из Платформы НЕЙРОСС в Zаbbix осуществляется посредством задания автоматизации путём отправки HTTP PUT-запроса. На сервере Платформы НЕЙРОСС достаточно настроить задание автоматизации (установка Zabbix-агента не требуется). На сервере Zabbix достаточно импортировать шаблон и назначить его соответствующему узлу. 

Шаблон для мониторинга Платформы НЕЙРОСС может включать широкий круг данных и событий Платформы.  В качестве примера мы сформировали шаблон, который позволяет получать следующие данные:

  • Имя сервера Платформы НЕЙРОСС
  • Модель
  • Версия программных средств Платформы НЕЙРОСС
  • Производитель
  • Статус задач на запись - данный элемент данных содержит два триггера: ошибка записи, более 9 ошибок записи за последние 10 минут.

Инвентаризационные данные Платформы НЕЙРОСС: 

Имя элемента данныхПоле инвентаря узла сетиОписаниеПример
NEYROSS NameПсевдонимИмя узла Платформы, заданное в поле имя узла в разделе Сетевые параметры.Платформа НЕЙРОСС
ModelМодель Модель узла.ULTIMA-VMC
Firmware VersionПрограммное обеспечениеВерсия программных средств Платформы НЕЙРОСС.20.27.1342.4654
ManufacturerПоставщикПроизводитель программного обеспечения.ITRIUM-SPb

Сообщения о ошибках записи отображаются на панели мониторинга. Обработка данных событий осуществляется штатными средствами 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]. Ниже даны сведения по настройке для решения конкретной задачи.

Импорт шаблона

Вам потребуется загрузить подготовленный на предыдущем этапе шаблон в 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 замените ключ на новый.

Инструкции по редактированию скрипта приведены в разделе [Тип действия: пользовательский скрипт].

  • Нет меток