Hikvision

Hikvision, is a Chinese partially state-owned manufacturer and supplier of video surveillance equipment for civilian and military purposes.

Available solutions




This template is for Zabbix version: 7.0
Also available for: 6.4 6.2 6.0 5.4

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/cctv/hikvision?at=release/7.0

Hikvision camera by HTTP

Overview

This template is designed for the effortless deployment of Hikvision cameras monitoring by Zabbix via HTTP and doesn't require any external scripts.

Sample device overview page

Requirements

Zabbix version: 7.0 and higher.

Tested versions

This template has been tested on:

  • DS-I220
  • DS-I450
  • DS-2CD2620F-I
  • DS-2CD1631FWD-I
  • DS-2CD2020F-I
  • DS-2CD2042WD-I
  • DS-2CD2T43G0-I5
  • DS-2DF5286-AEL
  • DS-2CD2T25FWD-I5
  • DS-2CD4A35FWD-IZHS
  • DS-I200
  • DS-2CD1031-I
  • DS-2CD2125FWD-IS
  • DS-I122
  • DS-I203
  • DS-N201
  • DS-2CD2622FWD-IZS
  • DS-2CD2023G0-I

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

  1. Set the hostname or IP address of the Hikvision ISAPI host in the {$HIKVISION_ISAPI_HOST} macro.

  2. Set the user name and password in the {$PASSWORD} and {$USER} macros.

  3. Change other macros according to your camera configuration if necessary.

Macros used

Name Description Default
{$CPU.UTIL.CRIT} 90
{$HIKVISION_ISAPI_HOST}

The hostname or IP address of the Hikvision ISAPI host.

<SET ISAPI HOST>
{$HIKVISION_ISAPI_PORT}

ISAPI port on device

80
{$HIKVISION_MAIN_CHANNEL_ID}

Main video stream ID

101
{$HIKVISION_STREAM_HEIGHT}

Main video stream image height

1080
{$HIKVISION_STREAM_WIDTH}

Main video stream image width

1920
{$MEMORY.UTIL.MAX} 95
{$PASSWORD} 1234
{$USER} admin

Items

Name Description Type Key and additional info
Boot loader released date Dependent item hikvision_cam.boot_released_date

Preprocessing

  • JSON Path: $.DeviceInfo.bootReleasedDate

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Boot loader version Dependent item hikvision_cam.boot_version

Preprocessing

  • JSON Path: $.DeviceInfo.bootVersion

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

CPU utilization

CPU utilization in %

Dependent item hikvision_cam.cpu.util

Preprocessing

  • JSON Path: $.DeviceStatus.CPUList.CPU.cpuUtilization

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Current device time Dependent item hikvision_cam.current_device_time

Preprocessing

  • JSON Path: $.DeviceStatus.currentDeviceTime

    ⛔️Custom on fail: Discard value

Device description Dependent item hikvision_cam.device_description

Preprocessing

  • JSON Path: $.DeviceInfo.deviceDescription

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Device ID Dependent item hikvision_cam.device_id

Preprocessing

  • JSON Path: $.DeviceInfo.deviceID

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Device location Dependent item hikvision_cam.device_location

Preprocessing

  • JSON Path: $.DeviceInfo.deviceLocation

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Device name Dependent item hikvision_cam.device_name

Preprocessing

  • JSON Path: $.DeviceInfo.deviceName

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Device type Dependent item hikvision_cam.device_type

Preprocessing

  • JSON Path: $.DeviceInfo.deviceType

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Encoder released date Dependent item hikvision_cam.encoder_released_date

Preprocessing

  • JSON Path: $.DeviceInfo.encoderReleasedDate

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Encoder version Dependent item hikvision_cam.encoder_version

Preprocessing

  • JSON Path: $.DeviceInfo.encoderVersion

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Firmware released date Dependent item hikvision_cam.firmware_released_date

Preprocessing

  • JSON Path: $.DeviceInfo.firmwareReleasedDate

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Firmware version Dependent item hikvision_cam.firmware_version

Preprocessing

  • JSON Path: $.DeviceInfo.firmwareVersion

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Get device info

Used to get the device information

HTTP agent hikvision_cam.get_info

Preprocessing

  • Check for not supported value: any error

    ⛔️Custom on fail: Set value to: {"html":{"head":{"title":"Connection error"}}}

  • XML to JSON:

    ⛔️Custom on fail: Set value to: {"html":{"head":{"title":"Connection error"}}}

Get device info: Login status Dependent item hikvision_cam.get_info.login_status

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 1h

Get system status

It is used to get the status information of the device

HTTP agent hikvision_cam.get_status

Preprocessing

  • Check for not supported value: any error

    ⛔️Custom on fail: Set value to: {"html":{"head":{"title":"Connection error"}}}

  • XML to JSON:

    ⛔️Custom on fail: Set value to: {"html":{"head":{"title":"Connection error"}}}

Get system status: Login status Dependent item hikvision_cam.get_status.login_status

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 1h

Get streaming channels

Used to get the properties of streaming channels for the device

HTTP agent hikvision_cam.get_streaming

Preprocessing

  • Check for not supported value: any error

    ⛔️Custom on fail: Set value to: {"html":{"head":{"title":"Connection error"}}}

  • XML to JSON:

    ⛔️Custom on fail: Set value to: {"html":{"head":{"title":"Connection error"}}}

Get streaming channels: Login status Dependent item hikvision_cam.get_streaming.login_status

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 1h

Hardware version Dependent item hikvision_cam.hardware_version

Preprocessing

  • JSON Path: $.DeviceInfo.hardwareVersion

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

MACaddress Dependent item hikvision_cam.mac_address

Preprocessing

  • JSON Path: $.DeviceInfo.macAddress

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Memory utilization

Memory utilization in %

Dependent item hikvision_cam.memory.usage

Preprocessing

  • JSON Path: $.DeviceStatus.MemoryList.Memory.memoryUsage

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Model Dependent item hikvision_cam.model

Preprocessing

  • JSON Path: $.DeviceInfo.model

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Serial number Dependent item hikvision_cam.serial_number

Preprocessing

  • JSON Path: $.DeviceInfo.serialNumber

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Supported beep Dependent item hikvision_cam.support_beep

Preprocessing

  • JSON Path: $.DeviceInfo.supportBeep

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Supported video loss Dependent item hikvision_cam.support_video_loss

Preprocessing

  • JSON Path: $.DeviceInfo.supportVideoLoss

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

System contact Dependent item hikvision_cam.system_contact

Preprocessing

  • JSON Path: $.DeviceInfo.systemContact

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Telecontrol ID Dependent item hikvision_cam.telecontrol_id

Preprocessing

  • JSON Path: $.DeviceInfo.telecontrolID

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Uptime

The system uptime expressed in the following format: "N days, hh:mm:ss".

Dependent item hikvision_cam.uptime

Preprocessing

  • JSON Path: $.DeviceStatus.deviceUpTime

    ⛔️Custom on fail: Discard value

Triggers

Name Description Expression Severity Dependencies and additional info
High CPU utilization

The CPU utilization is too high. The system might be slow to respond.

min(/Hikvision camera by HTTP/hikvision_cam.cpu.util,5m)>{$CPU.UTIL.CRIT} Warning
Version has changed

Hikvision camera version has changed. Acknowledge to close the problem manually.

last(/Hikvision camera by HTTP/hikvision_cam.firmware_version,#1)<>last(/Hikvision camera by HTTP/hikvision_cam.firmware_version,#2) and length(last(/Hikvision camera by HTTP/hikvision_cam.firmware_version))>0 Info Manual close: Yes
Authorisation error

Check the correctness of the authorization data

last(/Hikvision camera by HTTP/hikvision_cam.get_info.login_status)=1 or last(/Hikvision camera by HTTP/hikvision_cam.get_streaming.login_status)=1 or last(/Hikvision camera by HTTP/hikvision_cam.get_status.login_status)=1 Warning Manual close: Yes
Error receiving data

Check the availability of the HTTP port

last(/Hikvision camera by HTTP/hikvision_cam.get_info.login_status)=2 or last(/Hikvision camera by HTTP/hikvision_cam.get_streaming.login_status)=2 or last(/Hikvision camera by HTTP/hikvision_cam.get_status.login_status)=2 Warning Manual close: Yes
High memory utilization

The system is running out of free memory.

min(/Hikvision camera by HTTP/hikvision_cam.memory.usage,5m)>{$MEMORY.UTIL.MAX} Average
Camera has been replaced

Camera serial number has changed. Acknowledge to close the problem manually.

last(/Hikvision camera by HTTP/hikvision_cam.serial_number,#1)<>last(/Hikvision camera by HTTP/hikvision_cam.serial_number,#2) and length(last(/Hikvision camera by HTTP/hikvision_cam.serial_number))>0 Info Manual close: Yes
Camera has been restarted

Uptime is less than 10 minutes.

last(/Hikvision camera by HTTP/hikvision_cam.uptime)<10m Info Manual close: Yes

LLD rule PTZ discovery

Name Description Type Key and additional info
PTZ discovery HTTP agent hikvision_cam.ptz.discovery

Preprocessing

  • XML to JSON:
  • JavaScript: The text is too long. Please see the template.

Item prototypes for PTZ discovery

Name Description Type Key and additional info
Channel "{#PTZ_CHANNEL_ID}": Get PTZ info: Channel "{#PTZ_CHANNEL_ID}": Login status Dependent item hikvision_cam.get_ptz.login_status[{#PTZ_CHANNEL_ID}]

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 1h

Channel "{#PTZ_CHANNEL_ID}": Get PTZ info

High precision positioning which is accurate to a bit after the decimal point

HTTP agent hikvision_cam.get_ptz[{#PTZ_CHANNEL_ID}]

Preprocessing

  • Check for not supported value: any error

    ⛔️Custom on fail: Set value to: {"html":{"head":{"title":"Connection error"}}}

  • XML to JSON:

    ⛔️Custom on fail: Set value to: {"html":{"head":{"title":"Connection error"}}}

Channel "{#PTZ_CHANNEL_ID}": Absolute zoom Dependent item hikvision_cam.ptz.absolute_zoom[{#PTZ_CHANNEL_ID}]

Preprocessing

  • JSON Path: $.PTZStatus.AbsoluteHigh.absoluteZoom

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.1

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#PTZ_CHANNEL_ID}": Azimuth Dependent item hikvision_cam.ptz.azimuth[{#PTZ_CHANNEL_ID}]

Preprocessing

  • JSON Path: $.PTZStatus.AbsoluteHigh.azimuth

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.1

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#PTZ_CHANNEL_ID}": Elevation Dependent item hikvision_cam.ptz.elevation[{#PTZ_CHANNEL_ID}]

Preprocessing

  • JSON Path: $.PTZStatus.AbsoluteHigh.elevation

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.1

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Trigger prototypes for PTZ discovery

Name Description Expression Severity Dependencies and additional info
Channel "{#PTZ_CHANNEL_ID}": Authorisation error

Check the correctness of the authorization data

last(/Hikvision camera by HTTP/hikvision_cam.get_ptz.login_status[{#PTZ_CHANNEL_ID}])=1 Warning Manual close: Yes
Depends on:
  • Authorisation error
Channel "{#PTZ_CHANNEL_ID}": Error receiving data

Check the availability of the HTTP port

last(/Hikvision camera by HTTP/hikvision_cam.get_ptz.login_status[{#PTZ_CHANNEL_ID}])=2 Warning Manual close: Yes
Depends on:
  • Error receiving data
Channel "{#PTZ_CHANNEL_ID}": PTZ position changed

The direction of the camera has changed

last(/Hikvision camera by HTTP/hikvision_cam.ptz.absolute_zoom[{#PTZ_CHANNEL_ID}],#1)<>last(/Hikvision camera by HTTP/hikvision_cam.ptz.absolute_zoom[{#PTZ_CHANNEL_ID}],#2) or last(/Hikvision camera by HTTP/hikvision_cam.ptz.azimuth[{#PTZ_CHANNEL_ID}],#1)<>last(/Hikvision camera by HTTP/hikvision_cam.ptz.azimuth[{#PTZ_CHANNEL_ID}],#2) or last(/Hikvision camera by HTTP/hikvision_cam.ptz.elevation[{#PTZ_CHANNEL_ID}],#1)<>last(/Hikvision camera by HTTP/hikvision_cam.ptz.elevation[{#PTZ_CHANNEL_ID}],#2) Info Manual close: Yes

LLD rule Streaming channels discovery

Name Description Type Key and additional info
Streaming channels discovery HTTP agent hikvision_cam.streaming.discovery

Preprocessing

  • XML to JSON:
  • JavaScript: The text is too long. Please see the template.

Item prototypes for Streaming channels discovery

Name Description Type Key and additional info
Channel "{#CHANNEL_ID}": Constant bitRate Dependent item hikvision_cam.constant_bit_rate[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $.[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": Fixed quality Dependent item hikvision_cam.fixed_quality[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": GovLength Dependent item hikvision_cam.gov_length[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": H264Profile Dependent item hikvision_cam.h264Profile[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": Key frame interval Dependent item hikvision_cam.key_frame_interval[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.01

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": Frame rate (max) Dependent item hikvision_cam.max_frame_rate[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.01

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": Smoothing Dependent item hikvision_cam.smoothing[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": Snapshot image type Dependent item hikvision_cam.snap_shot_image_type[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": VBR lower Dependent item hikvision_cam.vbr_lower_cap[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": VBR upper Dependent item hikvision_cam.vbr_upper_cap[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

Channel "{#CHANNEL_ID}": Video codec type Dependent item hikvision_cam.video_codec_type[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": Video quality control type Dependent item hikvision_cam.video_quality_control_type[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": Resolution height Dependent item hikvision_cam.video_resolution_height[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": Resolution width Dependent item hikvision_cam.video_resolution_width[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Channel "{#CHANNEL_ID}": Video scan type Dependent item hikvision_cam.video_scan_type[{#CHANNEL_ID}]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: $[0]

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Trigger prototypes for Streaming channels discovery

Name Description Expression Severity Dependencies and additional info
Channel "{#CHANNEL_ID}": Invalid video stream resolution parameters

expected: {$HIKVISION_STREAM_WIDTH} px x {$HIKVISION_STREAM_HEIGHT} px
received: {ITEM.LASTVALUE2} x {ITEM.LASTVALUE1}

last(/Hikvision camera by HTTP/hikvision_cam.video_resolution_height[{#CHANNEL_ID}])<>{$HIKVISION_STREAM_HEIGHT} or last(/Hikvision camera by HTTP/hikvision_cam.video_resolution_width[{#CHANNEL_ID}])<>{$HIKVISION_STREAM_WIDTH} Warning Manual close: Yes
Channel "{#CHANNEL_ID}": Parameters of video stream are changed last(/Hikvision camera by HTTP/hikvision_cam.fixed_quality[{#CHANNEL_ID}],#1)<>last(/Hikvision camera by HTTP/hikvision_cam.fixed_quality[{#CHANNEL_ID}],#2) or last(/Hikvision camera by HTTP/hikvision_cam.constant_bit_rate[{#CHANNEL_ID}],#1)<>last(/Hikvision camera by HTTP/hikvision_cam.constant_bit_rate[{#CHANNEL_ID}],#2) or last(/Hikvision camera by HTTP/hikvision_cam.video_quality_control_type[{#CHANNEL_ID}],#1)<>last(/Hikvision camera by HTTP/hikvision_cam.video_quality_control_type[{#CHANNEL_ID}],#2) or last(/Hikvision camera by HTTP/hikvision_cam.video_resolution_width[{#CHANNEL_ID}],#1)<>last(/Hikvision camera by HTTP/hikvision_cam.video_resolution_width[{#CHANNEL_ID}],#2) or last(/Hikvision camera by HTTP/hikvision_cam.video_resolution_height[{#CHANNEL_ID}],#1)<>last(/Hikvision camera by HTTP/hikvision_cam.video_resolution_height[{#CHANNEL_ID}],#2) Info Manual close: Yes

Feedback

Please report any issues with the template at https://support.zabbix.com

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums

Articles and documentation

+ Propose new article

Didn't find what you are looking for?