diff --git a/include/zbxpreproc.h b/include/zbxpreproc.h
index caee7153e15..0c012c6d543 100644
--- a/include/zbxpreproc.h
+++ b/include/zbxpreproc.h
@@ -103,6 +103,7 @@ ZBX_PTR_VECTOR_DECL(pp_top_stats_ptr, zbx_pp_top_stats_t *)
 int	zbx_diag_add_preproc_info(const struct zbx_json_parse *jp, struct zbx_json *json, char **error);
 void zbx_preproc_stats_ext_get(struct zbx_json *json, const void *arg);
 zbx_uint64_t	zbx_preprocessor_get_queue_size(void);
+zbx_uint64_t	zbx_preprocessor_get_size(void);
 void	zbx_preprocessor_get_worker_info(zbx_process_info_t *info);
 void	zbx_preprocess_item_value(zbx_uint64_t itemid, zbx_uint64_t hostid, unsigned char item_value_type,
 		unsigned char item_flags, AGENT_RESULT *result, zbx_timespec_t *ts, unsigned char state, char *error);
diff --git a/src/libs/zbxpoller/checks_internal.c b/src/libs/zbxpoller/checks_internal.c
index 4c39f1e7715..b716e97e034 100644
--- a/src/libs/zbxpoller/checks_internal.c
+++ b/src/libs/zbxpoller/checks_internal.c
@@ -946,6 +946,10 @@ int	get_value_internal(const zbx_dc_item_t *item, AGENT_RESULT *result, const zb
 
 		SET_UI64_RESULT(result, zbx_preprocessor_get_queue_size());
 	}
+	else if (0 == strcmp(tmp, "preprocessing_size"))
+	{
+		SET_UI64_RESULT(result, zbx_preprocessor_get_size());
+	}
 	else if (0 == strcmp(tmp, "discovery_queue"))			/* zabbix[discovery_queue] */
 	{
 		zbx_uint64_t	size;
diff --git a/src/libs/zbxpreproc/pp_manager.c b/src/libs/zbxpreproc/pp_manager.c
index f27429a8b19..e9ef4221d13 100644
--- a/src/libs/zbxpreproc/pp_manager.c
+++ b/src/libs/zbxpreproc/pp_manager.c
@@ -941,6 +941,11 @@ static void	preprocessor_reply_queue_size(zbx_pp_manager_t *manager, zbx_ipc_cli
 	zbx_ipc_client_send(client, ZBX_IPC_PREPROCESSOR_QUEUE, (unsigned char *)&pending_num, sizeof(pending_num));
 }
 
+static void	preprocessor_reply_size(zbx_ipc_client_t *client, zbx_uint64_t size_counter)
+{
+	zbx_ipc_client_send(client, ZBX_IPC_PREPROCESSOR_SIZE, (unsigned char *)&size_counter, sizeof(size_counter));
+}
+
 /******************************************************************************
  *                                                                            *
  * Purpose: flush processed value task                                        *
@@ -1229,7 +1234,7 @@ ZBX_THREAD_ENTRY(zbx_pp_manager_thread, args)
 	zbx_vector_pp_task_ptr_t		tasks;
 	zbx_uint32_t				rtc_msgs[] = {ZBX_RTC_LOG_LEVEL_INCREASE, ZBX_RTC_LOG_LEVEL_DECREASE};
 	zbx_uint64_t				pending_num, finished_num, processed_num = 0, queued_num = 0,
-						processing_num = 0;
+						processing_num = 0, size_counter = 0;
 
 	const zbx_thread_pp_manager_args	*pp_manager_args_in = (const zbx_thread_pp_manager_args *)
 						(((zbx_thread_args_t *)args)->args);
@@ -1307,6 +1312,8 @@ ZBX_THREAD_ENTRY(zbx_pp_manager_thread, args)
 
 		if (NULL != message)
 		{
+			size_counter += message->size;
+
 			switch (message->code)
 			{
 				case ZBX_IPC_PREPROCESSOR_REQUEST:
@@ -1315,6 +1322,9 @@ ZBX_THREAD_ENTRY(zbx_pp_manager_thread, args)
 				case ZBX_IPC_PREPROCESSOR_QUEUE:
 					preprocessor_reply_queue_size(manager, client);
 					break;
+				case ZBX_IPC_PREPROCESSOR_SIZE:
+					preprocessor_reply_size(client, size_counter);
+					break;
 				case ZBX_IPC_PREPROCESSOR_TEST_REQUEST:
 					preprocessor_add_test_request(manager, client, message);
 					break;
diff --git a/src/libs/zbxpreproc/pp_protocol.c b/src/libs/zbxpreproc/pp_protocol.c
index c6b42a45823..4be46d4f408 100644
--- a/src/libs/zbxpreproc/pp_protocol.c
+++ b/src/libs/zbxpreproc/pp_protocol.c
@@ -930,6 +930,26 @@ zbx_uint64_t	zbx_preprocessor_get_queue_size(void)
 	return size;
 }
 
+/******************************************************************************
+ *                                                                            *
+ * Purpose: get queue size (enqueued value count) of preprocessing manager    *
+ *                                                                            *
+ * Return value: enqueued item count                                          *
+ *                                                                            *
+ ******************************************************************************/
+zbx_uint64_t	zbx_preprocessor_get_size(void)
+{
+	 zbx_uint64_t		size;
+	 zbx_ipc_message_t	message;
+ 
+	 zbx_ipc_message_init(&message);
+	 preprocessor_send(ZBX_IPC_PREPROCESSOR_SIZE, NULL, 0, &message);
+	 memcpy(&size, message.data, sizeof(zbx_uint64_t));
+	 zbx_ipc_message_clean(&message);
+ 
+	 return size;
+}
+
 /******************************************************************************
  *                                                                            *
  * Purpose: packs preprocessing step request for serialization                *
diff --git a/src/libs/zbxpreproc/pp_protocol.h b/src/libs/zbxpreproc/pp_protocol.h
index 9a16d3b79e1..5b4477d9c7e 100644
--- a/src/libs/zbxpreproc/pp_protocol.h
+++ b/src/libs/zbxpreproc/pp_protocol.h
@@ -33,6 +33,7 @@
 #define ZBX_IPC_PREPROCESSOR_TOP_STATS_RESULT		10008
 #define ZBX_IPC_PREPROCESSOR_USAGE_STATS		10009
 #define ZBX_IPC_PREPROCESSOR_TOP_PEAK			10010
+#define ZBX_IPC_PREPROCESSOR_SIZE			10011
 
 /* item value data used in preprocessing manager */
 typedef struct
diff --git a/src/libs/zbxpreproc/pp_stats.c b/src/libs/zbxpreproc/pp_stats.c
index 70d249f321c..8eddc1d8fe4 100644
--- a/src/libs/zbxpreproc/pp_stats.c
+++ b/src/libs/zbxpreproc/pp_stats.c
@@ -22,4 +22,5 @@ void zbx_preproc_stats_ext_get(struct zbx_json *json, const void *arg)
 
 	/* zabbix[preprocessing_queue] */
 	zbx_json_adduint64(json, "preprocessing_queue", zbx_preprocessor_get_queue_size());
+	zbx_json_adduint64(json, "preprocessing_size", zbx_preprocessor_get_size());
 }
