def send_zabbix_request(self, data_json):
        HEADER = "ZBXD\1"
        data_json_str = json.dumps(data_json)
        logger.debug("Zabbix Request ----- " + data_json_str)
        data_len= len(data_json_str)
        data_header = struct.pack('<Q', data_len)
        zabbix_req = HEADER.encode() + data_header + data_json_str.encode()
        try:
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.connect ((self.zabbix_host, self.zabbix_port))
            sock.send(zabbix_req)
        except Exception as err:
            logger.critical("Error connecting  to Zabbix Server --  {0}" .format( err))
            return json_err("Error connecting  to Zabbix Server  {0}" .format( err))
        else:
            response_header = sock.recv(5).decode()
            if not response_header == 'ZBXD\1':
                logger.critical('Got invalid responsei from Zabbix')
                return json_err('Got invalid responsei from Zabbix')
            response_data_header = sock.recv(8)
            response_len = struct.unpack('<Q', response_data_header)[0]
            response_raw = sock.recv(response_len)
            sock.close()
            return json.loads(response_raw.decode())