diff --git a/src/go/internal/agent/scheduler/manager.go b/src/go/internal/agent/scheduler/manager.go
index 8b1ff5a448..bdf977a4d9 100644
--- a/src/go/internal/agent/scheduler/manager.go
+++ b/src/go/internal/agent/scheduler/manager.go
@@ -60,9 +60,9 @@ type Manager struct {
 
 // updateRequest contains list of metrics monitored by a client and additional client configuration data.
 type updateRequest struct {
-	clientID uint64
-	sink     plugin.ResultWriter
-	requests []*plugin.Request
+	clientID    uint64
+	sink        plugin.ResultWriter
+	requests    []*plugin.Request
 	expressions []*glexpr.Expression
 }
 
@@ -376,7 +376,8 @@ run:
 }
 
 type pluginCapacity struct {
-	Capacity int `conf:"optional"`
+	Capacity         int `conf:"optional"`
+	CheckImmediately int `conf:"optional"`
 }
 
 func (m *Manager) init() {
@@ -399,6 +400,7 @@ func (m *Manager) init() {
 	for _, metric := range metrics {
 		if metric.Plugin != pagent.impl {
 			capacity := metric.Plugin.Capacity()
+			checkImmediately := 0
 			var opts pluginCapacity
 			optsRaw := agent.Options.Plugins[metric.Plugin.Name()]
 			if optsRaw != nil {
@@ -410,6 +412,7 @@ func (m *Manager) init() {
 					if opts.Capacity != 0 {
 						capacity = opts.Capacity
 					}
+					checkImmediately = opts.CheckImmediately
 				}
 			}
 
@@ -420,12 +423,13 @@ func (m *Manager) init() {
 			}
 
 			pagent = &pluginAgent{
-				impl:         metric.Plugin,
-				tasks:        make(performerHeap, 0),
-				maxCapacity:  capacity,
-				usedCapacity: 0,
-				index:        -1,
-				refcount:     0,
+				impl:             metric.Plugin,
+				tasks:            make(performerHeap, 0),
+				maxCapacity:      capacity,
+				checkImmediately: checkImmediately,
+				usedCapacity:     0,
+				index:            -1,
+				refcount:         0,
 			}
 
 			interfaces := ""
@@ -459,12 +463,12 @@ func (m *Manager) Stop() {
 	m.input <- nil
 }
 
-func (m *Manager) UpdateTasks(clientID uint64, writer plugin.ResultWriter, 
+func (m *Manager) UpdateTasks(clientID uint64, writer plugin.ResultWriter,
 	expressions []*glexpr.Expression, requests []*plugin.Request) {
 
 	m.input <- &updateRequest{clientID: clientID,
-		sink:     writer,
-		requests: requests,
+		sink:        writer,
+		requests:    requests,
 		expressions: expressions,
 	}
 }
diff --git a/src/go/internal/agent/scheduler/plugin.go b/src/go/internal/agent/scheduler/plugin.go
index 21b613a7ed..a180e7520f 100644
--- a/src/go/internal/agent/scheduler/plugin.go
+++ b/src/go/internal/agent/scheduler/plugin.go
@@ -30,7 +30,8 @@ type pluginAgent struct {
 	// the plugin
 	impl plugin.Accessor
 	// queue of tasks to perform
-	tasks performerHeap
+	tasks            performerHeap
+	checkImmediately int
 	// maximum plugin capacity
 	maxCapacity int
 	// used plugin capacity
diff --git a/src/go/internal/agent/scheduler/query.go b/src/go/internal/agent/scheduler/query.go
index a6e5bfaf14..b95c5aab41 100644
--- a/src/go/internal/agent/scheduler/query.go
+++ b/src/go/internal/agent/scheduler/query.go
@@ -56,8 +56,9 @@ func (m *Manager) getStatus() (result string) {
 	})
 
 	for _, info := range infos {
-		status.WriteString(fmt.Sprintf("[%s]\nactive: %t\ncapacity: %d/%d\ntasks: %d\n",
-			info.ref.name(), info.ref.active(), info.ref.usedCapacity, info.ref.maxCapacity, len(info.ref.tasks)))
+		status.WriteString(fmt.Sprintf("[%s]\nactive: %t\ncheck immediately: %d\ncapacity: %d/%d\ntasks: %d\n",
+			info.ref.name(), info.ref.active(), info.ref.checkImmediately, info.ref.usedCapacity,
+			info.ref.maxCapacity, len(info.ref.tasks)))
 		sort.Slice(info.metrics, func(l, r int) bool { return info.metrics[l].Key < info.metrics[r].Key })
 		for _, metric := range info.metrics {
 			status.WriteString(metric.Key)
diff --git a/src/go/internal/agent/scheduler/task.go b/src/go/internal/agent/scheduler/task.go
index 6a0199e3fc..63a41269b5 100644
--- a/src/go/internal/agent/scheduler/task.go
+++ b/src/go/internal/agent/scheduler/task.go
@@ -194,6 +194,12 @@ func (t *exporterTask) perform(s Scheduler) {
 
 func (t *exporterTask) reschedule(now time.Time) (err error) {
 	var nextcheck time.Time
+
+	if t.scheduled.IsZero() && 0 != t.getPlugin().checkImmediately {
+		t.scheduled = time.Unix(now.Unix(), priorityExporterTaskNs)
+		return
+	}
+
 	nextcheck, err = zbxlib.GetNextcheck(t.item.itemid, t.item.delay, now)
 	if err != nil {
 		return
