Skip to content

Commit 8a9202e

Browse files
ymao1ersin-erdal
andauthored
Add ".reindexed-v8-" prefix to the valid prefixes list (#204819)
As part of v9.0 readiness, we reindex the indices in v.8 but still has data from v.7x. As a result of the process, the reindexed indices get `.reindexed-v8-` prefix. This PR add that prefix to the valid prefixes list. # To verify: Run Kibana and ES in 7.17 (use `-E path.data=your-data-path` to keep the data in your local) Create some rules that generate alerts (Observability rules to have AAD) Let them run for a while. Stop Kibana and ES, switch to 8.x branch and run ES and Kibana again Open the Upgrade Assistant. It should show the `.internal.alerts-*` indices Click on them and start reindexing on the opened flyout. Check that `.reindexed-v8-internal.alerts-*` index has been created Let you rules run for a while again. Your alerts should be updated and there shouldn't be any error on your terminal. --------- Co-authored-by: Ersin Erdal <[email protected]> Co-authored-by: Ersin Erdal <[email protected]>
1 parent 0e13d86 commit 8a9202e

File tree

6 files changed

+78
-31
lines changed

6 files changed

+78
-31
lines changed

x-pack/platform/plugins/shared/alerting/server/alerts_service/alerts_service.test.ts

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,10 @@ const getIndexTemplatePutBody = (opts?: GetIndexTemplatePutBodyOpts) => {
144144

145145
const indexPatterns = useDataStream
146146
? [`.alerts-${context ? context : 'test'}.alerts-${namespace}`]
147-
: [`.internal.alerts-${context ? context : 'test'}.alerts-${namespace}-*`];
147+
: [
148+
`.internal.alerts-${context ? context : 'test'}.alerts-${namespace}-*`,
149+
`.reindexed-v8-internal.alerts-${context ? context : 'test'}.alerts-${namespace}-*`,
150+
];
148151
return {
149152
name: `.alerts-${context ? context : 'test'}.alerts-${namespace}-index-template`,
150153
body: {
@@ -564,7 +567,10 @@ describe('Alerts Service', () => {
564567
},
565568
});
566569
expect(clusterClient.indices.getAlias).toHaveBeenCalledWith({
567-
index: '.internal.alerts-test.alerts-default-*',
570+
index: [
571+
'.internal.alerts-test.alerts-default-*',
572+
`.reindexed-v8-internal.alerts-test.alerts-default-*`,
573+
],
568574
name: '.alerts-test.alerts-*',
569575
});
570576
}
@@ -627,7 +633,10 @@ describe('Alerts Service', () => {
627633
},
628634
});
629635
expect(clusterClient.indices.getAlias).toHaveBeenCalledWith({
630-
index: '.internal.alerts-test.alerts-default-*',
636+
index: [
637+
'.internal.alerts-test.alerts-default-*',
638+
`.reindexed-v8-internal.alerts-test.alerts-default-*`,
639+
],
631640
name: '.alerts-test.alerts-*',
632641
});
633642
}
@@ -686,7 +695,10 @@ describe('Alerts Service', () => {
686695
},
687696
});
688697
expect(clusterClient.indices.getAlias).toHaveBeenCalledWith({
689-
index: '.internal.alerts-test.alerts-default-*',
698+
index: [
699+
'.internal.alerts-test.alerts-default-*',
700+
`.reindexed-v8-internal.alerts-test.alerts-default-*`,
701+
],
690702
name: '.alerts-test.alerts-*',
691703
});
692704
}
@@ -728,7 +740,10 @@ describe('Alerts Service', () => {
728740
},
729741
});
730742
expect(clusterClient.indices.getAlias).toHaveBeenNthCalledWith(1, {
731-
index: '.internal.alerts-test.alerts-default-*',
743+
index: [
744+
'.internal.alerts-test.alerts-default-*',
745+
`.reindexed-v8-internal.alerts-test.alerts-default-*`,
746+
],
732747
name: '.alerts-test.alerts-*',
733748
});
734749
}
@@ -792,7 +807,10 @@ describe('Alerts Service', () => {
792807
},
793808
});
794809
expect(clusterClient.indices.getAlias).toHaveBeenNthCalledWith(2, {
795-
index: '.internal.alerts-test.alerts-another-namespace-*',
810+
index: [
811+
'.internal.alerts-test.alerts-another-namespace-*',
812+
'.reindexed-v8-internal.alerts-test.alerts-another-namespace-*',
813+
],
796814
name: '.alerts-test.alerts-*',
797815
});
798816
}
@@ -826,7 +844,10 @@ describe('Alerts Service', () => {
826844
})
827845
);
828846
expect(clusterClient.indices.getAlias).toHaveBeenCalledWith({
829-
index: '.internal.alerts-test.alerts-default-*',
847+
index: [
848+
'.internal.alerts-test.alerts-default-*',
849+
'.reindexed-v8-internal.alerts-test.alerts-default-*',
850+
],
830851
name: '.alerts-test.alerts-*',
831852
});
832853
expect(clusterClient.indices.putSettings).toHaveBeenCalledTimes(2);
@@ -871,11 +892,12 @@ describe('Alerts Service', () => {
871892
const template = {
872893
name: `.alerts-empty.alerts-default-index-template`,
873894
body: {
874-
index_patterns: [
875-
useDataStreamForAlerts
876-
? `.alerts-empty.alerts-default`
877-
: `.internal.alerts-empty.alerts-default-*`,
878-
],
895+
index_patterns: useDataStreamForAlerts
896+
? [`.alerts-empty.alerts-default`]
897+
: [
898+
`.internal.alerts-empty.alerts-default-*`,
899+
`.reindexed-v8-internal.alerts-empty.alerts-default-*`,
900+
],
879901
composed_of: ['.alerts-framework-mappings'],
880902
...(useDataStreamForAlerts ? { data_stream: { hidden: true } } : {}),
881903
priority: 7,
@@ -931,7 +953,10 @@ describe('Alerts Service', () => {
931953
},
932954
});
933955
expect(clusterClient.indices.getAlias).toHaveBeenCalledWith({
934-
index: '.internal.alerts-empty.alerts-default-*',
956+
index: [
957+
'.internal.alerts-empty.alerts-default-*',
958+
'.reindexed-v8-internal.alerts-empty.alerts-default-*',
959+
],
935960
name: '.alerts-empty.alerts-*',
936961
});
937962
}

x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/create_or_update_index_template.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,12 @@ export const getIndexTemplate = ({
4343
namespace,
4444
};
4545

46-
const dataStreamFields = dataStreamAdapter.getIndexTemplateFields(
47-
indexPatterns.alias,
48-
indexPatterns.pattern
49-
);
46+
const patterns: string[] = [indexPatterns.pattern];
47+
if (indexPatterns.reindexedPattern) {
48+
patterns.push(indexPatterns.reindexedPattern);
49+
}
50+
51+
const dataStreamFields = dataStreamAdapter.getIndexTemplateFields(indexPatterns.alias, patterns);
5052

5153
const indexLifecycle = {
5254
name: ilmPolicyName,

x-pack/platform/plugins/shared/alerting/server/alerts_service/lib/data_stream_adapter.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { retryTransientEsErrors } from './retry_transient_es_errors';
1616

1717
export interface DataStreamAdapter {
1818
isUsingDataStreams(): boolean;
19-
getIndexTemplateFields(alias: string, pattern: string): IndexTemplateFields;
19+
getIndexTemplateFields(alias: string, patterns: string[]): IndexTemplateFields;
2020
createStream(opts: CreateConcreteWriteIndexOpts): Promise<void>;
2121
}
2222

@@ -48,7 +48,7 @@ class DataStreamImplementation implements DataStreamAdapter {
4848
return true;
4949
}
5050

51-
getIndexTemplateFields(alias: string, pattern: string): IndexTemplateFields {
51+
getIndexTemplateFields(alias: string, patterns: string[]): IndexTemplateFields {
5252
return {
5353
data_stream: { hidden: true },
5454
index_patterns: [alias],
@@ -66,9 +66,9 @@ class AliasImplementation implements DataStreamAdapter {
6666
return false;
6767
}
6868

69-
getIndexTemplateFields(alias: string, pattern: string): IndexTemplateFields {
69+
getIndexTemplateFields(alias: string, patterns: string[]): IndexTemplateFields {
7070
return {
71-
index_patterns: [pattern],
71+
index_patterns: patterns,
7272
rollover_alias: alias,
7373
};
7474
}
@@ -134,10 +134,15 @@ async function createAliasStream(opts: CreateConcreteWriteIndexOpts): Promise<vo
134134
try {
135135
// Specify both the index pattern for the backing indices and their aliases
136136
// The alias prevents the request from finding other namespaces that could match the -* pattern
137+
const patterns: string[] = [indexPatterns.pattern];
138+
if (indexPatterns.reindexedPattern) {
139+
patterns.push(indexPatterns.reindexedPattern);
140+
}
141+
137142
const response = await retryTransientEsErrors(
138143
() =>
139144
esClient.indices.getAlias({
140-
index: indexPatterns.pattern,
145+
index: patterns,
141146
name: indexPatterns.basePattern,
142147
}),
143148
{ logger }
@@ -151,7 +156,7 @@ async function createAliasStream(opts: CreateConcreteWriteIndexOpts): Promise<vo
151156
}))
152157
);
153158

154-
logger.debug(
159+
logger.info(
155160
() =>
156161
`Found ${concreteIndices.length} concrete indices for ${
157162
indexPatterns.name

x-pack/platform/plugins/shared/alerting/server/alerts_service/resource_installer_utils.test.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,17 @@ describe('getIndexTemplateAndPattern', () => {
3636
expect(getIndexTemplateAndPattern({ context: 'test' })).toEqual({
3737
template: '.alerts-test.alerts-default-index-template',
3838
pattern: '.internal.alerts-test.alerts-default-*',
39+
reindexedPattern: '.reindexed-v8-internal.alerts-test.alerts-default-*',
3940
basePattern: '.alerts-test.alerts-*',
4041
alias: '.alerts-test.alerts-default',
4142
validPrefixes: [
4243
'.ds-.alerts-',
43-
'.internal.alerts-',
4444
'.alerts-',
45-
'.internal.preview.alerts-',
45+
'.internal.alerts-',
46+
'.reindexed-v8-internal.alerts-',
4647
'.preview.alerts-',
48+
'.internal.preview.alerts-',
49+
'.reindexed-v8-internal.preview.alerts-',
4750
],
4851
name: '.internal.alerts-test.alerts-default-000001',
4952
});
@@ -53,14 +56,17 @@ describe('getIndexTemplateAndPattern', () => {
5356
expect(getIndexTemplateAndPattern({ context: 'test', namespace: 'special' })).toEqual({
5457
template: '.alerts-test.alerts-special-index-template',
5558
pattern: '.internal.alerts-test.alerts-special-*',
59+
reindexedPattern: '.reindexed-v8-internal.alerts-test.alerts-special-*',
5660
basePattern: '.alerts-test.alerts-*',
5761
alias: '.alerts-test.alerts-special',
5862
validPrefixes: [
5963
'.ds-.alerts-',
60-
'.internal.alerts-',
6164
'.alerts-',
62-
'.internal.preview.alerts-',
65+
'.internal.alerts-',
66+
'.reindexed-v8-internal.alerts-',
6367
'.preview.alerts-',
68+
'.internal.preview.alerts-',
69+
'.reindexed-v8-internal.preview.alerts-',
6470
],
6571
name: '.internal.alerts-test.alerts-special-000001',
6672
});
@@ -76,15 +82,18 @@ describe('getIndexTemplateAndPattern', () => {
7682
).toEqual({
7783
template: '.alerts-test.alerts-special-index-template',
7884
pattern: '.internal.alerts-test.alerts-special-*',
85+
reindexedPattern: '.reindexed-v8-internal.alerts-test.alerts-special-*',
7986
basePattern: '.alerts-test.alerts-*',
8087
alias: '.alerts-test.alerts-special',
8188
name: '.internal.alerts-test.alerts-special-000001',
8289
validPrefixes: [
8390
'.ds-.alerts-',
84-
'.internal.alerts-',
8591
'.alerts-',
86-
'.internal.preview.alerts-',
92+
'.internal.alerts-',
93+
'.reindexed-v8-internal.alerts-',
8794
'.preview.alerts-',
95+
'.internal.preview.alerts-',
96+
'.reindexed-v8-internal.preview.alerts-',
8897
],
8998
secondaryAlias: `siem.signals-special`,
9099
});

x-pack/platform/plugins/shared/alerting/server/alerts_service/resource_installer_utils.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@ interface GetComponentTemplateNameOpts {
1313
context?: string;
1414
name?: string;
1515
}
16+
1617
export const VALID_ALERT_INDEX_PREFIXES = [
1718
'.ds-.alerts-',
18-
'.internal.alerts-',
1919
'.alerts-',
20-
'.internal.preview.alerts-',
20+
'.internal.alerts-',
21+
'.reindexed-v8-internal.alerts-',
2122
'.preview.alerts-',
23+
'.internal.preview.alerts-',
24+
'.reindexed-v8-internal.preview.alerts-',
2225
];
2326

2427
export const getComponentTemplateName = ({ context, name }: GetComponentTemplateNameOpts = {}) =>
@@ -27,6 +30,7 @@ export const getComponentTemplateName = ({ context, name }: GetComponentTemplate
2730
export interface IIndexPatternString {
2831
template: string;
2932
pattern: string;
33+
reindexedPattern?: string;
3034
alias: string;
3135
name: string;
3236
basePattern: string;
@@ -51,6 +55,7 @@ export const getIndexTemplateAndPattern = ({
5155
return {
5256
template: `.alerts-${patternWithNamespace}-index-template`,
5357
pattern: `.internal.alerts-${patternWithNamespace}-*`,
58+
reindexedPattern: `.reindexed-v8-internal.alerts-${patternWithNamespace}-*`,
5459
basePattern: `.alerts-${pattern}-*`,
5560
name: `.internal.alerts-${patternWithNamespace}-000001`,
5661
alias: `.alerts-${patternWithNamespace}`,

x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/install_resources.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F
147147
expect(contextIndexTemplate.name).to.eql(indexTemplateName);
148148
expect(contextIndexTemplate.index_template.index_patterns).to.eql([
149149
'.internal.alerts-test.patternfiring.alerts-default-*',
150+
'.reindexed-v8-internal.alerts-test.patternfiring.alerts-default-*',
150151
]);
151152
expect(contextIndexTemplate.index_template.composed_of).to.eql([
152153
'.alerts-test.patternfiring.alerts-mappings',

0 commit comments

Comments
 (0)