@@ -22,12 +22,18 @@ import org.opensearch.alerting.model.WorkflowRunResult
22
22
import org.opensearch.alerting.model.destination.DestinationContextFactory
23
23
import org.opensearch.alerting.opensearchapi.retry
24
24
import org.opensearch.alerting.script.TriggerExecutionContext
25
+ import org.opensearch.alerting.settings.AlertingSettings
25
26
import org.opensearch.alerting.settings.AlertingSettings.Companion.ALERT_BACKOFF_COUNT
26
27
import org.opensearch.alerting.settings.AlertingSettings.Companion.ALERT_BACKOFF_MILLIS
28
+ import org.opensearch.alerting.settings.AlertingSettings.Companion.DOC_LEVEL_MONITOR_FETCH_ONLY_QUERY_FIELDS_ENABLED
29
+ import org.opensearch.alerting.settings.AlertingSettings.Companion.DOC_LEVEL_MONITOR_SHARD_FETCH_SIZE
30
+ import org.opensearch.alerting.settings.AlertingSettings.Companion.FINDINGS_INDEXING_BATCH_SIZE
27
31
import org.opensearch.alerting.settings.AlertingSettings.Companion.INDEX_TIMEOUT
28
32
import org.opensearch.alerting.settings.AlertingSettings.Companion.MAX_ACTIONABLE_ALERT_COUNT
29
33
import org.opensearch.alerting.settings.AlertingSettings.Companion.MOVE_ALERTS_BACKOFF_COUNT
30
34
import org.opensearch.alerting.settings.AlertingSettings.Companion.MOVE_ALERTS_BACKOFF_MILLIS
35
+ import org.opensearch.alerting.settings.AlertingSettings.Companion.PERCOLATE_QUERY_DOCS_SIZE_MEMORY_PERCENTAGE_LIMIT
36
+ import org.opensearch.alerting.settings.AlertingSettings.Companion.PERCOLATE_QUERY_MAX_NUM_DOCS_IN_MEMORY
31
37
import org.opensearch.alerting.settings.DestinationSettings.Companion.ALLOW_LIST
32
38
import org.opensearch.alerting.settings.DestinationSettings.Companion.HOST_DENY_LIST
33
39
import org.opensearch.alerting.settings.DestinationSettings.Companion.loadDestinationSettings
@@ -48,6 +54,7 @@ import org.opensearch.commons.alerting.model.action.Action
48
54
import org.opensearch.commons.alerting.util.isBucketLevelMonitor
49
55
import org.opensearch.core.action.ActionListener
50
56
import org.opensearch.core.xcontent.NamedXContentRegistry
57
+ import org.opensearch.monitor.jvm.JvmStats
51
58
import org.opensearch.script.Script
52
59
import org.opensearch.script.ScriptService
53
60
import org.opensearch.script.TemplateScript
@@ -132,6 +139,11 @@ object MonitorRunnerService : JobRunner, CoroutineScope, AbstractLifecycleCompon
132
139
return this
133
140
}
134
141
142
+ fun registerJvmStats (jvmStats : JvmStats ): MonitorRunnerService {
143
+ this .monitorCtx.jvmStats = jvmStats
144
+ return this
145
+ }
146
+
135
147
// Must be called after registerClusterService and registerSettings in AlertingPlugin
136
148
fun registerConsumers (): MonitorRunnerService {
137
149
monitorCtx.retryPolicy = BackoffPolicy .constantBackoff(
@@ -169,6 +181,35 @@ object MonitorRunnerService : JobRunner, CoroutineScope, AbstractLifecycleCompon
169
181
170
182
monitorCtx.indexTimeout = INDEX_TIMEOUT .get(monitorCtx.settings)
171
183
184
+ monitorCtx.findingsIndexBatchSize = FINDINGS_INDEXING_BATCH_SIZE .get(monitorCtx.settings)
185
+ monitorCtx.clusterService!! .clusterSettings.addSettingsUpdateConsumer(AlertingSettings .FINDINGS_INDEXING_BATCH_SIZE ) {
186
+ monitorCtx.findingsIndexBatchSize = it
187
+ }
188
+
189
+ monitorCtx.fetchOnlyQueryFieldNames = DOC_LEVEL_MONITOR_FETCH_ONLY_QUERY_FIELDS_ENABLED .get(monitorCtx.settings)
190
+ monitorCtx.clusterService!! .clusterSettings.addSettingsUpdateConsumer(DOC_LEVEL_MONITOR_FETCH_ONLY_QUERY_FIELDS_ENABLED ) {
191
+ monitorCtx.fetchOnlyQueryFieldNames = it
192
+ }
193
+
194
+ monitorCtx.percQueryMaxNumDocsInMemory = PERCOLATE_QUERY_MAX_NUM_DOCS_IN_MEMORY .get(monitorCtx.settings)
195
+ monitorCtx.clusterService!! .clusterSettings.addSettingsUpdateConsumer(PERCOLATE_QUERY_MAX_NUM_DOCS_IN_MEMORY ) {
196
+ monitorCtx.percQueryMaxNumDocsInMemory = it
197
+ }
198
+
199
+ monitorCtx.percQueryDocsSizeMemoryPercentageLimit =
200
+ PERCOLATE_QUERY_DOCS_SIZE_MEMORY_PERCENTAGE_LIMIT .get(monitorCtx.settings)
201
+ monitorCtx.clusterService!! .clusterSettings
202
+ .addSettingsUpdateConsumer(PERCOLATE_QUERY_DOCS_SIZE_MEMORY_PERCENTAGE_LIMIT ) {
203
+ monitorCtx.percQueryDocsSizeMemoryPercentageLimit = it
204
+ }
205
+
206
+ monitorCtx.docLevelMonitorShardFetchSize =
207
+ DOC_LEVEL_MONITOR_SHARD_FETCH_SIZE .get(monitorCtx.settings)
208
+ monitorCtx.clusterService!! .clusterSettings
209
+ .addSettingsUpdateConsumer(DOC_LEVEL_MONITOR_SHARD_FETCH_SIZE ) {
210
+ monitorCtx.docLevelMonitorShardFetchSize = it
211
+ }
212
+
172
213
return this
173
214
}
174
215
@@ -251,11 +292,19 @@ object MonitorRunnerService : JobRunner, CoroutineScope, AbstractLifecycleCompon
251
292
when (job) {
252
293
is Workflow -> {
253
294
launch {
295
+ logger.debug(
296
+ " PERF_DEBUG: executing workflow ${job.id} on node " +
297
+ monitorCtx.clusterService!! .state().nodes().localNode.id
298
+ )
254
299
runJob(job, periodStart, periodEnd, false )
255
300
}
256
301
}
257
302
is Monitor -> {
258
303
launch {
304
+ logger.debug(
305
+ " PERF_DEBUG: executing ${job.monitorType} ${job.id} on node " +
306
+ monitorCtx.clusterService!! .state().nodes().localNode.id
307
+ )
259
308
runJob(job, periodStart, periodEnd, false )
260
309
}
261
310
}
@@ -300,7 +349,7 @@ object MonitorRunnerService : JobRunner, CoroutineScope, AbstractLifecycleCompon
300
349
val runResult = if (monitor.isBucketLevelMonitor()) {
301
350
BucketLevelMonitorRunner .runMonitor(monitor, monitorCtx, periodStart, periodEnd, dryrun, executionId = executionId)
302
351
} else if (monitor.isDocLevelMonitor()) {
303
- DocumentLevelMonitorRunner .runMonitor(monitor, monitorCtx, periodStart, periodEnd, dryrun, executionId = executionId)
352
+ DocumentLevelMonitorRunner () .runMonitor(monitor, monitorCtx, periodStart, periodEnd, dryrun, executionId = executionId)
304
353
} else {
305
354
QueryLevelMonitorRunner .runMonitor(monitor, monitorCtx, periodStart, periodEnd, dryrun, executionId = executionId)
306
355
}
0 commit comments