|
7 | 7 | package org.elasticsearch.xpack.ml; |
8 | 8 |
|
9 | 9 | import org.apache.logging.log4j.LogManager; |
| 10 | +import org.apache.logging.log4j.Logger; |
10 | 11 | import org.apache.lucene.util.Constants; |
11 | 12 | import org.apache.lucene.util.Counter; |
12 | 13 | import org.elasticsearch.ElasticsearchException; |
|
73 | 74 |
|
74 | 75 | public class MachineLearningFeatureSet implements XPackFeatureSet { |
75 | 76 |
|
| 77 | + private static final Logger logger = LogManager.getLogger(MachineLearningFeatureSet.class); |
| 78 | + |
76 | 79 | /** |
77 | 80 | * List of platforms for which the native processes are available |
78 | 81 | */ |
@@ -368,58 +371,88 @@ public void execute(ActionListener<Usage> listener) { |
368 | 371 | nodeCount |
369 | 372 | ); |
370 | 373 | listener.onResponse(usage); |
371 | | - }, listener::onFailure); |
| 374 | + }, e -> { |
| 375 | + logger.warn("Failed to get trained models usage to include in ML usage", e); |
| 376 | + MachineLearningFeatureSetUsage usage = new MachineLearningFeatureSetUsage( |
| 377 | + available, |
| 378 | + enabled, |
| 379 | + jobsUsage, |
| 380 | + datafeedsUsage, |
| 381 | + analyticsUsage, |
| 382 | + inferenceUsage, |
| 383 | + nodeCount |
| 384 | + ); |
| 385 | + listener.onResponse(usage); |
| 386 | + }); |
372 | 387 |
|
373 | 388 | // Step 5. Extract usage from ingest statistics and gather trained model config count |
| 389 | + GetTrainedModelsAction.Request getModelsRequest = new GetTrainedModelsAction.Request( |
| 390 | + "*", |
| 391 | + Collections.emptyList(), |
| 392 | + Collections.emptySet() |
| 393 | + ); |
| 394 | + getModelsRequest.setPageParams(new PageParams(0, 10_000)); |
374 | 395 | ActionListener<NodesStatsResponse> nodesStatsListener = ActionListener.wrap(response -> { |
375 | 396 | addInferenceIngestUsage(response, inferenceUsage); |
376 | | - GetTrainedModelsAction.Request getModelsRequest = new GetTrainedModelsAction.Request( |
377 | | - "*", |
378 | | - Collections.emptyList(), |
379 | | - Collections.emptySet() |
380 | | - ); |
381 | | - getModelsRequest.setPageParams(new PageParams(0, 10_000)); |
382 | 397 | client.execute(GetTrainedModelsAction.INSTANCE, getModelsRequest, trainedModelsListener); |
383 | | - }, listener::onFailure); |
| 398 | + }, e -> { |
| 399 | + logger.warn("Failed to get inference ingest usage to include in ML usage", e); |
| 400 | + client.execute(GetTrainedModelsAction.INSTANCE, getModelsRequest, trainedModelsListener); |
| 401 | + }); |
384 | 402 |
|
385 | 403 | // Step 4. Extract usage from data frame analytics configs and then request ingest node stats |
| 404 | + String[] ingestNodes = ingestNodes(state); |
| 405 | + NodesStatsRequest nodesStatsRequest = new NodesStatsRequest(ingestNodes).clear() |
| 406 | + .addMetric(NodesStatsRequest.Metric.INGEST.metricName()); |
386 | 407 | ActionListener<GetDataFrameAnalyticsAction.Response> dataframeAnalyticsListener = ActionListener.wrap(response -> { |
387 | 408 | addDataFrameAnalyticsUsage(response, analyticsUsage); |
388 | | - String[] ingestNodes = ingestNodes(state); |
389 | | - NodesStatsRequest nodesStatsRequest = new NodesStatsRequest(ingestNodes).clear() |
390 | | - .addMetric(NodesStatsRequest.Metric.INGEST.metricName()); |
391 | 409 | client.execute(NodesStatsAction.INSTANCE, nodesStatsRequest, nodesStatsListener); |
392 | | - }, listener::onFailure); |
| 410 | + }, e -> { |
| 411 | + logger.warn("Failed to get data frame analytics configs to include in ML usage", e); |
| 412 | + client.execute(NodesStatsAction.INSTANCE, nodesStatsRequest, nodesStatsListener); |
| 413 | + }); |
393 | 414 |
|
394 | 415 | // Step 3. Extract usage from data frame analytics stats and then request data frame analytics configs |
| 416 | + GetDataFrameAnalyticsAction.Request getDfaRequest = new GetDataFrameAnalyticsAction.Request(Metadata.ALL); |
| 417 | + getDfaRequest.setPageParams(new PageParams(0, 10_000)); |
395 | 418 | ActionListener<GetDataFrameAnalyticsStatsAction.Response> dataframeAnalyticsStatsListener = ActionListener.wrap(response -> { |
396 | 419 | addDataFrameAnalyticsStatsUsage(response, analyticsUsage); |
397 | | - GetDataFrameAnalyticsAction.Request getDfaRequest = new GetDataFrameAnalyticsAction.Request(Metadata.ALL); |
398 | | - getDfaRequest.setPageParams(new PageParams(0, 10_000)); |
399 | 420 | client.execute(GetDataFrameAnalyticsAction.INSTANCE, getDfaRequest, dataframeAnalyticsListener); |
400 | | - }, listener::onFailure); |
| 421 | + }, e -> { |
| 422 | + logger.warn("Failed to get data frame analytics stats to include in ML usage", e); |
| 423 | + client.execute(GetDataFrameAnalyticsAction.INSTANCE, getDfaRequest, dataframeAnalyticsListener); |
| 424 | + }); |
401 | 425 |
|
402 | 426 | // Step 2. Extract usage from datafeeds stats and return usage response |
| 427 | + GetDataFrameAnalyticsStatsAction.Request dataframeAnalyticsStatsRequest = new GetDataFrameAnalyticsStatsAction.Request( |
| 428 | + GetDatafeedsStatsAction.ALL |
| 429 | + ); |
| 430 | + dataframeAnalyticsStatsRequest.setPageParams(new PageParams(0, 10_000)); |
403 | 431 | ActionListener<GetDatafeedsStatsAction.Response> datafeedStatsListener = ActionListener.wrap(response -> { |
404 | 432 | addDatafeedsUsage(response); |
405 | | - GetDataFrameAnalyticsStatsAction.Request dataframeAnalyticsStatsRequest = new GetDataFrameAnalyticsStatsAction.Request( |
406 | | - GetDatafeedsStatsAction.ALL |
407 | | - ); |
408 | | - dataframeAnalyticsStatsRequest.setPageParams(new PageParams(0, 10_000)); |
409 | 433 | client.execute(GetDataFrameAnalyticsStatsAction.INSTANCE, dataframeAnalyticsStatsRequest, dataframeAnalyticsStatsListener); |
410 | | - }, listener::onFailure); |
| 434 | + }, e -> { |
| 435 | + logger.warn("Failed to get datafeed stats to include in ML usage", e); |
| 436 | + client.execute(GetDataFrameAnalyticsStatsAction.INSTANCE, dataframeAnalyticsStatsRequest, dataframeAnalyticsStatsListener); |
| 437 | + }); |
411 | 438 |
|
412 | 439 | // Step 1. Extract usage from jobs stats and then request stats for all datafeeds |
413 | | - GetJobsStatsAction.Request jobStatsRequest = new GetJobsStatsAction.Request(Metadata.ALL); |
| 440 | + GetDatafeedsStatsAction.Request datafeedStatsRequest = new GetDatafeedsStatsAction.Request(GetDatafeedsStatsAction.ALL); |
414 | 441 | ActionListener<GetJobsStatsAction.Response> jobStatsListener = ActionListener.wrap(response -> { |
415 | 442 | jobManagerHolder.getJobManager().expandJobs(Metadata.ALL, true, ActionListener.wrap(jobs -> { |
416 | 443 | addJobsUsage(response, jobs.results()); |
417 | | - GetDatafeedsStatsAction.Request datafeedStatsRequest = new GetDatafeedsStatsAction.Request(GetDatafeedsStatsAction.ALL); |
418 | 444 | client.execute(GetDatafeedsStatsAction.INSTANCE, datafeedStatsRequest, datafeedStatsListener); |
419 | | - }, listener::onFailure)); |
420 | | - }, listener::onFailure); |
| 445 | + }, e -> { |
| 446 | + logger.warn("Failed to get job configs to include in ML usage", e); |
| 447 | + client.execute(GetDatafeedsStatsAction.INSTANCE, datafeedStatsRequest, datafeedStatsListener); |
| 448 | + })); |
| 449 | + }, e -> { |
| 450 | + logger.warn("Failed to get job stats to include in ML usage", e); |
| 451 | + client.execute(GetDatafeedsStatsAction.INSTANCE, datafeedStatsRequest, datafeedStatsListener); |
| 452 | + }); |
421 | 453 |
|
422 | 454 | // Step 0. Kick off the chain of callbacks by requesting jobs stats |
| 455 | + GetJobsStatsAction.Request jobStatsRequest = new GetJobsStatsAction.Request(Metadata.ALL); |
423 | 456 | client.execute(GetJobsStatsAction.INSTANCE, jobStatsRequest, jobStatsListener); |
424 | 457 | } |
425 | 458 |
|
|
0 commit comments