Skip to content

Commit 4b26dfb

Browse files
Alejandro Fernández Gómezweltenwortelasticmachine
authored
[7.x] [Logs UI] Add "View in machine learning" links in the anomaly explorer (#74555) (#75454)
Co-authored-by: Felix Stürmer <weltenwort@users.noreply.github.com> Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
1 parent 1925a32 commit 4b26dfb

File tree

3 files changed

+38
-6
lines changed

3 files changed

+38
-6
lines changed

x-pack/plugins/infra/public/components/logging/log_analysis_results/analyze_in_ml_button.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export const AnalyzeInMlButton: React.FunctionComponent<{
4040
);
4141
};
4242

43-
const getOverallAnomalyExplorerLinkDescriptor = (
43+
export const getOverallAnomalyExplorerLinkDescriptor = (
4444
jobId: string,
4545
timeRange: TimeRange
4646
): LinkDescriptor => {

x-pack/plugins/infra/public/components/logging/log_analysis_setup/setup_flyout/module_list.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,14 @@ export const LogAnalysisModuleList: React.FC<{
2222
onViewModuleSetup: (module: ModuleId) => void;
2323
}> = ({ onViewModuleSetup }) => {
2424
const { hasLogAnalysisSetupCapabilities } = useLogAnalysisCapabilitiesContext();
25-
const { setupStatus: logEntryRateSetupStatus } = useLogEntryRateModuleContext();
26-
const { setupStatus: logEntryCategoriesSetupStatus } = useLogEntryCategoriesModuleContext();
25+
const {
26+
setupStatus: logEntryRateSetupStatus,
27+
jobIds: logEntryRateJobIds,
28+
} = useLogEntryRateModuleContext();
29+
const {
30+
setupStatus: logEntryCategoriesSetupStatus,
31+
jobIds: logEntryCategoriesJobIds,
32+
} = useLogEntryCategoriesModuleContext();
2733

2834
const viewLogEntryRateSetupFlyout = useCallback(() => {
2935
onViewModuleSetup('logs_ui_analysis');
@@ -37,6 +43,7 @@ export const LogAnalysisModuleList: React.FC<{
3743
<EuiFlexGroup>
3844
<EuiFlexItem>
3945
<LogAnalysisModuleListCard
46+
jobId={logEntryRateJobIds['log-entry-rate']}
4047
hasSetupCapabilities={hasLogAnalysisSetupCapabilities}
4148
moduleDescription={logEntryRateModule.moduleDescription}
4249
moduleName={logEntryRateModule.moduleName}
@@ -46,6 +53,7 @@ export const LogAnalysisModuleList: React.FC<{
4653
</EuiFlexItem>
4754
<EuiFlexItem>
4855
<LogAnalysisModuleListCard
56+
jobId={logEntryCategoriesJobIds['log-entry-categories-count']}
4957
hasSetupCapabilities={hasLogAnalysisSetupCapabilities}
5058
moduleDescription={logEntryCategoriesModule.moduleDescription}
5159
moduleName={logEntryCategoriesModule.moduleName}

x-pack/plugins/infra/public/components/logging/log_analysis_setup/setup_flyout/module_list_card.tsx

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,41 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
import { EuiCard, EuiIcon } from '@elastic/eui';
7+
import { EuiCard, EuiIcon, EuiButtonEmpty, EuiSpacer } from '@elastic/eui';
88
import { FormattedMessage } from '@kbn/i18n/react';
99
import React from 'react';
1010
import { SetupStatus } from '../../../../../common/log_analysis';
1111
import { CreateJobButton, RecreateJobButton } from '../../log_analysis_setup/create_job_button';
12+
import { useLinkProps } from '../../../../hooks/use_link_props';
1213

1314
export const LogAnalysisModuleListCard: React.FC<{
15+
jobId: string;
1416
hasSetupCapabilities: boolean;
1517
moduleDescription: string;
1618
moduleName: string;
1719
moduleStatus: SetupStatus;
1820
onViewSetup: () => void;
19-
}> = ({ hasSetupCapabilities, moduleDescription, moduleName, moduleStatus, onViewSetup }) => {
21+
}> = ({
22+
jobId,
23+
hasSetupCapabilities,
24+
moduleDescription,
25+
moduleName,
26+
moduleStatus,
27+
onViewSetup,
28+
}) => {
2029
const moduleIcon =
2130
moduleStatus.type === 'required' ? (
2231
<EuiIcon size="xxl" type="machineLearningApp" />
2332
) : (
2433
<EuiIcon color="secondary" size="xxl" type="check" />
2534
);
2635

36+
const viewInMlLinkProps = useLinkProps({
37+
app: 'ml',
38+
pathname: '/jobs',
39+
search: { mlManagement: `(jobId:${jobId})` },
40+
});
41+
2742
const moduleSetupButton =
2843
moduleStatus.type === 'required' ? (
2944
<CreateJobButton hasSetupCapabilities={hasSetupCapabilities} onClick={onViewSetup}>
@@ -33,7 +48,16 @@ export const LogAnalysisModuleListCard: React.FC<{
3348
/>
3449
</CreateJobButton>
3550
) : (
36-
<RecreateJobButton hasSetupCapabilities={hasSetupCapabilities} onClick={onViewSetup} />
51+
<>
52+
<RecreateJobButton hasSetupCapabilities={hasSetupCapabilities} onClick={onViewSetup} />
53+
<EuiSpacer size="xs" />
54+
<EuiButtonEmpty {...viewInMlLinkProps}>
55+
<FormattedMessage
56+
id="xpack.infra.logs.analysis.viewInMlButtonLabel"
57+
defaultMessage="View in Machine Learning"
58+
/>
59+
</EuiButtonEmpty>
60+
</>
3761
);
3862

3963
return (

0 commit comments

Comments
 (0)