|
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