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: 6.4
Also available for: 6.2 6.0 5.4

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

Hikvision camera by HTTP

Overview

Sample device overview page: https://www.hikvision.com/en/products/IP-Products/Network-Cameras/

Requirements

Zabbix version: 6.4 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

Define macros according to your camera configuration

Macros used

Name Description Default
{$CPU.UTIL.CRIT} 90
{$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
Hikvision camera: 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

Hikvision camera: Boot loader version Dependent item hikvision_cam.boot_version

Preprocessing

  • JSON Path: $.DeviceInfo.bootVersion

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: 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

Hikvision camera: Current device time Dependent item hikvision_cam.current_device_time

Preprocessing

  • JSON Path: $.DeviceStatus.currentDeviceTime

    ⛔️Custom on fail: Discard value

Hikvision camera: Device description Dependent item hikvision_cam.device_description

Preprocessing

  • JSON Path: $.DeviceInfo.deviceDescription

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: Device ID Dependent item hikvision_cam.device_id

Preprocessing

  • JSON Path: $.DeviceInfo.deviceID

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: Device location Dependent item hikvision_cam.device_location

Preprocessing

  • JSON Path: $.DeviceInfo.deviceLocation

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: Device name Dependent item hikvision_cam.device_name

Preprocessing

  • JSON Path: $.DeviceInfo.deviceName

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Hikvision camera: Device type Dependent item hikvision_cam.device_type

Preprocessing

  • JSON Path: $.DeviceInfo.deviceType

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: 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

Hikvision camera: Encoder version Dependent item hikvision_cam.encoder_version

Preprocessing

  • JSON Path: $.DeviceInfo.encoderVersion

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: 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

Hikvision camera: Firmware version Dependent item hikvision_cam.firmware_version

Preprocessing

  • JSON Path: $.DeviceInfo.firmwareVersion

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: Get device info

Used to get the device information

HTTP agent hikvision_cam.get_info

Preprocessing

  • Check for not supported value:

    ⛔️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"}}}

Hikvision camera: 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

Hikvision camera: 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:

    ⛔️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"}}}

Hikvision camera: 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

Hikvision camera: 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:

    ⛔️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"}}}

Hikvision camera: 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

Hikvision camera: Hardware version Dependent item hikvision_cam.hardware_version

Preprocessing

  • JSON Path: $.DeviceInfo.hardwareVersion

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: MACaddress Dependent item hikvision_cam.mac_address

Preprocessing

  • JSON Path: $.DeviceInfo.macAddress

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: 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

Hikvision camera: Model Dependent item hikvision_cam.model

Preprocessing

  • JSON Path: $.DeviceInfo.model

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: Serial number Dependent item hikvision_cam.serial_number

Preprocessing

  • JSON Path: $.DeviceInfo.serialNumber

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: Supported beep Dependent item hikvision_cam.support_beep

Preprocessing

  • JSON Path: $.DeviceInfo.supportBeep

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: 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

Hikvision camera: System contact Dependent item hikvision_cam.system_contact

Preprocessing

  • JSON Path: $.DeviceInfo.systemContact

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: Telecontrol ID Dependent item hikvision_cam.telecontrol_id

Preprocessing

  • JSON Path: $.DeviceInfo.telecontrolID

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 24h

Hikvision camera: 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
Hikvision camera: 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
Hikvision camera: 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
Hikvision camera: 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
Hikvision camera: 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
Hikvision camera: 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
Hikvision camera: 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
Hikvision 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
Hikvision camera: 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

Hikvision camera: 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:

    ⛔️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
Hikvision camera: Authorisation error on get PTZ channels

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:
  • Hikvision camera: Authorisation error
Hikvision camera: Error receiving data on PTZ channels

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:
  • Hikvision camera: 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 integration you need?